【问题标题】:Access same boolean from different scenes从不同场景访问相同的布尔值
【发布时间】:2014-12-09 05:04:02
【问题描述】:

我的统一项目从 3 个场景构建,它可以从任何场景开始。 每个场景都有一个GameObject,其中包含一个名为isFirstSceneLoaded 的脚本,因为脚本调用它所要做的就是检查该场景是否是第一个从游戏中加载的场景。所以假设我有一个bool 调用isFirstScene 最初设置为 no,但是当脚本第一次调用 Start() 时,我将其设置为 true。 所以现在当我切换场景时,这个布尔值将等于 true。

我该怎么做?

【问题讨论】:

    标签: unity3d


    【解决方案1】:

    创建一个静态类

    public static class FirstSceneLoaded
    {
        private static bool isFirstScene = false;
    
        public static void setBool(String sceneName)
        {
            if(sceneName == "first")
              isFirstScene = true;
        }
    }
    

    由于类是静态的,所以它只有一个实例,并且在游戏的整个执行过程中都会存在。

    这样称呼

     void Start()
     {
         FirstSceneLoaded.setBool(Application.loadedLevelName);
     }
    

    【讨论】:

      【解决方案2】:

      你可以通过两种方式做到这一点 1)在其中制作空对象放置脚本,其中包含布尔值,只是不要在加载时破坏它.. 2)您可以使用 IsSceneLoaded 类创建脚本删除从单声道行为的继承并制作静态函数(不要忘记删除更新和启动函数)

       public static bool GetBool() {// declare static bool in the class let's say its name 
      DidLoad return DidLoad; }
      

      //如果你想要一个函数来设置它

      public static void SetBool(bool newval) {DidLoad=newval; }

      如果它不评论我的答案,如果您不想添加游戏对象,则任何一种方法都可以正常工作,只需使用第二种方法:P

      【讨论】:

      • 您也可以将值保存在 PlayerPref 中
      • 是的,那可能会更好?
      猜你喜欢
      • 2016-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-02
      • 2014-09-10
      • 1970-01-01
      相关资源
      最近更新 更多