Unity自带一个GridInfomation的脚本用于网格类型的管理需要挂载在Grid工具同物体上,不过无法完成多条件赋值,所以很多细致的判断无法做到。
这里使用的方法是在Grid中创建多个TileMap用于实现网格叠加的效果
新建TileProperty类,用于单元格数据的存储,类中只需要Vecotr2和GridType(自定义枚举)两个参数类型,用于存储网格的坐标和网格的类型。
本地创建ScriptObject文件,用于网格的数据管理。
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(fileName = "MapData_SO", menuName = "Map/MapData", order = 0)]
public class MapData_SO : ScriptableObject {
// 场景名字
[SceneName] public string sceneName;
// 所有设置了属性的网格
public List<TileProperty> tileProperties;
}
在每个TileMap上添加脚本GridMap并使用枚举控制每一个网格对应的GridType。
public MapData_SO mapData; // 写入的结构
public GridType gridType; // 网格的类型
private Tilemap currentTilemap; // 当前绘制的Tilemap
</