コード例 #1
0
    /// <summary>
    /// Initializes a new instance of the <see cref="UIScreenController"/> class.
    /// </summary>
    /// <param name="uniqueId">Unique identifier.</param>
    /// <param name="prefab">Prefab.</param>
    /// <param name="currentObject">Current object.</param>
    /// <param name="position">Position.</param>
    public UIScreenController(Service manager, string uniqueId, UIScreenManager prefab, UIScreenManager currentObject, Vector3 position)
    {
        myManager = manager;

        uiUniqueId     = uniqueId;
        uiScreenPrefab = prefab;
        if (manager.IsLoggedService())
        {
            Debug.LogWarningFormat("Setting screen object to [{0}]", currentObject);
        }
        uiScreenObject   = currentObject;
        uiScreenPosition = position;
        isActive         = uiScreenObject != null;
        if (isActive)
        {
            uiScreenObject.uniqueScreenId = uiUniqueId;
            uiScreenObject.SetPosition(uiScreenPosition);
        }
    }
コード例 #2
0
    /// <summary>
    /// Switch the specified screen.
    /// </summary>
    /// <param name="enable">If set to <c>true</c> enable.</param>
    /// <param name="doNotDestroy">If set to <c>true</c> do not destroy on deactivation.</param>
    public bool Switch(bool enable, bool doNotDestroy = false, bool forceDestroy = false)
    {
        //Debug.Log("Switching ["+_uiUniqueId+"] to ["+enable+"] GralNotDestroy["+doNotDestroy+"] PartiNotDestroy["+_doNotDestroyOnDeactivation+"]");
        bool result = false;

        if (enable)
        {
            if (!isActive)
            {
                //Debug.Log("UIScreenObj["+(_uiScreenObject == null)+"] uiPrefab["+(_uiScreenPrefab != null)+"]");
                if (uiScreenObject == null && uiScreenPrefab != null)
                {
                    if (Application.isPlaying)
                    {
                        //Debug.LogWarning("Setting screen object to new instantiate");
                        // Create uiScreen
                        uiScreenObject = GameObject.Instantiate <UIScreenManager>(uiScreenPrefab);
                    }
                }
                if (uiScreenObject != null)
                {
                    // Init uiScreen
                    uiScreenObject.SetPosition(uiScreenPosition);
                    uiScreenObject.Init(OnScreenStatusChanged);
                    result = true;
                }
            }
            else
            {
                //just update
                if (uiScreenObject != null)
                {
                    uiScreenObject.UpdateScreen(OnScreenUpdated);
                }
            }
        }
        else
        {
            if (uiScreenObject != null)
            {
                if (uiScreenObject.mustShowDebugInfo)
                {
                    Debug.LogFormat("Switch OFF [{0}] UIScreenObj[{1}] uiPrefab[{2}] destroy[{3}] forceDestroy[{4}]",
                                    uiUniqueId, (uiScreenObject != null), (uiScreenPrefab != null), !doNotDestroy, forceDestroy);
                }
                if (isActive)
                {
                    //Deactivate uiScreen
                    uiScreenObject.Deactivate(OnScreenStatusChanged);
                }

                if (uiScreenPrefab != null && (!doNotDestroy || forceDestroy))
                {
                    //Destroy uiScreen
                    if (Application.isPlaying)
                    {
                        if (!doNotDestroyOnDeactivation || forceDestroy)
                        {
                            GameObject.Destroy(uiScreenObject.CachedGameObject);
                            //Debug.LogWarning("Setting screen object to null");
                            uiScreenObject = null;
                        }
                    }
                    else
                    {
                        GameObject.DestroyImmediate(uiScreenObject.CachedGameObject);
                        //Debug.LogWarning("Setting screen object to null");
                        uiScreenObject = null;
                    }
                }
                result = isActive;
            }
        }
        isActive = enable;
        return(result);
    }