拓展编辑器(十三)_拓展Scene视图(辅助元素)

拓展Scene视图:

  Scene视图承担着游戏“第三人称”观察的工作。Unity提供了强大的Gizmos工具API,我们可以在Scene视图中绘制立方体,网格,贴图,射线和UI等,开发者可以自由地拓展显示组件。

辅助元素:

  场景在编辑过程中,通常需要一些辅助元素,这样使用者可以更高效的完成编辑工作。比如,我们在选中Main Camera对象时,程序会给摄像机组件添加一条红色的辅助线,并且在线段终点处添加一个立方体辅助对象,代码如下:

using UnityEngine;

public class 辅助元素 : MonoBehaviour
{

    private void OnDrawGizmosSelected()
    {
        Gizmos.color = Color.red;
        //画线
        Gizmos.DrawLine(transform.position, Vector3.one);
        //立方体
        Gizmos.DrawCube(Vector3.one, Vector3.one);
    }
}

  Gizmo的绘制原理就是在脚本中添加OnDrawGizmosSelected(),此方法仅在编辑模式下生效。使用Gizmos.cs工具类,我们可以绘制任意的辅助元素。请注意,这里拓展的辅助元素只能用来编辑,并不会影响到最终发布的游戏。上述代码效果如下:

  除此之外,如果希望辅助元素并不依赖选择对象出现,而是始终都出现在Scene视图中,可使用方法OnDrawGizmos()绘制元素,代码如下:

  

    private void OnDrawGizmos()
    {
        Gizmos.DrawSphere(transform.position, 1);
    }

  效果如下:

  

ps:关于Gizmos工具类

  所有的Gizmos绘制需要在脚本的OnDrawGizmos或者OnDrawGizmosSelected函数里完成。其中,OnDrawGizmos会每帧调用,所有在OnDrawGizmos渲染的Gizmos都是可见的,而OnDrawGizmosSelected仅在脚本附加的物体被选择时调用。此外,Gizmos工具类中还有很多常用的绘制元素,读者也可以自行摸索。

  

猜你喜欢

转载自www.cnblogs.com/llllllvty/p/9901824.html