玩家重启后无法移动

Player can't move after restarting

我创建了一个简单的场景,其中 SceneManager 作为单例实现。

当只使用那个场景时,它完美无缺。

然后我添加了一个重启按钮,问题开始了。

最初我有一些NullReferenceException问题:我找到了原因,问题是由于单例实例的一些数组没有被清除;该脚本找到了一个包含 x 个元素的数组,但它们都是空引用。所以我在 Start() 函数中添加了一些代码来检查数组是否为空。如果不是我清除数组(在开始之前数组必须是空的,如果不是,它是一个空引用数组)。

解决所有 NullReferenceException 问题(导致应用程序崩溃)后,我仍然无法在重新启动后使应用程序 运行。

新问题是玩家的GameObject在场景中被定义为GameObjectCapsuleColliderRigidBodyRigidBodyFPSController,重启后不动。我认为是附加脚本的问题,重启后可能不会再次创建。

有什么想法吗?

尝试

Application.LoadLevel("your_scene");

将此添加到您拥有的 restart_function/code。 这应该将 level/scene 重置为加载的原始文件。

我认为你可以先用游戏对象初始化 array,然后 restart 它在首先定义的数组中有固定的引用,所以它指向现在销毁的旧对象,并且试图引用它的脚本。 通过创建数组 null 并为其赋值来重新初始化对象。 或 application.load("scene_name")