所以我编写了一个脚本,在10秒后,带你到一个新的场景,我启动了一个协程,在IEnumerator中,它和协程有相同的名字,但是我仍然有一个错误,说“变量X不存在于当前的上下文中,”我不知道为什么会这样。
以下是我的代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Anim : MonoBehaviour
{
float X = 1;
void Start()
{
StartCoroutine(Timer());
}
void FixedUpdate()
{
if(X == 1f)
{
IEnumerator Timer()
{
yield return new WaitForSeconds(10f);
SceneManager.LoadScene(1);
float X =- 0;
}
}
}
}
我原以为它会在10秒钟后加载新场景,但它给了我一个错误。
1条答案
按热度按时间vshtjzan1#
你的问题是你试图调用Timer(),即使它还不存在。如果我没弄错的话,Start方法是在你创建IEnumerator的FixedUpdate之前调用的。
您应该将创建Timer()的部分放在上面调用Timer()的Start方法中,或者您可以将其完全放在这些方法之外与X相同的位置。然后您的代码应该可以工作。
或
(我不能100%确定哪一个是最好的选择,我可能会把它放在开始。
顺便说一句,试着把你的代码作为文本添加到你的问题中(就像我上面做的那样),而不是发布一个截图。