public IEnumerator Execute_UndoLogic_Coroutine(MonoBehaviour pManager, ICanvas pCanvas, EDebugLevelFlags eDebugFlags)
            {
                if (mapShowObject.ContainsKey(pCanvas) == false)
                {
                    yield break;
                }

                T pObject = mapShowObject[pCanvas];

                mapShowObject.Remove(pCanvas);
                if (pObject.IsNull())
                {
                    yield break;
                }

                if ((eDebugFlags & EDebugLevelFlags.ManagerLogic) != 0)
                {
                    Debug.Log($"{UIDebug.LogFormat(EDebugLevelFlags.ManagerLogic)}{nameof(Show_UIWidget_Managed<T>)}/{nameof(Execute_UndoLogic_Coroutine)} // Canvas : {pCanvas.GetObjectName_Safe()} Start");
                }

                var pHandle = pObject.DoHide();

                if (pHandle == null)
                {
                    Debug.LogWarning($"{nameof(Execute_UndoLogic_Coroutine)} // Canvas : {pCanvas.GetObjectName_Safe()} - pHandle == null");
                    yield break;
                }
                pHandle.Set_OnHide((pPopup) => _bWaitAnimation = false);

                _bWaitAnimation = _eOption == EOption.WaitAnimation;
                while (_bWaitAnimation)
                {
                    yield return(null);
                }

                OnHideObject(pObject);

                if ((eDebugFlags & EDebugLevelFlags.ManagerLogic) != 0)
                {
                    Debug.Log($"{UIDebug.LogFormat(EDebugLevelFlags.ManagerLogic)}{nameof(Show_UIWidget_Managed<T>)}/{nameof(Execute_UndoLogic_Coroutine)} // Canvas : {pCanvas.GetObjectName_Safe()} Finish");
                }
            }
            public void Execute_UndoLogic_NotCoroutine(MonoBehaviour pManager, ICanvas pCanvas, EDebugLevelFlags eDebugFlags)
            {
                if (mapShowObject.ContainsKey(pCanvas) == false)
                {
                    return;
                }

                GameObject pObject = mapShowObject[pCanvas];

                mapShowObject.Remove(pCanvas);

                OnHideObject(pObject);
            }
            public IEnumerator Execute_LogicCoroutine(MonoBehaviour pManager, ICanvas pCanvas, EDebugLevelFlags eDebugFlags)
            {
                if (OnRequireObject == null || pObject == null)
                {
                    Debug.LogError("Error");
                    yield break;
                }

                if (mapShowObject.ContainsKey(pCanvas))
                {
                    yield break;
                }


                T pObjectCopy = OnRequireObject(pObject, pCanvas);

                if (pObjectCopy.IsNull())
                {
                    yield break;
                }

                if ((eDebugFlags & EDebugLevelFlags.ManagerLogic) != 0)
                {
                    Debug.Log($"{UIDebug.LogFormat(EDebugLevelFlags.ManagerLogic)}" + nameof(Show_UIWidget_Managed <T>) + " Canvas : " + pCanvas.GetObjectName_Safe() + " " + nameof(Execute_LogicCoroutine) + " Start");
                }

                mapShowObject.Add(pCanvas, pObjectCopy);

                _bWaitAnimation = _eOption == EOption.WaitAnimation;
                var pHandle = pObjectCopy.DoShow();

                if (pHandle == null)
                {
                    yield break;
                }
                pHandle.Set_OnShow_AfterAnimation((pPopup) => _bWaitAnimation = false);

                while (_bWaitAnimation)
                {
                    yield return(null);
                }

                if ((eDebugFlags & EDebugLevelFlags.ManagerLogic) != 0)
                {
                    Debug.Log($"{UIDebug.LogFormat(EDebugLevelFlags.ManagerLogic)}" + nameof(Show_UIWidget_Managed <T>) + " Canvas : " + pCanvas.GetObjectName_Safe() + " " + nameof(Execute_LogicCoroutine) + " Finish");
                }
            }
            public IEnumerator Execute_LogicCoroutine(MonoBehaviour pManager, ICanvas pCanvas, EDebugLevelFlags eDebugFlags)
            {
                if (OnRequireObject == null || pObject == null)
                {
                    Debug.LogError("Error");
                    yield break;
                }

                if (mapShowObject.ContainsKey(pCanvas))
                {
                    yield break;
                }


                GameObject pObjectCopy = OnRequireObject(pObject, pCanvas);

                pObjectCopy.SetActive(true);

                mapShowObject.Add(pCanvas, pObjectCopy);

                if ((eDebugFlags & EDebugLevelFlags.ManagerLogic) != 0)
                {
                    Debug.Log($"{UIDebug.LogFormat(EDebugLevelFlags.ManagerLogic)}{nameof(Show_Object)} Canvas {pCanvas.gameObject.name} {nameof(Execute_LogicCoroutine)} Finish");
                }
            }
            public IEnumerator Execute_UndoLogic_Coroutine(MonoBehaviour pManager, ICanvas pCanvas, EDebugLevelFlags eDebugFlags)
            {
                if (mapShowObject.ContainsKey(pCanvas) == false)
                {
                    yield break;
                }

                GameObject pObject = mapShowObject[pCanvas];

                mapShowObject.Remove(pCanvas);

                OnHideObject(pObject);
            }
            public IEnumerator Execute_UndoLogic_Coroutine(MonoBehaviour pManager, ICanvas pCanvas, EDebugLevelFlags eDebugFlags)
            {
                if ((eDebugFlags & EDebugLevelFlags.ManagerLogic) != 0)
                {
                    Debug.Log($"{UIDebug.LogFormat(EDebugLevelFlags.ManagerLogic)} {nameof(Lock_AllInput)} {nameof(Execute_UndoLogic_Coroutine)} Prepare Canvas : {pCanvas.GetObjectName_Safe()}");
                }

                if (_OnCheck_IsExecute(pCanvas) == false)
                {
                    yield break;
                }

                if (pCanvas.IsNull())
                {
                    yield break;
                }

                if (_mapSelectAble.ContainsKey(pCanvas) == false)
                {
                    yield break;
                }

                List <SelectAble_OriginState> listSelectAble = _mapSelectAble[pCanvas];

                _mapSelectAble.Remove(pCanvas);
                if (listSelectAble == null)
                {
                    yield break;
                }

                if ((eDebugFlags & EDebugLevelFlags.ManagerLogic) != 0)
                {
                    Debug.Log($"{UIDebug.LogFormat(EDebugLevelFlags.ManagerLogic)}" + nameof(Lock_AllInput) + " Start Canvas : " + pCanvas.GetObjectName_Safe() + " " + nameof(Execute_UndoLogic_Coroutine) + " 1");
                }

                if ((eDebugFlags & EDebugLevelFlags.Detail) != 0)
                {
                    for (int i = 0; i < listSelectAble.Count; i++)
                    {
                        if (listSelectAble[i].pSelectAble != null)
                        {
                            Debug.Log($"{UIDebug.LogFormat(EDebugLevelFlags.ManagerLogic)}" + nameof(Lock_AllInput) + " Canvas : " + pCanvas.gameObject.name + " - " + listSelectAble[i].pSelectAble.name + " Enable : " + listSelectAble[i].bEnableOrigin, listSelectAble[i].pSelectAble);
                            listSelectAble[i].pSelectAble.enabled = listSelectAble[i].bEnableOrigin;
                        }
                    }
                }
                else
                {
                    for (int i = 0; i < listSelectAble.Count; i++)
                    {
                        if (listSelectAble[i].pSelectAble != null)
                        {
                            listSelectAble[i].pSelectAble.enabled = listSelectAble[i].bEnableOrigin;
                        }
                    }
                }

                if ((eDebugFlags & EDebugLevelFlags.ManagerLogic) != 0)
                {
                    Debug.Log($"{UIDebug.LogFormat(EDebugLevelFlags.ManagerLogic)}" + nameof(Lock_AllInput) + " Finish Canvas : " + pCanvas.gameObject.name + " " + nameof(Execute_UndoLogic_Coroutine) + " 2");
                }

                yield break;
            }
            public IEnumerator Execute_UndoLogic_Coroutine(MonoBehaviour pManager, ICanvas pCanvas, EDebugLevelFlags eDebugFlags)
            {
                Canvas_ForLogicTest pTest = pCanvas as Canvas_ForLogicTest;

                pTest.iValue = _iOriginValue;

                yield break;
            }
 public IEnumerator Execute_UndoLogic_Coroutine(MonoBehaviour pManager, ICanvas pCanvas, EDebugLevelFlags eDebugFlags)
 {
     yield return(pLogic.Execute_UndoLogic_Coroutine(pManager, pCanvas, eDebugFlags));
 }
 public void Execute_UndoLogic_NotCoroutine(MonoBehaviour pManager, ICanvas pCanvas, EDebugLevelFlags eDebugFlags)
 {
     pLogic.Execute_UndoLogic_NotCoroutine(pManager, pCanvas, eDebugFlags);
 }
            public void Execute_UndoLogic_NotCoroutine(MonoBehaviour pManager, ICanvas pCanvas, EDebugLevelFlags eDebugFlags)
            {
                if (_pTransformParents.childCount == 0)
                {
                    return;
                }

                GameObject.DestroyImmediate(_pTransformParents.GetChild(_pTransformParents.childCount - 1).gameObject);
            }
 public IEnumerator Execute_LogicCoroutine(MonoBehaviour pManager, ICanvas pCanvas, EDebugLevelFlags eDebugFlags)
 {
     yield return(new WaitForSeconds(fWaitSecond_On_Undo));
 }
            public IEnumerator Execute_UndoLogic_Coroutine(MonoBehaviour pManager, ICanvas pCanvas, EDebugLevelFlags eDebugFlags)
            {
                if (_pTransformParents.childCount == 0)
                {
                    yield break;
                }

                GameObject.DestroyImmediate(_pTransformParents.GetChild(_pTransformParents.childCount - 1).gameObject);

                yield break;
            }
            public IEnumerator Execute_LogicCoroutine(MonoBehaviour pManager, ICanvas pCanvas, EDebugLevelFlags eDebugFlags)
            {
                new GameObject(nameof(Logic_CreateObject_And_SetParents_And_Undo_Is_Destroy)).transform.SetParent(_pTransformParents);

                yield break;
            }
            public void Execute_UndoLogic_NotCoroutine(MonoBehaviour pManager, ICanvas pCanvas, EDebugLevelFlags eDebugFlags)
            {
                Canvas_ForLogicTest pTest = pCanvas as Canvas_ForLogicTest;

                pTest.iValue = _iOriginValue;
            }
            public void Execute_UndoLogic_NotCoroutine(MonoBehaviour pManager, ICanvas pCanvas, EDebugLevelFlags eDebugFlags)
            {
                if (mapShowObject.ContainsKey(pCanvas) == false)
                {
                    return;
                }

                T pObject = mapShowObject[pCanvas];

                mapShowObject.Remove(pCanvas);
                if (pObject.IsNull())
                {
                    return;
                }

                if ((eDebugFlags & EDebugLevelFlags.ManagerLogic) != 0)
                {
                    Debug.Log($"{UIDebug.LogFormat(EDebugLevelFlags.ManagerLogic)}" + nameof(Show_UIWidget_Managed <T>) + " Canvas : " + pCanvas.GetObjectName_Safe() + " " + nameof(Execute_UndoLogic_NotCoroutine) + " Start");
                }

                var pHandle = pObject.DoHide();

                if (pHandle == null)
                {
                    Debug.LogWarning($"{UIDebug.LogFormat(EDebugLevelFlags.ManagerLogic)}" + "Execute_UndoLogicCoroutine - pHandle == null");
                    return;
                }
                pHandle.Set_OnHide((pPopup) => _bWaitAnimation = false);
                OnHideObject(pObject);

                if ((eDebugFlags & EDebugLevelFlags.ManagerLogic) != 0)
                {
                    Debug.Log($"{UIDebug.LogFormat(EDebugLevelFlags.ManagerLogic)}" + nameof(Show_UIWidget_Managed <T>) + " Canvas : " + pCanvas.gameObject.name + " " + nameof(Execute_UndoLogic_NotCoroutine) + " Finish");
                }
            }
            public IEnumerator Execute_LogicCoroutine(MonoBehaviour pManager, ICanvas pCanvas, EDebugLevelFlags eDebugFlags)
            {
                if (pCanvas.IsNull())
                {
                    Debug.Log($"{UIDebug.LogFormat(EDebugLevelFlags.Manager_Core)}{nameof(Print_CanvasState)} Object is Null /// CanvasState : {_eState}");
                }
                else
                {
                    Debug.Log($"{UIDebug.LogFormat(EDebugLevelFlags.Manager_Core)}{nameof(Print_CanvasState)} {pCanvas.gameObject.name} /// CanvasState : {_eState}", pCanvas.gameObject);
                }

                yield break;
            }
            public IEnumerator Execute_LogicCoroutine(MonoBehaviour pManager, ICanvas pCanvas, EDebugLevelFlags eDebugFlags)
            {
                if ((eDebugFlags & EDebugLevelFlags.ManagerLogic) != 0)
                {
                    Debug.Log($"{UIDebug.LogFormat(EDebugLevelFlags.ManagerLogic)}{nameof(Lock_AllInput)} Prepare Canvas : {pCanvas.GetObjectName_Safe()} + {nameof(Execute_LogicCoroutine)}");
                }

                if (_OnCheck_IsExecute(pCanvas) == false)
                {
                    yield break;
                }

                if (pCanvas.IsNull())
                {
                    yield break;
                }


                if ((eDebugFlags & EDebugLevelFlags.ManagerLogic) != 0)
                {
                    Debug.Log($"{UIDebug.LogFormat(EDebugLevelFlags.ManagerLogic)}{nameof(Lock_AllInput)} Start Canvas : {pCanvas.GetObjectName_Safe()} {nameof(Execute_LogicCoroutine)}");
                }

                if (_mapSelectAble.ContainsKey(pCanvas) == false)
                {
                    List <SelectAble_OriginState> listSelectAbleNew = new List <SelectAble_OriginState>();
                    _mapSelectAble.Add(pCanvas, listSelectAbleNew);

                    Selectable[] arrSelectAble = pCanvas.gameObject.GetComponentsInChildren <Selectable>(true);
                    for (int i = 0; i < arrSelectAble.Length; i++)
                    {
                        listSelectAbleNew.Add(new SelectAble_OriginState(arrSelectAble[i]));
                    }
                }


                List <SelectAble_OriginState> listSelectAble = _mapSelectAble[pCanvas];

                if ((eDebugFlags & EDebugLevelFlags.Detail) != 0)
                {
                    for (int i = 0; i < listSelectAble.Count; i++)
                    {
                        if (listSelectAble[i].pSelectAble != null)
                        {
                            listSelectAble[i].pSelectAble.enabled = false;
                            Debug.Log($"{UIDebug.LogFormat(EDebugLevelFlags.ManagerLogic)}" + nameof(Lock_AllInput) + " Canvas : " + pCanvas.gameObject.name + " - " + listSelectAble[i].pSelectAble.name + " Enable False", listSelectAble[i].pSelectAble);
                        }
                    }
                }
                else
                {
                    for (int i = 0; i < listSelectAble.Count; i++)
                    {
                        if (listSelectAble[i].pSelectAble != null)
                        {
                            listSelectAble[i].pSelectAble.enabled = false;
                        }
                    }
                }

                if ((eDebugFlags & EDebugLevelFlags.ManagerLogic) != 0)
                {
                    Debug.Log($"{UIDebug.LogFormat(EDebugLevelFlags.ManagerLogic)}{nameof(Lock_AllInput)} Finish Canvas : {pCanvas.GetObjectName_Safe()} + {nameof(Execute_LogicCoroutine)}");
                }

                yield break;
            }
            public IEnumerator Execute_LogicCoroutine(MonoBehaviour pManager, ICanvas pCanvas, EDebugLevelFlags eDebugFlags)
            {
                if (pCanvas.IsNull())
                {
                    yield break;
                }

                pCanvas.transform.SetAsLastSibling();

                yield break;
            }
            public void Execute_UndoLogic_NotCoroutine(MonoBehaviour pManager, ICanvas pCanvas, EDebugLevelFlags eDebugFlags)
            {
                if ((eDebugFlags & EDebugLevelFlags.ManagerLogic) != 0)
                {
                    Debug.Log(nameof(Lock_AllInput) + " " + nameof(Execute_UndoLogic_Coroutine) + " 1");
                }

                if (_OnCheck_IsExecute(pCanvas) == false)
                {
                    return;
                }

                if (pCanvas.IsNull())
                {
                    return;
                }

                if (_mapSelectAble.ContainsKey(pCanvas) == false)
                {
                    return;
                }

                List <SelectAble_OriginState> listSelectAble = _mapSelectAble[pCanvas];

                _mapSelectAble.Remove(pCanvas);
                if (listSelectAble == null)
                {
                    return;
                }

                if ((eDebugFlags & EDebugLevelFlags.ManagerLogic) != 0)
                {
                    for (int i = 0; i < listSelectAble.Count; i++)
                    {
                        if (listSelectAble[i].pSelectAble != null)
                        {
                            Debug.Log(nameof(Lock_AllInput) + " Canvas : " + pCanvas.gameObject.name + " - " + listSelectAble[i].pSelectAble.name + " Enable : " + listSelectAble[i].bEnableOrigin, listSelectAble[i].pSelectAble);
                            listSelectAble[i].pSelectAble.enabled = listSelectAble[i].bEnableOrigin;
                        }
                    }
                }
                else
                {
                    for (int i = 0; i < listSelectAble.Count; i++)
                    {
                        if (listSelectAble[i].pSelectAble != null)
                        {
                            listSelectAble[i].pSelectAble.enabled = listSelectAble[i].bEnableOrigin;
                        }
                    }
                }

                if ((eDebugFlags & EDebugLevelFlags.ManagerLogic) != 0)
                {
                    Debug.Log(nameof(Lock_AllInput) + " " + nameof(Execute_UndoLogic_Coroutine) + " 2");
                }
            }
            public IEnumerator Execute_LogicCoroutine(MonoBehaviour pManager, ICanvas pCanvas, EDebugLevelFlags eDebugFlags)
            {
                Canvas_ForLogicTest pTest = pCanvas as Canvas_ForLogicTest;

                pTest.DoSetText(_strTestText);

                yield break;
            }