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

问题描述 投票:0回答:1

我正在用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);
        }

    }

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

c# unity3d game-engine
1个回答
0
投票

Unity引用应该存储在场景文件中。你是否使用任何源码控制,如git?如果其他人没有将更改推送到.unityscene文件或相关脚本prefabs的.meta文件中,可能会破坏引用。


-1
投票

我想我们需要更多的信息。

如果你指的是加载场景中对AssetsGameObjects的引用(公共变量),那么你可能根本就没有把引用放在第一位。Unity的公共变量应该保存在Scene文件中,并且应该总是和Scene一起加载。

仔细检查一下,看看这些引用是否真的是空的。当你加载到Scene时,你是否使用了动画?这可能使您无法手动移动任何东西。例如,如果您在加载场景时对角色进行了动画处理,它可能会卡在动画片段中,您将无法移动它。

最后,如果你指的是在代码中创建的对其他脚本、对象或变量的引用,那么如果你不利用 "DontDestroyOnLoad",这些引用可能会在场景之间中断。

只是在这里吐槽一下,我需要更多的信息来正确找到解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.