1. 程式人生 > >FairyGUI UIPanel看不到顯示UI的Mesh和貼圖的問題

FairyGUI UIPanel看不到顯示UI的Mesh和貼圖的問題

初學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設定為了隱藏而已。所以不必神奇和驚慌。