unity5.1 Unet同步问题总结 (4)

//点击事件
    public void ClickDXView()
    {

            RpcDXView();

    }

[ClientRpc]
    public void RpcDXView()
    {
        readyPN.gameObject.SetActive(false);
        startGm();
        Camera.main.GetComponent<DOTweenPath>().DOPlay();
    }

回调函数--

[ServerCallback]:只执行在服务器端,并使一些特殊函数(eg:Update)不报错(若在此函数中改变了带有syncvar的变量,客户端不同步)

          (使用ServerCallback时,将Update中的重要语句摘出来写入Rpc函数中并调用)

[ClientCallback]:只执行在客户端

另:[Server]:只执行在服务器端但是不能标识一些特殊函数(可以在这里调用Rpc类函数)

远程过程的参数

  传递给客户端远程过程调用的参数会被序列化并在网络上传送,这些参数可以是:

- 基本数据类型(字节,整数,浮点树,字符串,64位无符号整数等)

- 基本数据类型的数组

- 包含允许的数据类型的结构体

- Unity内建的数学类型(Vector3,Quaternion等)

- NetworkIdentity

- NetworkInstanceId

- NetworkHash128

- 带有NetworkIdentity组件的物体

  远程过程的参数不可以是游戏物体的子组件,像脚本对象或Transform,他们也不能是其他不能在网络上被序列化的数据类型。

  

  在使用过程中发现一个问题:带有NetworkIdentity的组件在运行之前不能是隐藏的,否则同步会受影响,在代码Start函数中置为SetActive = false,或者因为网络问题一开始隐藏的物体在后续同步中都没有问题。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zypjxx.html