RPC崩溃Unity

时间:2015-02-24 10:10:37

标签: c# unity3d rpc

在过去的几个小时里,我遇到了一个令人不安的问题。 似乎我使用数组(int,float,byte等)进行的每次RPC调用都会使整个引擎崩溃。 我已经做了一个关于如何重现的小实例,我想知道它是否肯定是一个错误,或者我是否做了一些非常错误的事情:

using UnityEngine;
using System.Collections;

public class NewBehaviourScript : MonoBehaviour {

    // Use this for initialization
    void Start () {
        Network.InitializeServer(4, 25000, true);
        networkView.RPC("test", RPCMode.All, new float[5]);
    }

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

    [RPC]
    void test(float[] lol){
        Debug.Log("received "+lol);
    }
}

在具有网络视图的相机中仅使用此脚本足以让事情崩溃。我做错什么了吗?? 提前谢谢!

3 个答案:

答案 0 :(得分:2)

这是4.6.3和4.6.4中的一个错误,当我尝试在unity5中的rpc上发送一个bytearray它完成了这项工作。希望它有所帮助

答案 1 :(得分:0)

在Unity中使用RPC调用是restricted to certain types of parameters

  

您可以使用以下变量类型作为RPC的参数: -   int float string NetworkPlayer NetworkViewID Vector3 Quaternion

所以你可以做的是将数组序列化/转换为字符串,然后返回到另一端的数组。

答案 2 :(得分:0)

您需要在班级中添加OnServerInitialized功能。之后,您可以在此功能中使用networkView.RPC("test", RPCMode.All, new float[5]);

而且我也无法在班上看到NetworkView实例。

public NetworkView networkView;
void OnServerInitialized(){
    Debug.Log("Server initialized and ready");
    networkView.RPC("test", RPCMode.All, new float[5]);
}