Unity3d 从不同场景访问相同的布尔值

Unity3d 从不同场景访问相同的布尔值,unity3d,Unity3d,我的unity项目从3个场景构建,它可以从任何场景开始。 每个场景都有一个GameObject,其中包含一个名为isFirstSceneLoaded的脚本,因为脚本调用了它。它所要做的就是检查该场景是否是第一个从游戏加载的场景。因此,假设我有一个bool名为isFirstScene,并且它最初设置为no,但是当脚本第一次Start()时被调用,我正在将其设置为true。 所以现在当我切换场景时,这个bool将等于true 我怎么做呢?你可以用两种方法来做 1) 使空对象将脚本放在其中,其中包含b

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

我怎么做呢?

你可以用两种方法来做 1) 使空对象将脚本放在其中,其中包含bool,只是不要在加载时销毁它。。 2) 您可以使用类IsSceneLoaded创建脚本,从mono行为中删除继承并生成静态函数(不要忘记删除更新和启动函数)

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

公共静态void SetBool(bool newval) {DidLoad=newval; }

如果它不评论我的答案,那么这两种方法都可以,如果你不想添加游戏对象,那么就使用第二种方法:p

创建一个静态类

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);
 }

您还可以将该值保存在PlayerRef中,这可能会更好
 void Start()
 {
     FirstSceneLoaded.setBool(Application.loadedLevelName);
 }