【发布时间】:2022-06-20 04:24:59
【问题描述】:
在我的网络行为脚本中,我正在尝试使用可编写脚本的对象(块)来获取要实例化的预制件。我有这个功能。
[Command(requiresAuthority = false)]
private void InstiniateBlock(Vector2 blockPos,Block bl)
{
GameObject Stone =GameObject.Instantiate(bl.prefab, blockPos, Quaternion.Euler(0, 0, 0), null);
NetworkServer.Spawn(Stone);
}
每当我运行它时,我都会收到此错误
Disconnecting connId=0 to prevent exploits from an Exception in MessageHandler: ArgumentException The Object you want to instantiate is null.
我已确保 Scriptable Object 有一个预制件,并且该预制件位于具有网络标识的 spawn 预制件中。你能帮忙吗?
【问题讨论】:
-
你真的为它设置了值吗?您的 NetworkBehavior 脚本是否实际上指向 ScriptableObject? ScriptableObject 是否真的为
.prefab字段设置了一些东西?我认为The Object you want to instantiate is null.应该是一个很大的提示。 -
是的,Scriptable 对象有一个预制件并且它指向 scriptableObject
-
然后,我会使用调试语句将操作分成几部分,看看究竟是什么触发了错误。您正在尝试实例化一些为 null 的东西,但您在那里同时引用了两个东西,
bl和.prefab。