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