将 NetworkTransform 与 RigidBody 一起使用时出现 NullReferenceException
NullReferenceException when using NetworkTransform with a RigidBody
当我尝试使用 NetworkServer.Spawn 创建一个具有刚体和 NetworkTransform 设置为 Sync Rigidbody 3D 的对象时,我得到了这个:
NullReferenceException: Object reference not set to an instance of an object
UnityEngine.Networking.NetworkTransform.SerializeMode3D (UnityEngine.Networking.NetworkWriter writer) (at C:/buildslave/unity/build/Extensions/Networking/Runtime/NetworkTransform.cs:251)
在 NetworkTransform 组件唤醒之前,我在另一个组件的 Awake 中调用了 NetworkServer.Spawn。由于 OnSerialize 在您调用 spawn 时立即发生,它试图从对刚体的未初始化引用中提取数据。
UNET现已开源,可以找到NetworkTransform的代码here。对调试很有用!
如果您认为自己没有更改任何内容时突然出现这种情况,可能是因为您禁用了预制游戏对象。发生在我身上,所以我想我会把它放在这里,以防其他人发生:)
当我尝试使用 NetworkServer.Spawn 创建一个具有刚体和 NetworkTransform 设置为 Sync Rigidbody 3D 的对象时,我得到了这个:
NullReferenceException: Object reference not set to an instance of an object UnityEngine.Networking.NetworkTransform.SerializeMode3D (UnityEngine.Networking.NetworkWriter writer) (at C:/buildslave/unity/build/Extensions/Networking/Runtime/NetworkTransform.cs:251)
在 NetworkTransform 组件唤醒之前,我在另一个组件的 Awake 中调用了 NetworkServer.Spawn。由于 OnSerialize 在您调用 spawn 时立即发生,它试图从对刚体的未初始化引用中提取数据。
UNET现已开源,可以找到NetworkTransform的代码here。对调试很有用!
如果您认为自己没有更改任何内容时突然出现这种情况,可能是因为您禁用了预制游戏对象。发生在我身上,所以我想我会把它放在这里,以防其他人发生:)