public IEnumerator Show()
        {
            if (in_progress || Controller != null)
            {
                yield break;
            }
            in_progress = true;
            if (prefab == null)
            {
                foreach (var _ in bundle.LoadAsset(prefab_name))
                {
                    yield return(null);
                }
                prefab = bundle.GetAsset(prefab_name);
                if (prefab == null)
                {
                    goto end;
                }
            }
            var obj = Object.Instantiate(prefab);

            Controller = obj.GetComponent <T>();
            obj.SetActive(false);
            if (Controller == null)
            {
                Utils.Log("{} does not have {} component: {}",
                          obj, typeof(T).Name, obj.GetComponents <MonoBehaviour>());
                Object.Destroy(obj);
                goto end;
            }
            obj.transform.SetParent(DialogCanvasUtil.DialogCanvasRect);
            init_controller();
            obj.SetActive(true);
            if (!initialized)
            {
                obj.transform.localPosition = new Vector3(-Screen.width, 0);
                Rect rect = new Rect();
                while (rect.width.Equals(0))
                {
                    rect = (obj.transform as RectTransform).rect;
                    yield return(null);
                }
                pos         = new Vector3(-rect.width / 2, rect.height / 2);
                initialized = true;
            }
            obj.transform.localPosition = pos;
end:
            in_progress = false;
        }
        public IEnumerator Show()
        {
            if (in_progress || Controller != null)
            {
                yield break;
            }
            in_progress = true;
            if (prefab == null)
            {
                foreach (var _ in bundle.LoadAsset(prefab_name))
                {
                    yield return(null);
                }
                prefab = bundle.GetAsset(prefab_name);
                if (prefab == null)
                {
                    goto end;
                }
            }
            var obj = Object.Instantiate(prefab, DialogCanvasUtil.DialogCanvasRect);

            Controller = obj.GetComponent <T>();
            obj.SetActive(false);
            if (Controller == null)
            {
                Utils.Log("{} does not have {} component: {}",
                          obj,
                          typeof(T).Name,
                          obj.GetComponents <MonoBehaviour>());
                Object.Destroy(obj);
                goto end;
            }
            init_controller();
            GameEvents.onGamePause.Add(onGamePause);
            GameEvents.onGameUnpause.Add(onGameUnpause);
            obj.SetActive(true);
            if (!initialized)
            {
                var rectT = (RectTransform)obj.transform;
                var rect  = rectT.rect;
                var pivot = rectT.pivot;
                pos         = new Vector3(-rect.width * pivot.x, rect.height * pivot.y);
                initialized = true;
            }
            obj.transform.localPosition = pos;
end:
            in_progress = false;
        }
Exemple #3
0
        private IEnumerator Show()
        {
            if (in_progress || Controller != null || bundle.BundleNotFound || prefabNotFound)
            {
                yield break;
            }
            in_progress = true;
            if (prefab == null)
            {
                if (standalone)
                {
                    this.LoadState();
                }
                foreach (var _ in bundle.LoadAsset(prefab_name))
                {
                    yield return(null);
                }
                prefab = bundle.GetAsset(prefab_name);
                if (prefab == null)
                {
                    Utils.Error($"Prefab {prefab_name} is not found in {bundle}");
                    prefabNotFound = true;
                    goto end;
                }
            }
            var obj = Object.Instantiate(prefab, DialogCanvasUtil.DialogCanvasRect);

            Controller = obj.GetComponent <T>();
            obj.SetActive(false);
            if (Controller == null)
            {
                Utils.Error("{} does not have {} component: {}",
                            obj,
                            typeof(T).Name,
                            obj.GetComponents <MonoBehaviour>());
                Object.Destroy(obj);
                goto end;
            }
            init_controller();
            GameEvents.onGamePause.Add(onGamePause);
            GameEvents.onGameUnpause.Add(onGameUnpause);
            obj.transform.localPosition = pos;
            initialized = true;
            obj.SetActive(true);
end:
            in_progress = false;
        }