public void HideMenu()
    {
        if (_taskWidget != null)
        {
            _taskWidget.ReturnToPool();
        }
        _taskWidget = null;
        _task       = null;
        gameObject.SetActive(false); // Todo: run window hide animation

        if (TaskManager.instance != null)
        {
            TaskManager.instance.OnTaskChangedUnscribe(OnTaskChanged);
        }
    }
    public void ShowTask(ITask task)
    {
        HideTask();

        if (_taskInfos.TryGetValue(task, out TaskShortInfoWidget shortWidget))
        {
            _selectedIndex = shortWidget.index;
        }

        PoolSettingsSO taskWidgetPoolSet = task.GetTaskWidgetPoolSet();

        _taskWidget = taskWidgetPoolSet.GetNewObject(_taskWidgetContainer) as BasicTaskWidget;
        _taskWidget.TaskUpdate(task);

        _taskWidget.gameObject.SetActive(true); // Todo: run widget show animation
    }
    public void ShowMenu(ITask task)
    {
        if (_taskWidget != null)
        {
            _taskWidget.ReturnToPool();
        }

        _task = task;

        PoolSettingsSO taskWidgetPoolSet = task.GetTaskWidgetPoolSet();

        _taskWidget = taskWidgetPoolSet.GetNewObject(_taskWidgetContainer) as BasicTaskWidget;
        _taskWidget.TaskUpdate(task);

        TaskManager.instance.OnTaskChangedSubscribe(OnTaskChanged);

        gameObject.SetActive(true);             // Todo: run window show animation
        _taskWidget.gameObject.SetActive(true); // Todo: run widget show animation
    }