1

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

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

    }
}

球对象的网络身份已检查“本地玩家权限”。你们能告诉我我做错了什么吗?

谢谢你。

4

1 回答 1

2

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

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

于 2016-08-11T17:23:08.867 回答