我正在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);
}
}
但是问题不是我等待视频结束的方法,而是它加载的场景。我无法移动角色,因为脚本中的所有引用均为空。我不知道我做错了什么。
答案 0 :(得分:0)
统一引用应存储在场景文件中。您是否正在使用git等任何源代码控制?如果其他人未将更改推送到相关脚本/预制件的.unityscene文件或.meta文件,则可能会破坏引用。
答案 1 :(得分:0)
我认为我们在这里需要更多信息。
如果在加载的场景中引用对Assets / GameObjects的引用(公共变量),则可能根本就没有将引用放在首位。 Unity的公共变量应保存在Scene文件中,并应始终随Scene一起加载。
仔细检查引用是否实际上为空。加载到场景中时是否正在使用动画?这会使您无法手动移动任何东西。例如,如果在加载场景时为角色设置动画,则它可能会卡在动画剪辑中,而您将无法移动它。
最后,如果您引用的是在代码中创建的对其他脚本,对象或变量的引用,那么如果您不使用“ DontDestroyOnLoad”,则这些引用可能会在场景之间中断。
仅在这里吐痰,我需要更多信息来正确找到解决方案。