untiy 脚本API之可视化辅助类Gizmos

来源:互联网 发布:淘宝美工网上兼职接单 编辑:程序博客网 时间:2024/06/16 05:12

学习一门引擎,熟悉它的各种API是非常有必要的,不一定都得了如指掌,但是至少应该有所涉猎,这样不管在满足需求也好,解决问题也好,都会很有帮助。


一直都有在看,不过很容易忘记,现在开始把它写成博客,好记性不如烂笔头,这样回头翻一翻,回忆起来就容易多了。


Gizmos是在scene视图用来可视化调试的辅助工具,所有gizmo的绘制都在OnDrawGizmos或者OnDrawGizmosSelected函数中完成。OnDrawGizmos每帧都会被调用,我们一般把绘制代码写在OnDrawGizmos函数中。OnDrawGizmosSelected是当有gizmos被选中时才会被系统调用,选中的GameObject必须有挂载了实现OnDrawGizmos的脚本组件才能触发,不管在Hierarchy或者Scene视图中选择均有效。


Gizmos.color,绘制的颜色,默认为白色,每帧调用完后会自动重置为白色。


Gizmos.matrix,变换举证,默认为单位矩阵,每帧调用完后也会自动重置为单位矩阵,绘制时会将数据与矩阵相乘,然后用变换的结果进行绘制。


Gizmos.DrawCube(Vector3 center, Vector3 size),绘制立方体,以center为中心,大小为size。


Gizmos.DrawSphere(Vector3 center, float radius),绘制球体,以center为中心,radius为半径。


Gizmos.DrawRay(Ray r),绘制一条射线。Gizmos.DrawRay(Vector3 from, Vector3 direction),绘制一条从from出发,方向为direction的射线。


Gizmos.DrawGUITexture(Rect screenRect, Texture texture),在xy平面上的screenRect处显示一张texture,感觉没什么用。


Gizmos.DrawIcon(Vector3 center, string name,[DefaultValue("true")] bool allowScaling),绘制物体的icon,icon文件必须要放置在Assets\Gizmos文件夹下,并且普通的jpg格式是无效的,tif文件可以。allowScaling为true的时候不管摄像机远近icon与物体的相对大小始终保持一致,为false是,靠近物体,icon变小,远离物体,icon变大。icon永远面像摄像机。


Gizmos.DrawMesh(Mesh mesh, int submeshIndex, [DefaultValue("Vector3.zero")] Vector3 positionVector3.zero, [DefaultValue("Quaternion.identity")] Quaternion rotation, [DefaultValue("Vector3.one")] Vector3 scale);

Gizmos.DrawMesh(Mesh mesh, [DefaultValue("Vector3.zero")] Vector3 position, [DefaultValue("Quaternion.identity")] Quaternion rotation, [DefaultValue("Vector3.one")] Vector3 scale);

绘制mesh,绘制的时候可以指定mesh的pos、rotation、scale,如果mesh有多个子mesh,那么可以传入submeshindex,指定绘制某个子mesh。


Gizmos.DrawFrustum(Vector3 center, float fov, float maxRange, float minRange, float aspect); //绘制一个相机的视锥体,fov即field of view,视角的大小,创建相机时默认值为60,max、minRange为视锥体底面和顶面距离center的距离,aspect为视锥体的宽高比。


Gizmos.DrawWireCube、DrawWireMesh、DrawWireSphere,函数名称多加了个wire的,表示绘制的为线框,默认是填充的。


原创粉丝点击