zoukankan      html  css  js  c++  java
  • #Unity Editor 工具开发 (二)

    Unity EditorTool Dev Tutorial(二)

    最近,公司项目新开,要笔者写一些给策划用的工具,对Unity有了解的朋友肯定知道Unity的插件工具是十分丰富的,提供的API能让开发者自定义工具。于是作为小白的笔者,也一股脑扎进了工具开发的漩涡中。发现关于Editor的基础教程,在国内非常少,于是,笔者便有了记录学习Editor的想法。本文将持续记录笔者从零搭建工具的所见所闻。

    前言

    笔者也是在学习Editor中,写下的这篇记录,若有对该工具的感兴趣,笔者在Github上更新这个项目,一套正在开发的工具。Ps:没写Readme的

    章节介绍

    这一节,记录的是:建立窗口,为了后续做节点编辑器使用。

    1. 建立窗口

    从上节我们知道了,如何添加一个菜单项,来制作启动项。我们需要利用启动函数,来新建一个窗口出来,作为自定义编辑器的Panel。
    在Editor中,建立窗口,需要使用UnityEditor中的EditorWindow类。
    EditorWindow提供一个静态方法EditorWindow.GetWindow。
    话不多说贴上:官方详细

    示例:

    C#
    using UnityEngine;
    using System.Collections;
    using System;
    using UnityEditor;
    public class Test{
    [MenuItem("Test/Go")]
    static void Go()
    {
    Debug.Log(DateTime.Now.ToLongDateString());
    }
    }

    这是上一章我们用来 打印日期的工具Item菜单,我们接下来将它变成,新建一个窗口的Item菜单。
    
    修改代码如下:
    ```c#```
    using UnityEngine;
    using System.Collections;
    using System;
    using UnityEditor;
    public class Test: EditorWindow
    {
    	//笔者写这个,有单例的习惯
        public static Test Instance;
        [MenuItem("Test/Go")]
        static void Go()
        {
            //Debug.Log(DateTime.Now.ToLongDateString());
    		//窗口初始化
            Instance = GetWindow<Test>();
            Instance.titleContent=new GUIContent("My EditorWindow");
            Instance.maxSize=new Vector2(1800,900);
            Instance.minSize = new Vector2(1000, 500);
        }
    }
    

    效果图:

    笔者使用的方式是最简单的一种,其实这个函数还有更多的参数可以对窗口进行设置。
    public static T GetWindow();
    public static T GetWindow(bool utility);
    public static T GetWindow(bool utility, string title);
    public static T GetWindow(string title);
    public static T GetWindow(string title, bool focus);
    public static T GetWindow(bool utility, string title, bool focus);
    所谓 Utility窗口 默认不设置是false,即正常窗口,若设置成false
    那么窗口就变成了下图这样:熟悉Unity的朋友很容易明白两者的区别,后者是无法自定义折叠位置的。
    而focus,笔者感觉没什么用,官方详细都是说的,若是新建立的窗口,总是focus的。置为false也没用。

    ——To Be Continue

  • 相关阅读:
    CSS 自适应技巧
    实现在线阅读WORD,PDF等文件,JAVA,PHP都可以
    最简单的无线分类,无限树形菜单解决方案
    python生成组织架构图(网络拓扑图、graph.editor拓扑图编辑器)
    python将字符串类型改成日期类型
    python发送邮件
    下载Crypto,CyCrypto,PyCryptodome 报错问题
    UnicodeEncodeError: 'latin-1' codec can't encode characters in position 41-50: ordinal not in range(256)
    pymysql.err.InterfaceError: (0, '')解决办法
    经典三级联动
  • 原文地址:https://www.cnblogs.com/EffectL/p/7655942.html
Copyright © 2011-2022 走看看