FairyGUI UIPanel看不到顯示UI的Mesh和貼圖的問題
阿新 • • 發佈:2019-02-08
初學FairyGUI,看例子,FairyGUI在Editor中顯示UI的時候是先選擇Package名,在選擇Component名,然後在場景裡面就可以顯示包裡面的元件,這時就有一個問題,底層到底做了什麼使得UIPanel能夠顯示Mesh和貼圖?
看了FairyGUI原始碼,發現在編輯器模式下,FairyGUI在UIPanel的程式碼裡做了如下事情:
void CreateUI_EditMode() { if (!EMRenderSupport.packageListReady || UIPackage.GetByName(packageName) == null) return; #if UNITY_5 UIObjectFactory.packageItemExtensions.Clear(); UIObjectFactory.loaderConstructor = null; DisplayOptions.SetEditModeHideFlags(); _ui = (GComponent)UIPackage.CreateObject(packageName, componentName); if (_ui != null) { _ui.displayObject.gameObject.hideFlags |= HideFlags.HideInHierarchy; _ui.gameObjectName = "UI(AutoGenerated)"; .... } }
這裡命名了一個GO叫UI(AutoGenerated)然後通過hideFlags來控制改物體為隱藏。剛開始沒看FairyGUI原始碼的時候覺得好神奇,這裡明明什麼都沒有,在場景裡面卻可以顯示該UI的Mesh和貼圖。如果把設定hideFlags那一行去掉可以看到,場景裡面UIPanel物體下面有一個物體名字叫UI(AutoGenerated),只是通過設定改flag設定為了隱藏而已。所以不必神奇和驚慌。