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在安卓运行崩溃问题,求助

启动 Unity 时应用程序崩溃 - 在 Android Studio 中测试时不会崩溃

Unity 2017 在 Debug Step Over 期间崩溃

Unity 从崩溃的实例恢复您的场景

Unity VM 崩溃(看起来像加速问题)