/*******************************************************************************
* 版本声明:v1.0.0
* 类 名 称:EditorTools
* 创建日期:2019-11-29 17:12:52
* 作者名称:末零
* 功能描述:扩展编辑器工具
******************************************************************************/
using System;
using UnityEditor;
using UnityEngine;
//%代表ctrl #代表shift &代表alt
namespace LastZero.Editor
{
/// <summary>
/// 扩展编辑器工具
/// </summary>
public class EditorTools
{
/// <summary>
/// 帮助
/// </summary>
[MenuItem("EditorTools/Help _F1", false, 1)]
public static void Help()
{
EditorWindow.GetWindow(typeof(HelpWindow));
}
/// <summary>
/// 刷新并运行
/// </summary>
[MenuItem("EditorTools/Refresh Add Play _F5", false, 1)]
public static void RefreshAddPlay()
{
AssetDatabase.Refresh();
EditorApplication.ExecuteMenuItem("Edit/Play");
}
/// <summary>
/// 修改显隐状态
/// </summary>
[MenuItem("EditorTools/Change Active &A")]
static void ChangeActive()
{
for (int i = 0; i < Selection.gameObjects.Length; i++)
{
Selection.gameObjects[i].SetActive(!Selection.gameObjects[i].activeSelf);
}
}
/// <summary>
/// 删除所有Miss的脚本
/// </summary>
[MenuItem("EditorTools/Delete Missing Scripts &D")]
static void CleanupMissingScript()
{
GameObject[] pAllObjects = (GameObject[])Resources.FindObjectsOfTypeAll(typeof(GameObject));
int r;
int j;
try
{
for (int i = 0; i < pAllObjects.Length; i++)
{
if (pAllObjects[i].hideFlags == HideFlags.None)//HideFlags.None 获取Hierarchy面板所有Object
{
var components = pAllObjects[i].GetComponents<Component>();
var serializedObject = new SerializedObject(pAllObjects[i]);
var prop = serializedObject.FindProperty("m_Component");
r = 0;
for (j = 0; j < components.Length; j++)
{
if (components[j] == null)
{
prop.DeleteArrayElementAtIndex(j - r);
r++;
}
}
serializedObject.ApplyModifiedProperties();
}
}
Debug.Log("Delect MissingScripts Finished");
}
catch(Exception e)
{
Debug.Log(e);
}
}
/// <summary>
/// 修改TimeScale
/// </summary>
[MenuItem("EditorTools/Change TimeScale &T")]
static void ChangeTimeScale()
{
Time.timeScale = Time.timeScale == 1 ? 2 : Time.timeScale == 2 ? 10 : 1;
}
}
/// <summary>
/// 帮助窗口
/// </summary>
public class HelpWindow : EditorWindow
{
HelpWindow()
{
this.titleContent = new GUIContent("Help");
}
private void OnGUI()
{
GUILayout.BeginVertical();
GUILayout.Space(10);
GUI.skin.label.fontSize = 12;
GUI.skin.label.alignment = TextAnchor.UpperLeft;
GUILayout.Label(
"F1 帮助\n" +
"F5 刷新并运行\n" +
"Alt+A 物体显隐\n" +
"Alt+D 删除MissingScripts\n" +
"Alt+T 修改TimeScale(x1,x2,x10)\n"
);
}
}
}
未完待续。。。