Моделирование данных, не зависящих от сцены Unity, с помощью Photon FusionC#

Место общения программистов C#
Ответить
Anonymous
 Моделирование данных, не зависящих от сцены Unity, с помощью Photon Fusion

Сообщение Anonymous »

Мне нужна помощь в том, чтобы сделать мою игру многопользовательской.
Я только начинаю работать с Photon, и хотя я понимаю, почему документация в первую очередь фокусируется на таких вещах, как движение игрока, я немного зациклен на сетевых дополнительных данных.
Например, игра, которую я создаю, представляет собой карточную игру, и в настоящее время синглтон содержит список, представляющий руку каждого игрока, который не связан напрямую с графическим интерфейсом. Он живет на мировом игровом объекте и затем используется для отслеживания всех текущих карт. Хотя я предполагал, что это может существовать исключительно как данные, прикрепленные к реальным игровым объектам, таким как каждая карта, я подумал, что было бы чище иметь набор данных, на основе которого затем отображается графический интерфейс.
Итак, если у меня есть p1, p2 и p3, с тремя картами, назовите это k, j, j, как я могу сказать Photon, что эти данные должны иметь только одну копию, которая будет сохранена на хосте, а не четыре копии каждой руки на каждом устройстве. Предполагая, что я правильно понимаю, что у p1 будет экземпляр Gamecore для своей сцены, а у p2 будет экземпляр игрового ядра для своей сцены, поскольку, несмотря на то, что это синглтон, каждый клиент имеет свой собственный экземпляр.
orrrr
Если каждый клиент сгенерирует свой собственный список p1, p2 и p3, а затем сообщит об изменении, которое будет распространено на всех клиентов, чтобы гарантировать, что все они имеют одинаковые данные. Если это так, то это будет больше похоже на то, что, скажем, p1 отбрасывает карту, обновляется, а затем отправляет сообщение для получения клиентами. Для справки, вот мое текущее ядро ​​игры и урезанный класс игрока.
public class GameCore : MonoBehaviour{

public List playerList = new List();
public static GameCore Instance { get; private set; }

private void Awake()
{
if (Instance != null && Instance != this)
Destroy(gameObject);
else
Instance = this;
}

}

public struct Player {

//should initialize with a name and 7 blank cards
public Player(string playerName)
{
name = playerName;
playerCards = new List();
score = 0;
sticks = new Stick();
}

private string name;
private int score;
public List playerCards;
public Stick sticks;

}


Подробнее здесь: https://stackoverflow.com/questions/791 ... ton-fusion
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»