143 lines
4.3 KiB
C#
143 lines
4.3 KiB
C#
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;
|
|
}
|
|
|
|
[RuntimeInitializeOnLoadMethod]
|
|
static void InitializeOnLoad()
|
|
{
|
|
_loaded = false;
|
|
}
|
|
|
|
[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();
|
|
UIPackage.branch = null;
|
|
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);
|
|
}
|
|
}
|
|
|
|
}
|