【问题标题】:Object not set to an instance of an object [UNET]对象未设置为对象的实例 [UNET]
【发布时间】:2018-09-25 04:55:00
【问题描述】:

最近才开始使用 UNET,至少可以说很难。

我正在尝试执行几行代码,基本上让服务器为生成的预制件(又名播放器)分配一个摄像头,设置它的位置并将其作为所述预制件的父级。托管服务器后,它就可以正常工作 - 相机已连接,跟随播放器.. 太棒了!

但是,一旦客户端加入,我就会收到“对象引用未设置为对象的实例”错误。通常我知道如何解决这些问题,但这次我只是卡住了。

Client]
void RpcSetCamera()
{
    if (go.gameObject == null)
    {
        Debug.Log("Unable to attach camera");
        return;
    }

    Camera.main.transform.position = go.transform.position - go.transform.forward * 8 + go.transform.up * 2;
    Camera.main.transform.LookAt(go.transform);
    Camera.main.transform.parent = go.transform;
}

这是为客户端调用的函数。

感谢您的帮助!

【问题讨论】:

标签: runtime-error multiplayer unity3d-unet


【解决方案1】:

你的Camera对象应该为null,这只能说明没有设置对象引用。

【讨论】:

    【解决方案2】:

    尝试检查对象是否也为空。

    void RpcSetCamera()
    {
        if (go == null || go.gameObject == null)
        {
            Debug.Log("Unable to attach camera");
            return;
        }
    
        Camera.main.transform.position = go.transform.position - go.transform.forward * 8 + go.transform.up * 2;
        Camera.main.transform.LookAt(go.transform);
        Camera.main.transform.parent = go.transform;
    }
    

    【讨论】:

    • 您好,感谢您这么快回复。您检查对象是否为空也是正确的。事实证明这就是错误弹出的原因。为什么呢?除非我的逻辑不正确,否则我所拥有的只是一个实例化预制 GO 的 GameObject 变量(go),为什么它会被清空?
    猜你喜欢
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    相关资源
    最近更新 更多