我正在用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);
}
}
但问题不在于我等待视频结束的方法, 而是在于它加载的场景。我无法移动我的角色,因为脚本中所有的引用都是空的。我不知道我做错了什么。
Unity引用应该存储在场景文件中。你是否使用任何源码控制,如git?如果其他人没有将更改推送到.unityscene文件或相关脚本prefabs的.meta文件中,可能会破坏引用。
我想我们需要更多的信息。
如果你指的是加载场景中对AssetsGameObjects的引用(公共变量),那么你可能根本就没有把引用放在第一位。Unity的公共变量应该保存在Scene文件中,并且应该总是和Scene一起加载。
仔细检查一下,看看这些引用是否真的是空的。当你加载到Scene时,你是否使用了动画?这可能使您无法手动移动任何东西。例如,如果您在加载场景时对角色进行了动画处理,它可能会卡在动画片段中,您将无法移动它。
最后,如果你指的是在代码中创建的对其他脚本、对象或变量的引用,那么如果你不利用 "DontDestroyOnLoad",这些引用可能会在场景之间中断。
只是在这里吐槽一下,我需要更多的信息来正确找到解决方案。