Unity編輯器案列

转载:http://mp.weixin.qq.com/s/-zvUnISuugjaLwW2i0G3Ig
Unity最强大的地方之一是它扩展性非常强的编辑器。Unite Europe 2016上有一个视频专门讲编辑器编程的:这里大概记录一下里面的关键点。
  场景一
  关注点:
  1、绘制重要区域,Gizmos.DrawXXX
  2、OnDrawGizmos和OnDrawGizmosSelected回调函数
  3、点击Gizmos按钮就可以在Game视图也看到线框了

Unity編輯器案列_第1张图片

Unity編輯器案列_第2张图片

   场景二
  关注点:
  组织面板上的参数,添加滑动条、Header、空白等
Unity編輯器案列_第3张图片

Unity編輯器案列_第4张图片

  注意到上面面板的最小面有个Camera Height,调节它可以改变摄像机的高度。这个改变是可以发生在编辑器模式下的,而且也不需要脚本添加ExecuteInEditor。这是通过实现自定义的Editor脚本来实现的:
Unity編輯器案列_第5张图片

   场景三
  关注点:
  1、自定义绘制List对象
  2、使用serializedObject来修改参数的话Unity会自动有各种帮助函数,例如自动添加Undo功能
  3、如果直接修改参数的话,需要使用EditorUtility.SetDirty来告诉Unity需要保存数据
  4、BeginChangeCheck()和EndChangeCheck()会检测它们之间的GUI有没有被修改,如果修改了的话可以据此修改参数
  5、Undo.RecordObject可以为下一步修改添加Undo/Redo
  6、EditorUtility.DisplayDialog可以打开内置对话框
[图片上传中。。。(6)]
  1、首先在面板上隐藏默认的List绘制方法,使用HideInInspector隐藏属性:
Unity編輯器案列_第6张图片

  2、为了让PistonState可以显示在面板上,需要序列化PistonState:
Unity編輯器案列_第7张图片

  3、实现自定义的绘制方程:
Unity編輯器案列_第8张图片

  DrawDefaultInspector:先绘制默认的,DrawStatesInspector:自定义绘制面板函数。
  4、DrawState函数:
Unity編輯器案列_第9张图片

   场景四
  关注点:
  实现了一个可以在编辑器状态下预览效果的编辑器窗口
Unity編輯器案列_第10张图片

Unity編輯器案列_第11张图片

  为了在编辑器状态下可以查看到cube的运动,我们还需要实现OnDrawGizmos来绘制一些线框表示运动。原理就是使用PreviewTime.Time来控制运动。
   场景五
  关注点:
  在Scene视图中,鼠标的位置绘制特定的Handle
Unity編輯器案列_第12张图片

Unity編輯器案列_第13张图片

   场景六
  关注点:
  在Scene视图绘制自定义的工具条
Unity編輯器案列_第14张图片

Unity編輯器案列_第15张图片

   场景七
  关注点:
  1、可以在场景六的基础上,点击相应按钮后增加或删除Cube
  2、新的编辑器脚本逻辑和场景七类似,重点在于回调函数OnSceneGUI:
[图片上传中。。。(17)]
   场景八
  关注点:
  使用Scriptable Object把一些Prefab预览在Scene视图上
Unity編輯器案列_第16张图片

  Scriptable Object是一个相当于自定义Assets对象的类。下面是LevelBlocks的定义。它包含了一个LevelBlockData的数组来存储可选的Prefab对象。

Unity編輯器案列_第17张图片

  我们之后就可以在Hierency视图创建一个LevelBlock资源,Editor类则会加载这个资源来得到相应的数据。

Unity編輯器案列_第18张图片
6G%5JU`U$}3{$XK@}I9S%Q8.png

你可能感兴趣的:(Unity編輯器案列)