1.创建EditorWindow

using UnityEditor;
using UnityEngine; public class ZZEditorWindow : EditorWindow
{
[MenuItem("ZZTest/CreateWindows")]
static void ZZTestCreateWindow()
{
ZZEditorWindow zzWindow = EditorWindow.GetWindow(typeof(ZZEditorWindow), false, "ZZTestWindow", false) as ZZEditorWindow;
zzWindow.Show();
} void OnEnable()
{
Debug.Log("ZZEditorWindow->OnEnable");
}
}
public static EditorWindow GetWindow(System.Type t, [DefaultValue("false")] bool utility, [DefaultValue("null")] string title, [DefaultValue("true")] bool focus)
{
return EditorWindow.GetWindowPrivate(t, utility, title, focus);
}

第一个参数是窗口类型,注意是一定要继承自EditorWindow。

第二个参数是窗口是否浮动,如果是就不能内嵌到unity其他窗口中去,如果不是就能嵌入其他窗口。默认是内嵌

第三个参数是窗口的标题,如果为空的话就采用类的名称来当标题。默认是空

第四个参数是窗口是否是焦点  默认是焦点

2.静态属性

focusedWindow 目前有键盘焦点的EditorWindow。(只读)

mouseOverWindow EditorWindow目前在鼠标光标下。(只读)

3.属性

autoRepaintOnSceneChange    每当场景改变时,窗口是否自动重绘?
maximized              这个窗口最大化了吗?
maxSize               这个窗口的最大尺寸。
minSize              这个窗口的最小尺寸。
position                窗口在屏幕空间中的所需位置。
titleContent            用于绘制EditorWindows标题的GUIContent。
wantsMouseEnterLeaveWindow    检查在此编辑器窗口的GUI中是否接收到MouseEnterWindow和MouseLeaveWindow事件。
wantsMouseMove         检查在此编辑器窗口的GUI中是否收到MouseMove事件。

4.公共方法

BeginWindows      标记所有弹出窗口的开始区域。
Close           关闭编辑器窗口。
EndWindows         关闭一个以EditorWindow.BeginWindows开始的窗口组。
Focus           将键盘焦点移到另一个EditorWindow。
RemoveNotification    停止显示通知消息。
Repaint         使窗口重绘。
SendEvent         发送一个事件到一个窗口。
Show            显示EditorWindow。
ShowAsDropDown      显示具有下拉行为和样式的窗口。
ShowAuxWindow      在辅助窗口中显示编辑器窗口。
ShowNotification      显示通知消息。
ShowPopup           使用弹出式框架显示编辑器窗口。
ShowUtility        将EditorWindow显示为浮动实用程序窗口。

5.静态方法

FocusWindowIfItsOpen   如果它是打开的,重点指定类型的第一个找到的EditorWindow。
GetWindow       返回当前在屏幕上的类型t的第一个EditorWindow。
GetWindowWithRect      返回当前在屏幕上的类型t的第一个EditorWindow。

6.消息

Awake             在新窗口打开时调用。
OnDestroy       调用OnDestroy关闭EditorWindow窗口。
OnFocus                  当窗口获得键盘焦点时调用。
OnGUI                      在这里实现你自己的编辑器GUI。
OnHierarchyChange   当层次结构中的一个对象或一组对象发生变化时发送的消息的处理程序。
OnInspectorUpdate   OnInspectorUpdate以每秒10帧的速度调用,以便检查员有机会进行更新。
OnLostFocus            当窗口失去键盘焦点时调用。
OnProjectChange         每当项目状态发生变化时发送消息的处理程序。
OnSelectionChange    每当选择发生变化时调用。
Update         在所有可见的窗口上每秒调用多次。

7.继承的成员

7.1 属性

hideFlags  该物体应该隐藏,保存在场景中还是用户可以修改?
name      对象的名称

7.2 公共方法

GetInstanceID   返回对象的实例ID。
ToString     返回游戏对象的名称。

7.3 静态方法

Destroy              删除一个游戏对象,组件或资产。
DestroyImmediate        立即销毁obj对象。强烈建议您改用Destroy。
DontDestroyOnLoad     加载新场景时,使对象目标不会自动销毁。
FindObjectOfType        返回Type类型的第一个活动加载的对象。
FindObjectsOfType      返回Type类型的所有活动加载对象的列表。
Instantiate        克隆原始对象并返回克隆。
CreateInstance      创建可脚本化对象的实例。

7.4 操作符

bool       对象是否存在?
operator!=      比较两个对象是否引用不同的对象。
operator==         比较两个对象引用,看它们是否引用同一个对象。

7.5 消息

Awake     这个函数在ScriptableObject脚本启动时被调用。
OnDisable    这个函数在脚本对象超出范围时被调用。
OnEnable     这个函数在对象加载时被调用。

实用的方法:

  private List<string> logsList = new List<string>();
private string logText = "这是一条测试的Log,id=";
private int logIdx = 0;
private Vector2 scrollPos;
private bool isFoldoutLogs = true;
private bool isFoldoutItem = true;
private string configName = "111111"; private void OnGUI()
{
isFoldoutLogs = EditorGUILayout.Foldout(isFoldoutLogs, "提示信息:");
if (isFoldoutLogs)
{
scrollView();
} isFoldoutItem = EditorGUILayout.Foldout(isFoldoutItem, "可以选择的Item:");
if (isFoldoutItem)
{
scrollViewItem();
} button(); configName = EditorGUILayout.TextField("配置名", configName);
} private void scrollView()
{
EditorGUI.indentLevel = 1;
scrollPos = EditorGUILayout.BeginScrollView(scrollPos, GUILayout.ExpandHeight(false));
for (int i = 0; i < logsList.Count; i++)
{
EditorGUILayout.LabelField(logsList[i]);
} GUILayout.EndScrollView();
} private void scrollViewItem()
{
EditorGUI.indentLevel = 1;
scrollPos = EditorGUILayout.BeginScrollView(scrollPos, GUILayout.ExpandHeight(false));
for (int i = 0; i < logsList.Count; i++)
{
EditorGUI.indentLevel = 2;
EditorGUILayout.BeginHorizontal();
EditorGUILayout.LabelField(logsList[i]);
if (GUILayout.Button("删除"))
{
logsList.RemoveAt(i);
continue;
} EditorGUILayout.EndHorizontal();
} GUILayout.EndScrollView();
} private void button()
{
EditorGUILayout.BeginHorizontal();
if (GUILayout.Button("增加Log"))
{
logsList.Add(logText + logIdx);
logIdx++;
} if (GUILayout.Button("删除Log"))
{
logsList.RemoveAt(logsList.Count - 1);
logIdx--;
}
}

  

Unity EditorWindow知识记录的更多相关文章

  1. Unity小知识记录

    //判断运行的平台 Application.platform == RuntimePlatform.Android EditorPrefs 编辑器储存数据 [AddComponentMenu(&quo ...

  2. C#基础知识记录一

    C#基础知识记录一 static void Main(string[] args) { #region 合并运算符的使用(合并运算符??) 更多运算符请参考:https://msdn.microsof ...

  3. DataBase MongoDB基础知识记录

    MongoDB基础知识记录 一.概念: 讲mongdb就必须提一下nosql,因为mongdb是nosql的代表作: NoSQL(Not Only SQL ),意即“不仅仅是SQL” ,指的是非关系型 ...

  4. 使用Microsoft Unity进行日志记录

    需要记录日志的地方包括:进入方法的时候,传参的时候,统计执行时间,方法返回参数的时候,退出语句块的时候,出现异常的时候,等等.先来体验不使用Micirosoft Unity进行日志记录. class ...

  5. MongoDB基础知识记录

    MongoDB基础知识记录 一.概念: 讲mongdb就必须提一下nosql,因为mongdb是nosql的代表作: NoSQL(Not Only SQL ),意即“不仅仅是SQL” ,指的是非关系型 ...

  6. Web前端理论知识记录

      Web前端理论知识记录 Elena· 5 个月前 cookies,sessionStorage和localStorage的区别? sessionStorage用于本地存储一个会话(session) ...

  7. 关于Excel做表小知识记录

    关于Excel做表小知识记录 最近使用Excel做了一系列的报表,觉得这是个很神奇的东西哈哈哈,以前我可是一想到Excel就开始头疼的人...  能用代码或者SQL语句解决的问题绝不会愿意留在Exce ...

  8. Maven知识记录(一)初识Maven私服

    Maven知识记录(一)初识Maven私服 什么是maven私服 私服即私有的仓库.maven把存放文件的地方叫做仓库,我们可以理解成我门家中的储物间.而maven把存放文件的具体位置叫做坐标.我们项 ...

  9. 【Unity基础知识】认识常用的生命周期函数(Awake、Start、Update...)

    一.了解帧的概念 游戏的本质就是一个死循环 每一次循环都会处理游戏逻辑 并 更新一次游戏画面 之所以能看到画面在动 是因为 切换画面速度达到一定速度时 人眼就会认为画面是动态且流畅的 一帧就是执行了一 ...

随机推荐

  1. laravel基础课程---2、Laravel配置文件、路由及php artisan(php artisan是什么)

    laravel基础课程---2.Laravel配置文件.路由及php artisan(php artisan是什么) 一.总结 一句话总结: PHP工具匠:php artisan,其实本身就是一些PH ...

  2. 并不对劲的BJOI2019

    一些感想 现实并非游戏,并不支持反复刷关 猎人和防御工事一起被老山龙摧毁了: 猎人惨死雨中,结云村永无放晴之日: 猎人被狂龙病毒侵蚀,天空山上黑蚀龙泛滥. 好像这才是怪物猎人系列的真实结局呢 day ...

  3. 内存泄漏分析工具tMemMonitor (TMM)使用简介

    C/C++由于灵活.高效的优点一直以来都是主流的程序设计语言之一,但是其内存的分配与释放均由程序员自己管理,当由于疏忽或错误造成程序未能释放不再使用的内存时就会造成内存泄漏.在大型.复杂的应用程序中, ...

  4. Azure Key Vault (1) 入门

    <Windows Azure Platform 系列文章目录> 为什么要使用Azure Key Vault? 我们假设在微软云Azure上有1个场景,在Windows VM里面有1个.NE ...

  5. ubuntu 使用命令行清空回收站

    sudo rm -rf ~/.local/share/Trash/*

  6. SIP呼叫流程典型流程图解及其详细解释

    目录(?)[+]   1.注册流程: 2.注销流程: 3. 基本呼叫建立过程: 4. 会话更改流程: 5. 正常呼叫释放过程: 6. 被叫忙呼叫释放: 7.被叫无应答流程一: 8.被叫无应答流程二: ...

  7. Flutter实战视频-移动电商-13.首页_广告Banner组件制作

    13.首页_广告Banner组件制作 主要是做这个小广告条. 其实就是读取一个图片做一个widget放到这里 使用stlessW快速生成 定义一个变量存放图片的url地址: 这样我们的广告条就写完了 ...

  8. Identity Server 4 原理和实战(完结)_Resource Owner Password Credentials 授权实例

    今天要讲的 用fiddler来监听,昨天的客户端的请求 这是一个post的请求 这是响应的数据 Expores_in超时时间, 今天的内容 在服务端再声明一个client端 wpf的应用的效果图 首先 ...

  9. ASP.NET页面执行顺序

    原文地址:http://blog.csdn.net/a497785609/article/details/4510335 1.对象初始化(OnInit方法) 页面中的控件(包括页面本身)都是在它们最初 ...

  10. E20181216-hm

    intersect vt. (指线条.道路等) 相交,交叉; vt. 横断,横切,横穿;