【问题标题】:Unity Network ClientRpc issue. Does not syncUnity Network ClientRpc 问题。不同步
【发布时间】:2016-08-12 01:23:08
【问题描述】:

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

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

    }
}

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

谢谢。

【问题讨论】:

    标签: unity3d network-programming rpc unity-networking


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-15
      • 1970-01-01
      • 1970-01-01
      • 2017-01-28
      • 2021-04-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多