public static FocusWindowItem getItem(GameObject go) { FocusWindowItem item = go.GetComponent <FocusWindowItem>(); if (item == null) { item = go.AddComponent <FocusWindowItem>(); } return(item); }
/// <summary> /// 设置对象的激活状态 /// </summary> /// <param name="go">要设置的对象</param> /// <param name="parentTrs">要挂载到的父节点</param> /// <param name="isFocusOn">是否为焦点</param> /// <param name="layerOrder">当前go对象在orderlist的索引</param> private void setFocusOnState(GameObject go, Transform parentTrs, bool isFocusOn, int layerOrder) { go.SetActive(false); go.transform.parent = parentTrs; go.SetActive(true); //打开关闭的对象,让对象在新的panel下重新渲染/ GameObject colliderGO = go.transform.Find("titleSprite/FocusCollider").gameObject; UIEventListener.Get(colliderGO).onClick = overlayOnClick; colliderGO.GetComponent <Collider>().enabled = !isFocusOn; //如果是焦点窗口,就关闭collider,不是就打开collider/ if (isFocusOn) { FocusWindowItem.getItem(go).init(itemEnable, itemDisable, itemDestroy); } Vector3 pos = go.transform.localPosition; go.transform.localPosition = new Vector3(pos.x, pos.y, -500f * (layerOrder + 1)); }
/// <summary> /// FocusWindowItem对象被销毁时执行的方法 /// </summary> private void itemDestroy() { toReorder = false; item = null; StopCoroutine(waitBeforeReorder()); }
/// <summary> /// 进入不激活状态时执行 /// </summary> //void OnDisable() //{ // Debug.Log("关闭所有协程"); // StopAllCoroutines(); //} //void OnApplicationQuit() //{ // StopAllCoroutines(); //} /// <summary> /// FocusWindowItem对象激活时的执行方法 /// </summary> /// <param name="obj"></param> private void itemEnable(FocusWindowItem obj) { toReorder = false; item = obj; }
/// <summary> /// 窗口隐藏时执行的方法 /// </summary> /// <param name="obj"></param> private void itemDisable(FocusWindowItem obj) { toReorder = true; StartCoroutine(waitBeforeReorder()); }