NGUI Sprite 和 Label 改变Layer 或父物体后 未更新深度问题
using UnityEngine; using System.Collections.Generic; /// <summary> /// Sprite is a textured element in the UI hierarchy. /// </summary> /// public partial class UISprite : UIBasicSprite { public void OnInitNew() { OnInit(); } }
/// <summary> /// Auto-upgrade. /// </summary> protected override void OnInit () { Debug.Log("Chu SHiHua"); if (!mFillCenter) { mFillCenter = true; centerType = AdvancedType.Invisible; #if UNITY_EDITOR NGUITools.SetDirty(this); #endif } base.OnInit(); }
public void OnInit2() { OnInit(); }
递归
void WhileFindChild(Transform transform) { Transform temp = transform; Debug.Log(""+temp.name); if (transform.GetComponent<UISprite>()) { transform.GetComponent<UISprite>().OnInit2(); } if (transform.GetComponent<UILabel>()) { transform.GetComponent<UILabel>().OnInit2(); } if (temp.childCount > 0) { foreach (Transform item in temp) { UILabel label = item.GetComponent<UILabel>(); if (label) { label.OnInit2(); } UISprite sprite = item.GetComponent<UISprite>(); if (sprite) { sprite.OnInit2(); } temp = item; WhileFindChild(temp); } } }