unity3d 当前上下文中不存在变量

inkz8wg9  于 2023-02-23  发布在  其他
关注(0)|答案(1)|浏览(174)

所以我编写了一个脚本,在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秒钟后加载新场景,但它给了我一个错误。

vshtjzan

vshtjzan1#

你的问题是你试图调用Timer(),即使它还不存在。如果我没弄错的话,Start方法是在你创建IEnumerator的FixedUpdate之前调用的。
您应该将创建Timer()的部分放在上面调用Timer()的Start方法中,或者您可以将其完全放在这些方法之外与X相同的位置。然后您的代码应该可以工作。

void Start()
{
    IEnumerator Timer()
    {
    [...]
    }
    StartCoroutine(Timer());
}

void FixedUpdate()
{
[...]
}

float X = 1;
IEnumerator Timer()
{
    [...]
}

void Start()
{
    StartCoroutine(Timer());
}

void FixedUpdate()
{
[...]
}

(我不能100%确定哪一个是最好的选择,我可能会把它放在开始。
顺便说一句,试着把你的代码作为文本添加到你的问题中(就像我上面做的那样),而不是发布一个截图。

相关问题