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