/// <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); } }
/// <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); }