예제 #1
0
        static List <Info> CreateInfo(string path)
        {
            List <Info> infos = new List <Info>();

            try
            {
                var pkg   = UIPackage.AddPackage(path);
                var items = pkg.GetItems();
                foreach (var item in items)
                {
                    GComponent gcomp = pkg.CreateObject(item.name).asCom;
                    Info       info  = new Info();
                    info.ClassName = string.Format("UI.{0}.{1}", pkg.name, item.name);
                    CollectUIElements(item.name, gcomp, info);
                    if (info.Fields.Count > 0)
                    {
                        infos.Add(info);
                    }
                }
            }
            catch (Exception e)
            {
                UIPackage.RemoveAllPackages();
                Debug.LogError(e.Message + "\n" + e.StackTrace);
            }
            return(infos);
        }
예제 #2
0
        public static void LoadPackages()
        {
            if (Application.isPlaying || _loaded)
            {
                return;
            }

#if !UNITY_5
            EditorApplication.update -= EditorApplication_Update;
            EditorApplication.update += EditorApplication_Update;
#endif
            _loaded = true;

            UIPackage.RemoveAllPackages();
            FontManager.Clear();
            NTexture.DisposeEmpty();

            string[] ids = AssetDatabase.FindAssets("@sprites t:textAsset");
            int      cnt = ids.Length;
            for (int i = 0; i < cnt; i++)
            {
                string assetPath = AssetDatabase.GUIDToAssetPath(ids[i]);
                int    pos       = assetPath.LastIndexOf("@");
                if (pos == -1)
                {
                    continue;
                }

                assetPath = assetPath.Substring(0, pos);
                if (AssetDatabase.AssetPathToGUID(assetPath) != null)
                {
                    UIPackage.AddPackage(assetPath,
                                         (string name, string extension, System.Type type) =>
                    {
                        return(AssetDatabase.LoadAssetAtPath(name + extension, type));
                    }
                                         );
                }
            }

            List <UIPackage> pkgs = UIPackage.GetPackages();
            pkgs.Sort(CompareUIPackage);

            cnt = pkgs.Count;
            packagesPopupContents = new GUIContent[cnt + 1];
            for (int i = 0; i < cnt; i++)
            {
                packagesPopupContents[i] = new GUIContent(pkgs[i].name);
            }
            packagesPopupContents[cnt] = new GUIContent("Please Select");

            UIConfig.ClearResourceRefs();
            UIConfig[] configs = GameObject.FindObjectsOfType <UIConfig>();
            foreach (UIConfig config in configs)
            {
                config.Load();
            }

            EMRenderSupport.Reload();
        }
예제 #3
0
        public static void UpdateWindowInformation()
        {
            EditorApplication.ExecuteMenuItem("Window/FairyGUI - Refresh Packages And Panels");
            _fairyGUIConfig.Clear();
            string[] fairyGUIResourcesPaths = Directory.GetFiles(ConstData.UIDataPath,
                                                                 "*_fui.bytes", SearchOption.AllDirectories);
            for (int i = 0; i < fairyGUIResourcesPaths.Length; i++)
            {
                string             resourcesPath      = fairyGUIResourcesPaths[i].Replace("\\", "/");
                string[]           paths              = resourcesPath.Split('/');
                string             packageName        = paths[paths.Length - 1].Substring(0, paths[paths.Length - 1].Length - 10);
                string             windowName         = packageName;
                FairyGUIWindowInfo fairyGuiWindowInfo = new FairyGUIWindowInfo();
                int packagePathStart = resourcesPath.IndexOf("Assets/");
                fairyGuiWindowInfo.packagePath = resourcesPath.Substring(packagePathStart, resourcesPath.IndexOf(paths[paths.Length - 1]) - packagePathStart);
                fairyGuiWindowInfo.packageName = packageName;

                UIPackage.RemoveAllPackages();
                UIPackage.AddPackage(fairyGuiWindowInfo.packagePath + fairyGuiWindowInfo.packageName);
                List <string> list = new List <string>();
                foreach (var v in UIPackage.GetPackageItems(fairyGuiWindowInfo.packageName))
                {
                    if (v.Value.objectType == ObjectType.Component)
                    {
                        list.Add(v.Value.name);
                    }
                }
                fairyGuiWindowInfo.WindowNames = list;
                if (packageName.StartsWith(ConstData.ResPackagePrefix))
                {
                    fairyGuiWindowInfo.fairyGuiWindowType = FairyGUIWindowTypes.Resource;
                }
                else
                {
                    fairyGuiWindowInfo.fairyGuiWindowType = FairyGUIWindowTypes.Window;
                }

                _fairyGUIConfig.Add(fairyGuiWindowInfo);
            }
            if (!Directory.Exists(Application.streamingAssetsPath))
            {
                Directory.CreateDirectory(Application.streamingAssetsPath);
            }
            string bytePath = ConstData.UIConfigPath;

            if (File.Exists(bytePath))
            {
                File.Delete(bytePath);
            }
            using (FileStream fileStream = new FileStream(bytePath, FileMode.Create, FileAccess.Write, FileShare.Write))
            {
                fileStream.Write(Encoding.UTF8.GetBytes(JsonMapper.ToJson(_fairyGUIConfig)), 0, Encoding.UTF8.GetBytes(JsonMapper.ToJson(_fairyGUIConfig)).Length);
            }
            Debug.Log("Update VFairyGUIConfigFile Succeed!");
            UIPackage.RemoveAllPackages();
            AssetDatabase.Refresh();
        }
예제 #4
0
 void OnDestroy()
 {
     GUI.color           = this.color;
     GUI.skin            = this.guiSkin;
     GUI.backgroundColor = this.backgroundColor;
     GUI.contentColor    = this.contentColor;
     UIPackage.RemoveAllPackages();
     OnDispose();
 }
예제 #5
0
        public static void LoadPackages()
        {
            if (Application.isPlaying || _loaded)
            {
                return;
            }

            EditorApplication.update -= EditorApplication_Update;
            EditorApplication.update += EditorApplication_Update;

            _loaded = true;

            UIPackage.RemoveAllPackages();
            FontManager.Clear();
            NTexture.DisposeEmpty();
            UIObjectFactory.Clear();

            string[] ids = AssetDatabase.FindAssets("_fui t:textAsset");
            int      cnt = ids.Length;

            for (int i = 0; i < cnt; i++)
            {
                string assetPath = AssetDatabase.GUIDToAssetPath(ids[i]);
                int    pos       = assetPath.LastIndexOf("_fui");
                if (pos == -1)
                {
                    continue;
                }

                assetPath = assetPath.Substring(0, pos);
                if (AssetDatabase.AssetPathToGUID(assetPath) != null)
                {
                    UIPackage.AddPackage(assetPath,
                                         (string name, string extension, System.Type type, out DestroyMethod destroyMethod) =>
                    {
                        destroyMethod = DestroyMethod.Unload;
                        return(AssetDatabase.LoadAssetAtPath(name + extension, type));
                    }
                                         );
                }
            }

            List <UIPackage> pkgs = UIPackage.GetPackages();

            pkgs.Sort(CompareUIPackage);

            cnt = pkgs.Count;
            packagesPopupContents = new GUIContent[cnt + 1];
            for (int i = 0; i < cnt; i++)
            {
                packagesPopupContents[i] = new GUIContent(pkgs[i].name);
            }
            packagesPopupContents[cnt] = new GUIContent("Please Select");

            EMRenderSupport.Reload();
        }
예제 #6
0
 public void ChangeLanguage(FairyGUI.Utils.XML xML)
 {
     UIPackage.SetStringsSource(xML);
     UIPackage.RemoveAllPackages();
     UIPackage.AddPackage("UI/Res_Main");
     UIPackage.AddPackage("UI/Res_Game");
     UIPackage.AddPackage("UI/Res_Component");
     currentUIManager.MainUIManager();
     audioSourceManager.ChangeBGM(0);
     SceneManager.LoadSceneAsync(0);
 }
예제 #7
0
        public static void UnLoadAllUI()
        {
            List <UIPackage> pkgs = UIPackage.GetPackages();

            if (null != pkgs)
            {
                foreach (UIPackage pkg in pkgs)
                {
                    pkg.UnloadAssets();
                }
            }
            UIPackage.RemoveAllPackages();
        }
예제 #8
0
 public static void UnloadAll()
 {
     foreach (var v in m_pkgDir.Values)
     {
         UnloadUI(v);
     }
     foreach (var v in m_objDir.Keys)
     {
         UnloadObject(v);
     }
     m_objDir.Clear();
     m_pkgDir.Clear();
     m_abDir.Clear();
     UnloadScene(lastSceneName);
     ABLoader.UnloadAll();
     UIPackage.RemoveAllPackages();
     Resources.UnloadUnusedAssets();
 }
예제 #9
0
        public void Clear()
        {
            foreach (KeyValuePair <int, string> luaFormInfo in m_LuaForms)
            {
                IDataTable <DRUIForm> dt  = GameEntry.DataTable.GetDataTable <DRUIForm>();
                string          formGroup = dt.GetDataRow(luaFormInfo.Key).UIGroupName;
                FairyGuiLuaForm luaForm   = GameEntry.UI.GetUIForm(luaFormInfo.Key, formGroup) as FairyGuiLuaForm;
                if (luaForm != null)
                {
                    luaForm.Clear();
                    GameEntry.UI.CloseUIForm(luaForm);
                }
            }

            BoardFormManager.Instance.Clear();

            m_LuaForms.Clear();
            m_UIPackages.Clear();
            UIPackage.RemoveAllPackages();
        }
예제 #10
0
 public void RemoveAllPackage()
 {
     UIPackage.RemoveAllPackages();
 }