1.ContextMenu的使用
ContextMenu用于构造上下文菜单
在附加脚本的inspector(检视面板)。当用户选择上下文菜单时,这个方法将会被执行。
[ContextMenu("a")]
//创建一个名字为a的上下文菜单,当a被选择时将执行下面的a()方法
void a(){
print("a");
}
2.创建显示土地网格的ContextMenu
当ContextMenu被选择时,开发界面的土地被分为若干块
创建脚本GridMapScript
public static GridMapScript instance=null;
//声明一个类对象供其他类使用
public MapData[,] m_Map;
//声明一个MapData类型的二维数组
void Awake(){
instance=this;
this.BuildMap();
}
//当脚本唤醒时实例化instance,执行方法BuildMap();
[ContextMenu("BuildMap")]
//在上下文菜单中添加一个名为BuildMap的选项,当BuildMap被选择时执行BuildMap方法
void BuildMap(){
MapData=new MapData[MaxSizeX,MaxSizeZ];
//初始化二维数组长度
然后通过循环将MapData每一个元素实例化
找到所有Tag为gridnode(怪物通道)的GameObject然后GetComponent<GridNodeScript>找出其中捆绑的GridNodeScript脚本
m_Map[(int)posX,(int)posZ]通过位置找到对应的二维数组元素,因为网格的Scale为1,所以位置也就是索引值
将对应二维数组元素的typeId设置为对应Tag为gridnode的_mapdata.typeId
}
3.绘制土地的Gizmos
Gizmos.DrawLine(起始位置Vector3,终止位置Vector3)
通过循环绘制出分割土地的所有横线和竖线
Gizmos.DrawCube(中心位置,大小)
通过中心位置和大小绘制出一个实体Cube
通过循环绘制出每一小块土地的Cube