using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using FairyGUI;
namespace FairyGUIEditor
{
///
///
///
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();
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 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);
}
}
}