我有两个球员,这些球员正在击球。每当它们击中时,球的颜色都可能会发生变化(绿色或红色)。但是当一名球员击球时,它只会改变球的颜色,其他球员的球颜色是相同的。我希望所有玩家看到相同的颜色。这是代码:
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;。你能告诉我我做错了吗?
谢谢。
答案 0 :(得分:2)
我认为当你调用RpcCHANGE
时,会在每个网络实例上调用它,分别在方法中运行代码。这意味着Random.Range(0, 2);
的结果对每个客户都不同。
相反,您可以在update方法中生成随机颜色,并将颜色传递给RpcCHANGE,从而将每个网络实例更改为相同的颜色。