在过去的几个小时里,我遇到了一个令人不安的问题。 似乎我使用数组(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);
}
}
在具有网络视图的相机中仅使用此脚本足以让事情崩溃。我做错什么了吗?? 提前谢谢!
答案 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]);
}