/// <summary> /// 指定された種類のデバッグメニューを開きます /// </summary> private void OpenImpl <T> ( DMType type, ListCreatorBase <T> creator, Action <bool> onSetActive ) { // 表示するコンテンツの複製元を取得します var original = GetContent(type); // 表示するコンテンツを複製して表示を設定します var obj = Instantiate(original, m_instantiateRoot); obj.DebugMenuScene = this; obj.gameObject.SetActive(true); obj.SetDisp(creator); // 現在表示されているコンテンツを非表示にします onSetActive?.Invoke(false); // 戻るボタンが押されたら追加したコンテンツを削除して // 最初に表示していたコンテンツを表示します obj.mOnBack = () => { Destroy(obj.gameObject); onSetActive?.Invoke(true); }; }
/// <summary> /// 指定された種類のデバッグメニューを加算して開きます /// </summary> public void OpenAdd <T> ( DMType type, ListCreatorBase <T> creator, GameObject gameObject ) { OpenImpl(type, creator, gameObject.SetActive); }
/// <summary> /// 指定された種類のデバッグメニューをルートとして開きます /// </summary> private void DoOpen <T>(DMType type, ListCreatorBase <T> creator) { if (m_isOpen) { return; } m_isOpen = true; m_openBaseUI.SetActive(true); OpenImpl(type, creator, isActive => { if (!isActive) { return; } Close(); }); }
/// <summary> /// 指定された種類のデバッグメニューを開きます /// </summary> public static void Open <T>(this DMType self, ListCreatorBase <T> creator) { UniDebugMenuScene.Open(self, creator); }
//============================================================================== // 関数(static) //============================================================================== /// <summary> /// 指定された種類のデバッグメニューをルートとして開きます /// </summary> public static void Open <T>(DMType type, ListCreatorBase <T> creator) { m_instance.DoOpen(type, creator); }
/// <summary> /// 指定された種類のデバッグメニューを加算して開きます /// </summary> protected void OpenAdd <TData>(DMType type, ListCreatorBase <TData> creator) { m_debugMenuScene.OpenAdd(type, creator, m_gameObject); }