Unity Network ClientRpc问题。不同步

时间:2015-11-15 08:44:03

标签: unity3d network-programming rpc unity-networking

我有两个球员,这些球员正在击球。每当它们击中时,球的颜色都可能会发生变化(绿色或红色)。但是当一名球员击球时,它只会改变球的颜色,其他球员的球颜色是相同的。我希望所有玩家看到相同的颜色。这是代码:

using UnityEngine;   
using UnityEngine.Networking;

public class ColorGreen : NetworkBehaviour
{

    // Use this for initialization
    [SyncVar]
    int temp = 0;
    void Start () {
        transform.GetComponent<Renderer>().material.color = Color.green;
    }

    // Update is called once per frame
    void Update () {



            if (!isServer)

                return;

            RpcCHANGE();


    }

    [ClientRpc]
   void RpcCHANGE()
    {
        temp = Random.Range(0, 2);
        if (temp == 0)
        {
            transform.GetComponent<Renderer>().material.color = Color.green;
        }
        else if(temp == 1)
        {
            transform.GetComponent<Renderer>().material.color = Color.red;
        }

    }
}

Ball Object已检查网络身份&#34;本地玩家权限&#34;。你能告诉我我做错了吗?

谢谢。

1 个答案:

答案 0 :(得分:2)

我认为当你调用RpcCHANGE时,会在每个网络实例上调用它,分别在方法中运行代码。这意味着Random.Range(0, 2);的结果对每个客户都不同。

相反,您可以在update方法中生成随机颜色,并将颜色传递给RpcCHANGE,从而将每个网络实例更改为相同的颜色。