假设有一个敌人生成器类,其中有个属性range用来表示敌人生成的范围区域大小,那么可以用
OnDrawGizmos函数来绘制它在场景视图所代表的区域大小,便于开发调试。这个敌人生成器类,类似如下:
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
using UnityEngine;
using System.Collections; public class EnemySpawn : MonoBehaviour { public float range; void OnDrawGizmos() { Gizmos.color = Color.green; Gizmos.DrawWireCube(transform.position, new Vector3(range, 0, range)); } void OnDrawGizmosSelected() { Gizmos.color = Color.yellow; Gizmos.DrawWireCube(transform.position, new Vector3(range, 0, range)); } } |
可以在场景视图看到,当未选中改对象时,为绿色边框表示区域大小,当选中时,则为黄色。如下图所示:
未选中:
选中:
选中:
如何直接在场景视图进行调整区域的大小呢,即直接调整range值,而不用在检视器里进行设置。这可以用控制柄来达到,即
Handles类。创建一个编辑器扩展类,代码如下:
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
using UnityEngine;
using UnityEditor; [CustomEditor( typeof(EnemySpawn))] public class EnemySpawnEditor : Editor { void OnSceneGUI() { EnemySpawn enemySpawn = target as EnemySpawn; Vector3 pos = enemySpawn.transform.position; < |