C# 使用光子统一网络在客户端之间复制对象数据

C# 使用光子统一网络在客户端之间复制对象数据,c#,networking,photon,C#,Networking,Photon,我的课程结构如下: public class Game : MonoBehaviour { public string Name { get; set;} public int NumberOfPlayers { get; set; } public int CurrentPlayers { get; set; } public Game(string name, int num) { Name = name;

我的课程结构如下:

public class Game : MonoBehaviour 
{
    public string Name { get; set;} 
    public int NumberOfPlayers { get; set; }
    public int CurrentPlayers { get; set; }

    public Game(string name, int num)
    {
            Name = name;
            NumberOfPlayers = num;
            CurrentPlayers = 0;
    }
当游戏开始使用时,我创建一个全局变量

public static Game firstGame;

使用Photon Unity网络,如何在我创建的所有客户端之间共享此单个对象的信息?

您可以创建一个RPC,发送游戏类的3个变量,然后在接收客户端上,它们根据发送的数据创建一个游戏对象。

您可以通过其他玩家创建RPC调用,将这些值放入dictionary对象中,然后在RPC调用中传递该对象。在另一面,你可以打开这个物体

例如:

Dictionary dataToShare=new Dictionary();
添加(“PlayerFirstName”,PlayerInformation.loginDetails.FirstName);
添加(“阿凡达”,PlayerInformation.loginDetails.Avatar);
RPC(“InitializeMyPlayerRPC”,PhotonTargets.OthersBuffered,新对象[]{dataToShare});
[扑克牌]
无效初始值emyplayerrpc(对象数据共享)
{
字典数据=作为字典的数据;
player.Name=data[“PlayerFirstName”].ToString();
player.Avatat=data[“Avatar”].ToString();
}
我知道你已经做了,但如果有人需要,它会帮助他们

Dictionary<string, string> dataToShare = new Dictionary<string, string>();
dataToShare.Add("PlayerFirstName", PlayerInformation.loginDetails.FirstName);
dataToShare.Add("Avatar", PlayerInformation.loginDetails.Avatar);
photonView.RPC("InitializeMyPlayerRPC",PhotonTargets.OthersBuffered,new object[]{ dataToShare});

[PunRPC]

void InitializeMyPlayerRPC(object dataToShare)
{
    Dictionary<string, string> data = dataToShare as Dictionary<string, string>;          
    player.Name = data["PlayerFirstName"].ToString();
    player.Avatat = data["Avatar"].ToString();
}