在Unity中加载场景会使该场景中的引用为空

时间:2020-05-10 18:55:24

标签: c# unity3d game-engine

我正在Unity中制作我的第一款游戏,当开始的过场动画结束时,我试图加载游戏的第一级。我不知道是否可以在视频剪辑结束后使脚本执行某些操作,所以我编写了如下代码:

    using UnityEngine;
    using System.Collections;
    using UnityEngine.SceneManagement;

    public class CutsceneEnd : MonoBehaviour
    {
        // Start is called before the first frame update
        void Start()
        {
            StartCoroutine("wait");
        }
        IEnumerator wait()
        {
            yield return new WaitForSeconds(36);

            SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);
        }

    }

但是问题不是我等待视频结束的方法,而是它加载的场景。我无法移动角色,因为脚本中的所有引用均为空。我不知道我做错了什么。

2 个答案:

答案 0 :(得分:0)

统一引用应存储在场景文件中。您是否正在使用git等任何源代码控制?如果其他人未将更改推送到相关脚本/预制件的.unityscene文件或.meta文件,则可能会破坏引用。

答案 1 :(得分:0)

我认为我们在这里需要更多信息。

如果在加载的场景中引用对Assets / GameObjects的引用(公共变量),则可能根本就没有将引用放在首位。 Unity的公共变量应保存在Scene文件中,并应始终随Scene一起加载。

仔细检查引用是否实际上为空。加载到场景中时是否正在使用动画?这会使您无法手动移动任何东西。例如,如果在加载场景时为角色设置动画,则它可能会卡在动画剪辑中,而您将无法移动它。

最后,如果您引用的是在代码中创建的对其他脚本,对象或变量的引用,那么如果您不使用“ DontDestroyOnLoad”,则这些引用可能会在场景之间中断。

仅在这里吐痰,我需要更多信息来正确找到解决方案。