版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mseol/article/details/82936994
通过反射获取Unity程序集,编写Editor视窗。没有太多实际意义的小练习,扩展一下可以做成一个方便的编辑器配置工具。
using System;
using System.Reflection;
using UnityEditor;
public class Viewport : Editor
{
[MenuItem("Assets/Add New Viewprot")]
public static void Add()
{
Type gameViewSize = typeof(Editor).Assembly.GetType("UnityEditor.GameViewSize");
Type gameViewSizes = typeof(Editor).Assembly.GetType("UnityEditor.GameViewSizes");
Type gameViewSizeType = typeof(Editor).Assembly.GetType("UnityEditor.GameViewSizeType");
MethodInfo getGroup = gameViewSizes.GetMethod("GetGroup");
Type scriptableSingleton = typeof(ScriptableSingleton<>).MakeGenericType(gameViewSizes);
PropertyInfo scriptableSingletonInstance = scriptableSingleton.GetProperty("instance");
object gameViewSizesInstance = scriptableSingletonInstance.GetValue(null, null);
object group = getGroup.Invoke(gameViewSizesInstance, new object[] { 0 /* = Standalone */});
MethodInfo addCustomSize = getGroup.ReturnType.GetMethod("AddCustomSize");
ConstructorInfo constructor = gameViewSize.GetConstructor(new Type[] { gameViewSizeType, typeof(int), typeof(int), typeof(string) });
// 设置 Type, Width, Height, Label
object newSize = constructor.Invoke(new object[] { 1, 1024, 1024, "MyView" });
addCustomSize.Invoke(group, new object[] { newSize });
}
}