场景搭建
该场景由一个二维的单元格组成。每一个格子的用途都不同。
- GUARD 专用于摆放防守单位的格子
- ROAD 专用于敌人通过的格子
- DEAD 既无法摆放防守单位,也无法让敌人通过的格子
1、格子编辑
1.1、格子数据
1、在Hierarchy视图中创建一个空物体,取名为Grid Object。
2、创建脚本TileObject.cs,这个类主要用于保存地图格子的数据。这个脚本和Grid Object绑定。
3、TileObject.cs的代码为。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TileObject : MonoBehaviour
{
public static TileObject instance = null; //实例
//tile碰撞层,用于检测鼠标点击单元格时检测碰撞
public LayerMask m_tileLayer;
//地图的x轴单元格个数以及z轴单元格个数
public int m_xTileCount = 3;
public int m_zTileCount = 3;
//单元格的大小
public float m_tileSize = 1;
//一维数组,用于存放单元格的数据
public int[] m_data;
//不用显示在Inspector视图上
[HideInInspector]
//当前数据ID
public int m_dataId = 0;
[HideInInspector]
//是否显示数据信息
public bool m_isDebug = true;
private void Awake()
{
instance = this;
}
public void Reset()
{
//每次reset后需要初始化data的数据
m_data = new int[m_xTileCount * m_zTileCount];
}
//获取单元格的下标
public int getDataIndex(float xpos, float zpos)
{
return (int)((xpos - transform.position.x) / m_tileSize) * m_zTileCount + (int)((zpos - transform.position.z) / m_tileSize);
}