首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在无效OnMouseDown()函数的多个if语句中共享一个公共变量值

如何在无效OnMouseDown()函数的多个if语句中共享一个公共变量值
EN

Stack Overflow用户
提问于 2015-08-16 03:35:39
回答 1查看 40关注 0票数 0

当我点击"Credits“按钮时,6号场景就被加载了。当我点击场景6中的后退按钮时,应用程序应该返回到之前加载的场景。例如,当前我在场景3中,当我点击credits按钮时,当前场景(在本例中为3)将被保存在变量currentLevel中。当我的应用程序在场景6中,按下后退按钮时,它应该返回到3,但它却返回到场景0。我不知道为什么它不能工作。任何帮助都是非常感谢的。谢谢。

代码语言:javascript
复制
    int currentLevel;

    void OnMouseDown()
    {
        Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
        RaycastHit2D hit = Physics2D.Raycast (ray.origin, ray.direction);
        if (hit.collider != null) {

            if(hit.collider.name == "Credits")
            {   
                currentLevel = Application.loadedLevel;
                Debug.Log (currentLevel);
                Application.LoadLevel(6);
            }


            if(hit.collider.name == "BackButton") 
            {   Debug.Log ("Current level" + currentLevel);
                Application.LoadLevel(currentLevel);
            }


        }
}
EN

回答 1

Stack Overflow用户

发布于 2015-08-16 15:17:35

您需要一个管理器/单例来维护currentLevel字段的状态。

因此,创建一个新脚本并将以下代码粘贴到其中。

代码语言:javascript
复制
public class LevelManager : MonoBehaviour {

    public static LevelManager instance;
    public int currentLevel = 0;

    void Awake () {
        instance = this;
        DontDestroyOnLoad(gameObject);
    }
}

现在,在您的脚本中,将代码更改为

代码语言:javascript
复制
LevelManager.instance.currentLevel = Application.loadedLevel;

加载您的新场景时,

代码语言:javascript
复制
Application.LoadLevel(LevelManager.instance.currentLevel);

同时单击后退按钮。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32028560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档