重新加载GameScene而无需在Unity3d中重新加载UIScene

时间:2017-07-30 14:10:40

标签: unity3d

我有2个场景“GamePlay”和“GameUI”。

我使用GamePlay加载GameUI

void Awake () {
    if (!instance) {
        instance = this;
    } else {
        Destroy(this.gameObject) ;
    }

    SceneManager.LoadScene ("GameUI", LoadSceneMode.Additive);
    DontDestroyOnLoad(this.gameObject);
}

现在我使用

重新加载“GamePlay”场景
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);

如何防止重新加载“GameUI”场景?

1 个答案:

答案 0 :(得分:1)

您可以添加附加到GameUI的MonoBehaviour,其中包含一个静态bool,指示对象是否存在。使用以下脚本使整个UI场景成为一个对象的子项。

public class UIExistance : MonoBehaviour
{
    public static bool Exists { get; private set; }

    void Awake()
    {
        DontDestroyOnLoad(transform.gameObject);
        UIExistance.Exists = true;
    }

    void OnDestroy()
    {
        UIExistance.Exists = false;
    }
}

当您使用发布的Awake方法时,可以使用if(!UIExistance.Exists)查看用户界面是否已在场景中。