EditorUtility
Editor 实用程序函数
EditorApplication
主应用程序类。
常用API示例
using UnityEngine;
using UnityEditor;
using System.Threading;
using System.IO;
public class UtilTest : EditorWindow
{
public float secs = 5f;
[MenuItem("Tools/UtilTest")]
static void Init()
{
var window = GetWindow(typeof(UtilTest));
window.Show();
}
void OnGUI()
{
secs = EditorGUILayout.Slider("Time to wait:", secs, 1.0f, 20.0f);
if (GUILayout.Button("Display bar"))
{
var step = 0.1f;
for (float t = 0; t < secs; t += step)
{
//显示进度框
EditorUtility.DisplayProgressBar("Simple Progress Bar", "Doing some work...", t / secs);
Thread.Sleep((int)(step * 1000.0f));
}
//清理进度框
EditorUtility.ClearProgressBar();
}
if (GUILayout.Button("Dialog"))
{
Transform[] transforms = Selection.GetTransforms(SelectionMode.Deep |
SelectionMode.ExcludePrefab | SelectionMode.Editable);
//显示对话框
if (transforms.Length > 0 &&
EditorUtility.DisplayDialog("Place Selection On Surface?",
"Are you sure you want to place " + transforms.Length
+ " on the surface?", "Place", "Do Not Place"))
{
Undo.RecordObjects(transforms, "Place Selection On Surface");
foreach (Transform transform in transforms)
{
RaycastHit hit;
if (Physics.Raycast(transform.position, -Vector3.up, out hit))
{
transform.position = hit.point;
Vector3 randomized = Random.onUnitSphere;
randomized = new Vector3(randomized.x, 0F, randomized.z);
transform.rotation = Quaternion.LookRotation(randomized, hit.normal);
}
}
}
}
if (GUILayout.Button("OpenFile"))
{
Texture2D texture = Selection.activeObject as Texture2D;
if (texture == null)
{
EditorUtility.DisplayDialog("Select Texture", "You must select a texture first!", "OK");
return;
}
//打开文件夹
string path = EditorUtility.OpenFilePanel("Overwrite with png", "", "png");
if (path.Length != 0)
{
var fileContent = File.ReadAllBytes(path);
texture.LoadImage(fileContent);
}
}
if (GUILayout.Button("EnterPlaymode"))
{
//播放编辑器
EditorApplication.EnterPlaymode();
}
if (GUILayout.Button("ExitPlaymode"))
{
//停止编辑器
EditorApplication.ExitPlaymode();
}
if (GUILayout.Button("Step"))
{
//逐帧播放编辑器
EditorApplication.Step();
}
}
}
编辑器免费课程:
独立游戏《Unity打造关卡编辑器》Unity 独立游戏 关卡编辑器https://bycwedu.vipwan.cn/promotion_channels/72762192