void DrawCollision() { Gizmos.color = Color.yellow; GameObject[] colliders = QuadtreeObjectBasic.CheckCollision(transform.position, _radius); foreach (GameObject collider in colliders) { Gizmos.DrawLine(transform.position, collider.transform.position); //Gizmos.DrawLine:绘制一条线,参数是两个Vector3,就是线的两端 } /* * 假设你不会用foreach,它的格式是: * foreach(类型 变量名A in 同类型的数组或List或其他集合类的变量B) * { * 这个大括号会遍历那个变量B里的每个元素,每次遍历都会用前面的变量名A,可以理解为一个简写版的for循环 * * 假设你连“遍历”这个词都不知道,遍历的意思是从头到尾把每个元素都过一遍 * } */ }
private void OnDisable() { QuadtreeObjectBasic.RemoveLeaf(_leaf); }
/* * 在 OnEnble 和 OnDisable 里写存入和移除叶子方法。 * OnEnable 是Unity自带的在脚本激活的时候自动调用的方法,脚本激活后向四叉树存入叶子,碰撞器生效。 * OnDisable 则是在脚本禁用的时候自动调用的,脚本禁用后从四叉树里移除叶子,碰撞器失效。 * * 一个脚本实现一个功能,脚本激活则功能生效,脚本禁用则功能失效,这是面向组件的编程方式,也是Unity所使用的方式,这段话主要是给新朋友写的,老手看了别笑话我。 */ private void OnEnable() { QuadtreeObjectBasic.SetLeaf(_leaf); }