经常在scene中看到这些 线框,图标 形状 ,我好像从来没有注意过。。。。
这都是 Gizmos 的功劳
Gizmos在这里
你可以调节选项以及值,来查看效果。快三大小单双稳赚买法
更改图标大小,是否显示。
然后去看下API,以及F12
正文上代码
这是两个函数,系统自动调用.
private void OnDrawGizmos() { Debug.Log("drawGizmos,一直调用"); } private void OnDrawGizmosSelected() { Debug.Log("selected,只有物体选中后调用"); }
Gizmos.DrawRay()
[ExecuteInEditMode]public class TimorGizmosDrawRay : MonoBehaviour{ public GameObject cube = null; public float distance = 5; private void Start() { cube = GameObject.Find("Sphere"); } private void OnDrawGizmosSelected() { Gizmos.color = Color.cyan; Gizmos.DrawRay(transform.localPosition, cube.transform.forward * distance); Gizmos.DrawRay(transform.localPosition, cube.transform.position); }}
这里坐标处理的有点问题。后期修正
Gizmos.DrawCube()
public class TimorGizmosDrawCube : MonoBehaviour{ public Vector3 center = Vector3.zero; public Vector3 size = Vector3.zero; private void OnDrawGizmosSelected() { Gizmos.color = Color.cyan; Gizmos.DrawCube(center, size); Gizmos.DrawWireCube(center, size + new Vector3(3, 3, 3)); } }
既然可以绘制实心立方体,也有空心,同理也有球体
Gizmos.DrawSphere()
一些参数挺简单的,我就不写了
public class TimorGizmosDrawSphere : MonoBehaviour{ public Vector3 center = Vector3.zero; public float radius = 1.5f; void Start() { } private void OnDrawGizmosSelected() { Gizmos.color = Color.cyan; Gizmos.DrawSphere(center,radius); Gizmos.DrawWireSphere(center, radius * 1.5f); } } Gizmos.DrawIcon()
这下需要注意,图片需要放到Gizmos文件下。
private void OnDrawGizmosSelected() { Gizmos.color = Color.cyan; Gizmos.DrawIcon(center, "timor", true); }
总览
其实Gizmos 挺好玩的。 下边是一个小测试 public Vector3 from = Vector3.zero; public Vector3 to = Vector3.zero; public Color color = Color.cyan; public int x = 3; public int y = 3; public int z = 3; void Start() { } private void OnDrawGizmosSelected() { Gizmos.color = color; &n一分快三大小单双技巧, true); }
总览
其实Gizmos 挺好玩的。 下边是一个小测试 public Vector3 from = Vector3.zero; public Vector3 to = Vector3.zero; public Color color = Color.cyan; public int x = 3; public int y = 3; public int z = 3; void Start() { } private void OnDrawGizmosSelected() { Gizmos.color = color; for (int i = 0; i < x; i++) { for (int j = 0; j < y; j++) { for (int k = 0; k < z; k++) { to = new Vector3(i, j, k); Gizmos.DrawLine(Vector3.zero, to); } } } } 效果
既然可以算出来每个点坐标,从 0,0,0点画线过去,那可不可以画出一个空心立方体。回头研究
从前有个人看我的文章,他点了赞,第二天面试就通过了
传送门
Unity – Manual: Gizmos menu https://docs.unity3d.com/Manual/GizmosMenu.html
Unity – Scripting API: Gizmos https://docs.unity3d.com/ScriptReference/Gizmos.html