通过脚本添加视口

版权声明:本文为博主原创文章,未经博主允许不得转载。 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 });
    }
}

猜你喜欢

转载自blog.csdn.net/mseol/article/details/82936994