Beispiel #1
0
    private void HideInternal(string name, DialogTransitionDelegate onComplete, bool Remove)
    {
        //Debug.Log("==>  Hide" + name + "  " + Time.time);
        if (!_dialogs.ContainsKey(name) || !_canvases[_dialogs[name]].Dialogs.ContainsKey(name))
        {
            HandleHideFail(name, onComplete);
            return;
        }

        DialogController dc = null;

        _canvases[_dialogs[name]].Dialogs.TryGetValue(name, out dc);
        if (dc == null)
        {
            HandleHideFail(name, onComplete);
            return;
        }

        if (dc.IsEntering)        // If in the process of entering, Hide when done.
        {
            Debug.LogWarning("Cannot hide " + name + " yet, Entered() has not been called!");
            dc.EnterCompleteActions.Add((bool s) =>
            {
                dc.IsEntering = false;
                Hide(name, onComplete);
            });
            return;
        }
        if (dc.IsExiting)
        {
            Debug.LogWarning("Dialog " + name + " is already exiting");
            dc.ExitCompleteActions.Add(onComplete);
            return;
        }
        if (dc.IsExited)
        {
            Debug.Log("Dialog " + name + " is already inactive");
            if (Remove)
            {
                dc.Terminate();
            }
            if (onComplete != null)
            {
                onComplete(false);
            }
            return;
        }

        if (Remove)
        {
            //Managers.AssetBundleHelperManager.UnloadAssetFromMap<GameObject>(name);
            _loadedDialogs.Remove(name);
        }

        dc.ExitCompleteActions.Add(onComplete);
        dc.BaseExit(Remove);
    }