关于实现一个简单的2D斜45°地图的构建记录。
数据类: SoMap.cs
用于存储构建出来的地图.
using UnityEngine;
public class SoMap : ScriptableObject
{
public int mapID;
public Vector2 worldPos;// 在世界坐标中的位置
public float tileWidth;// 块的宽度
public float tileHeight;// 块的高度
public int row;// 地图行数
public int column;// 地图列数
public int[] data;// 具体数据
}
编辑时显示编辑内容的一个Mono类: MapView.cs
地图相关数据, 挂在一个Go上.
using System.Collections.Generic;
using UnityEngine;
public class MapView : MonoBehaviour
{
public int mapID;
public int row;
public int column;
public float tileWidth;
public float tileHeight;
public int[] data;
[HideInInspector]
public int newRow;
[HideInInspector]
public int newColumn;
[HideInInspector]
public List<GameObject> tileList = new List<GameObject>();
public Sprite texture_Walkable;
public Sprite texture_Block;
private void OnDestroy()
{
texture_Walkable = null;
texture_Block = null;
}
}
每个地图块的数据编辑类: TileView.cs
using UnityEngine;
public class TileView : MonoBehaviour
{
[HideInInspector]
public MapView mapView;
public int index;
public int id;
}
---------------------------------- 以下是编辑器脚本类 ------------------------------------
用于编辑MapView的编辑器脚本: MapViewEditor.cs
using UnityEngine;
using UnityEditor;
using System.IO;
[CustomEditor(typeof(MapView))]
public class MapViewEditor : Editor
{
// 数据存储路径
public static string DATA_ABS_PATH;
public static string DATA_ASSETS_PATH;
private SoMap m_SoMap;
private void OnEnable()
{
MapView _view =