RPC 崩溃 Unity
Posted
技术标签:
【中文标题】RPC 崩溃 Unity【英文标题】:RPC crashing Unity 【发布时间】:2015-02-24 10:10:37 【问题描述】:在过去的几个小时里,我遇到了一个非常令人不安的问题。 看来,我使用数组(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);
仅在具有网络视图的相机中使用此脚本就足以让事情崩溃。我做错什么了吗?? 提前致谢!
【问题讨论】:
我一整天都遇到同样的问题,我什至格式化了我的电脑,它仍然崩溃。最后我意识到我在过去的一天升级了 Unity,它应该是罪魁祸首。降级回4.6.1f后,效果很好!然后我试着找到有同样问题的人,显然你是唯一一个发布这个的人。 【参考方案1】:这是 4.6.3 和 4.6.4 中的一个错误,当我尝试在 unity5 中通过 rpc 发送字节数组时,它可以完成这项工作。希望对你有帮助
【讨论】:
【参考方案2】:在Unity中使用RPC调用是restricted to certain types of parameters:
您可以使用以下变量类型作为 RPC 的参数:- int float string NetworkPlayer NetworkViewID Vector3 四元数
所以你可以做的是将数组序列化/转换为字符串,然后在另一边返回数组。
【讨论】:
同意,但是当您尝试发送不受支持的数据时,我们收到此错误:“发送 RPC 失败,因为不支持 'teste' 参数 0 (UnityEngine.GameObject)。”而不是完全崩溃。【参考方案3】:您需要将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]);
【讨论】:
什么也没改变。仍然崩溃。 你有networkView实例吗?也许你会得到 null。 是的。当我不连接或未连接时,Unity 会抛出“无法发送 RPC w/o networkview connected”或类似的东西。 请在控制台发送错误信息。真奇怪。如果统一在发送错误之前完全崩溃。也许你的项目有奇怪的问题。 控制台没有错误,使用该脚本,在我按下“运行”的那一刻,它立即崩溃。以上是关于RPC 崩溃 Unity的主要内容,如果未能解决你的问题,请参考以下文章
XCode 9 停止调试和运行应用程序并给出错误“LLDB RPC 服务器已崩溃。”
启动 Unity 时应用程序崩溃 - 在 Android Studio 中测试时不会崩溃