You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
135 lines
4.1 KiB
135 lines
4.1 KiB
using System.Collections.Generic; |
|
using UnityEngine; |
|
using UnityEditor; |
|
using FairyGUI; |
|
|
|
namespace FairyGUIEditor |
|
{ |
|
/// <summary> |
|
/// |
|
/// </summary> |
|
public class EditorToolSet |
|
{ |
|
public static GUIContent[] packagesPopupContents; |
|
|
|
static bool _loaded; |
|
|
|
[InitializeOnLoadMethod] |
|
static void Startup() |
|
{ |
|
EditorApplication.update += EditorApplication_Update; |
|
} |
|
|
|
[MenuItem("GameObject/FairyGUI/UI Panel", false, 0)] |
|
static void CreatePanel() |
|
{ |
|
EditorApplication.update -= EditorApplication_Update; |
|
EditorApplication.update += EditorApplication_Update; |
|
|
|
StageCamera.CheckMainCamera(); |
|
|
|
GameObject panelObject = new GameObject("UIPanel"); |
|
if (Selection.activeGameObject != null) |
|
{ |
|
panelObject.transform.parent = Selection.activeGameObject.transform; |
|
panelObject.layer = Selection.activeGameObject.layer; |
|
} |
|
else |
|
{ |
|
int layer = LayerMask.NameToLayer(StageCamera.LayerName); |
|
panelObject.layer = layer; |
|
} |
|
panelObject.AddComponent<FairyGUI.UIPanel>(); |
|
Selection.objects = new Object[] { panelObject }; |
|
} |
|
|
|
[MenuItem("GameObject/FairyGUI/UI Camera", false, 0)] |
|
static void CreateCamera() |
|
{ |
|
StageCamera.CheckMainCamera(); |
|
Selection.objects = new Object[] { StageCamera.main.gameObject }; |
|
} |
|
|
|
[MenuItem("Window/FairyGUI - Refresh Packages And Panels")] |
|
static void RefreshPanels() |
|
{ |
|
ReloadPackages(); |
|
} |
|
|
|
static void EditorApplication_Update() |
|
{ |
|
if (Application.isPlaying) |
|
return; |
|
|
|
if (_loaded || !EMRenderSupport.hasTarget) |
|
return; |
|
|
|
LoadPackages(); |
|
} |
|
|
|
public static void ReloadPackages() |
|
{ |
|
if (!Application.isPlaying) |
|
{ |
|
_loaded = false; |
|
LoadPackages(); |
|
Debug.Log("FairyGUI - Refresh Packages And Panels complete."); |
|
} |
|
else |
|
EditorUtility.DisplayDialog("FairyGUI", "Cannot run in play mode.", "OK"); |
|
} |
|
|
|
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(); |
|
} |
|
|
|
static int CompareUIPackage(UIPackage u1, UIPackage u2) |
|
{ |
|
return u1.name.CompareTo(u2.name); |
|
} |
|
} |
|
|
|
}
|
|
|