当前位置:   article > 正文

Unity —— 神奇的 Gizmos 辅助线框 类_gizmos.drawwiresphere

gizmos.drawwiresphere

 经常在scene中看到这些 线框,图标 形状 ,我好像从来没有注意过。。。。

这都是 Gizmos  的功劳

Gizmos在这里

你可以调节选项以及值,来查看效果。

更改图标大小,是否显示。

 

然后去看下API,以及F12

正文上代码

这是两个函数,系统自动调用.

  1. private void OnDrawGizmos()
  2. {
  3. Debug.Log("drawGizmos,一直调用");
  4. }
  5. private void OnDrawGizmosSelected()
  6. {
  7. Debug.Log("selected,只有物体选中后调用");
  8. }

 

 

Gizmos.DrawRay()   

 

 

  1. [ExecuteInEditMode]
  2. public class TimorGizmosDrawRay : MonoBehaviour
  3. {
  4. public GameObject cube = null;
  5. public float distance = 5;
  6. private void Start()
  7. {
  8. cube = GameObject.Find("Sphere");
  9. }
  10. private void OnDrawGizmosSelected()
  11. {
  12. Gizmos.color = Color.cyan;
  13. Gizmos.DrawRay(transform.localPosition, cube.transform.forward * distance);
  14. Gizmos.DrawRay(transform.localPosition, cube.transform.position);
  15. }
  16. }

这里坐标处理的有点问题。后期修正

Gizmos.DrawCube()

 

  1. public class TimorGizmosDrawCube : MonoBehaviour
  2. {
  3. public Vector3 center = Vector3.zero;
  4. public Vector3 size = Vector3.zero;
  5. private void OnDrawGizmosSelected()
  6. {
  7. Gizmos.color = Color.cyan;
  8. Gizmos.DrawCube(center, size);
  9. Gizmos.DrawWireCube(center, size + new Vector3(3, 3, 3));
  10. }
  11. }

 

既然可以绘制实心立方体,也有空心,同理也有球体

 

Gizmos.DrawSphere()

一些参数挺简单的,我就不写了

  1. public class TimorGizmosDrawSphere : MonoBehaviour
  2. {
  3. public Vector3 center = Vector3.zero;
  4. public float radius = 1.5f;
  5. void Start()
  6. {
  7. }
  8. private void OnDrawGizmosSelected()
  9. {
  10. Gizmos.color = Color.cyan;
  11. Gizmos.DrawSphere(center,radius);
  12. Gizmos.DrawWireSphere(center, radius * 1.5f);
  13. }
  14. }

Gizmos.DrawIcon()

这下需要注意,图片需要放到Gizmos文件下。

  1. private void OnDrawGizmosSelected()
  2. {
  3. Gizmos.color = Color.cyan;
  4. Gizmos.DrawIcon(center, "timor", true);
  5. }

 

总览

 

其实Gizmos 挺好玩的。

下边是一个小测试

  1. public Vector3 from = Vector3.zero;
  2. public Vector3 to = Vector3.zero;
  3. public Color color = Color.cyan;
  4. public int x = 3;
  5. public int y = 3;
  6. public int z = 3;
  7. void Start()
  8. {
  9. }
  10. private void OnDrawGizmosSelected()
  11. {
  12. Gizmos.color = color;
  13. for (int i = 0; i < x; i++)
  14. {
  15. for (int j = 0; j < y; j++)
  16. {
  17. for (int k = 0; k < z; k++)
  18. {
  19. to = new Vector3(i, j, k);
  20. Gizmos.DrawLine(Vector3.zero, to);
  21. }
  22. }
  23. }
  24. }

效果

 

既然可以算出来每个点坐标,从 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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/100104
推荐阅读
相关标签
  

闽ICP备14008679号