【发布时间】:2021-08-18 12:30:30
【问题描述】:
我正在尝试统一创建一个关卡加载器系统,它将根据您按下的按钮加载关卡。我现在的代码是非常不必要的,因为我必须为每个单独的按钮创建一个 IEnumerator 和一个 StartCoroutine 函数。
这是我目前的代码:
public void LoadLevel1()
{
StartCoroutine(Level1());
}
IEnumerator Level1()
{
transition.SetTrigger("Start");
yield return new WaitForSeconds(2);
SceneManager.LoadScene("Level 1");
}
每个关卡的这个过程变得非常烦人和重复,因为 10 个关卡已经占用了 150 多行杂乱的代码。
我尝试通过使用按钮名称加载场景来优化这一点。
例如在加载级别 1 的按钮上,按钮的名称称为“级别 1”,所以逻辑上我会调用“gameObject.name”并取按钮的名称“级别 1”并加载场景“1 级”。
Visual Studio 对此没有问题,但是当我尝试运行以下代码时:
public void LoadLevel()
{
StartCoroutine(GoToLevel());
}
IEnumerator GoToLevel()
{
transition.SetTrigger("Start");
yield return new WaitForSeconds(2);
SceneManager.LoadScene(gameObject.name);
}
但由于某种原因,unity 接受了 gameObject.name 并说:“哦,你想要你父母的名字”并尝试加载场景“LoadLevel”。这是不存在的,因为它应该加载“1 级”。我不知道为什么会这样。任何想法将不胜感激。
【问题讨论】:
-
加载游戏的按钮是静态的(例如标准的 10 个按钮)还是动态加载?