为了账号安全,请及时绑定邮箱和手机立即绑定

Unity 将 if 语句从函数中取出

Unity 将 if 语句从函数中取出

C#
大话西游666 2022-08-20 16:50:54
我正在构建 Unity 3D 游戏,如果用户处于第三级,我想签入脚本。如果为 true,则否则 .我尝试将这个简单的if语句实现到脚本中,但我得到了:timeLeft = 120;timeLeft = 90;Invalid token 'if' in class, struct, or interface member declaration如果我将语句放入 start 方法中,我得到:The name 'timeLeft' does not exist in the current context如何解决?计时器.cspublic class Timer : MonoBehaviour{    public Collide _collide;    Text instruction;        private void Start()    {        instruction = GetComponent<Text>();        InvokeRepeating("time", 0, 1);    }    if (SceneManager.GetActiveScene().buildIndex == 7)         int timeLeft = 120;    else int timeLeft = 90;        private void time()    {        int buildIndex = SceneManager.GetActiveScene();                if (_collide.obji <= 0 && timeLeft > 0)            SceneManager.LoadScene(buildIndex switch { 1 => 2, 3 => 5, 7 => 9 });        else if (_collide.obji > 0 && timeLeft <= 0)            SceneManager.LoadScene(buildIndex switch { 1 => 3, 3 => 6, 7 => 8 });               if (timeLeft > 0)        {            timeLeft -= 1;            instruction.text = (timeLeft).ToString();        }        else if (timeLeft <= 0)            instruction.text = "0";    }}
查看完整描述

2 回答

?
慕娘9325324

TA贡献1783条经验 获得超4个赞

由于 timeLeft 用于类,因此不能在方法中声明它。将其向上移动并将代码放在开头。


public class Timer : MonoBehaviour

{

    int timeLeft;

    void Start()

    {

        instruction = GetComponent<Text>();

        InvokeRepeating("time", 0, 1);


        if (SceneManager.GetActiveScene().buildIndex == 7)

        {

            timeLeft = 120;

        }

        else

        {

            timeLeft = 90;

        }

/*

        timeLeft = (SceneManager.GetActiveScene().buildIndex == 7) ? 120 : 90;

*/

    }

}

注释行是相同的,只是写得不同。


查看完整回答
反对 回复 2022-08-20
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

您需要定义字段,然后将语句放在方法中。例如:_timeLeftif


public class Timer : MonoBehaviour

{

    public Collide _collide;

    Text instruction;


    int _timeLeft;


    void Start()

    {

        instruction = GetComponent<Text>();

        InitializeTimeLeft();

        InvokeRepeating("time", 0, 1);

    }


    void InitializeTimeLeft()

    {

        if (SceneManager.GetActiveScene().buildIndex == 7)

        {

            _timeLeft = 120;

        }

        else

        {

            _timeLeft = 90;

        }

    }


    void time()

    {

       ...

    }

}


查看完整回答
反对 回复 2022-08-20
  • 2 回答
  • 0 关注
  • 106 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信