简体   繁体   English

使用 Photon Unity Networking 在客户端之间复制对象数据

[英]Copy object data between clients using Photon Unity Networking

I have a class that is structured as followed:我有一个结构如下的类:

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;
    }

I create a global variable when the game starts using我在游戏开始使用时创建了一个全局变量

public static Game firstGame;

Using Photon Unity Networking, how can I share this single object's info between all clients I create?使用 Photon Unity Networking,如何在我创建的所有客户端之间共享此单个对象的信息?

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

You can create an RPC call over other players, putting these values inside a dictionary object and then pass that object in RPC call.您可以通过其他玩家创建 RPC 调用,将这些值放入字典对象中,然后在 RPC 调用中传递该对象。 And on another side, you can unwrap this object.另一方面,您可以解开这个对象。

Eg:例如:

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();
}

I know you have already done, but if someone needs, it will help them.我知道你已经做了,但如果有人需要,它会帮助他们。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM