Unity編輯器案列

作者: 循环渐进123456 | 来源:发表于2017-08-21 09:16 被阅读25次

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



      场景二
      关注点:
      组织面板上的参数,添加滑动条、Header、空白等


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

      场景三
      关注点:
      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隐藏属性:

      2、为了让PistonState可以显示在面板上,需要序列化PistonState:

      3、实现自定义的绘制方程:

      DrawDefaultInspector:先绘制默认的,DrawStatesInspector:自定义绘制面板函数。
      4、DrawState函数:

      场景四
      关注点:
      实现了一个可以在编辑器状态下预览效果的编辑器窗口


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


      场景六
      关注点:
      在Scene视图绘制自定义的工具条


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

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

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

    6G%5JU`U$}3{$XK@}I9S%Q8.png

    相关文章

      网友评论

        本文标题:Unity編輯器案列

        本文链接:https://www.haomeiwen.com/subject/dsfcdxtx.html