unity 地图画格_Unity A* 寻路网格编辑工具(在Scene 视图下编辑)

游戏开发过程中经常用到A*寻路算法,在美术制作完场景后,需要编辑行走区域和不可行走区域。能在Unity Scene场景中直接编辑,并导出数据文件,将会方便很多。

1 数据类

先定义一个网格数据类型,定义网格长,宽数量,以及实现序列化。values 中存放是否可通行的数据,0表示障碍,不可通行。

public class MapData

{

///

/// 网格宽度

///

public int mapLen = 0;

///

/// 网格宽度

///

public int mapWidth = 0;

///

/// 网格状态数据

///

private List values = new List();

public int GetValue(int index)

{

if (index >= values.Count)

{

UnityTools.LogError("MapData GetValue index is not exsist! index->>"+ index.ToString());

return -1;

}

return values[index];

}

public int GetValue(int x ,int y)

{

int index = x * mapWidth + y;

GetValue(index);

return values[index];

}

public void AddValue(int value)

{

values.Add(value);

}

public void SetValue(int x,int y,int value)

{

int index = x * mapWidth + y;

values[index] = value;

}

public int GetValuesCount()

{

return values.Count;

}

public void ClearValues()

{

values.Clear();

}

public string Serialized()

{

string str = mapLen.ToString() + "," + mapWidth.ToString() + ",";

for (int i = 0; i < values.Count; i++)

{

str += values[i].ToString() + ",";

}

return str;

}

public MapData DeSerialized(string data)

{

values.Clear();

string[] strList = data.Split(',');

mapLen = int.Parse(strList[0]);

mapWidth = int.Parse(strList[1]);

for (int i = 2; i < strList.Length; i++)

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值