Unity记录:按照Rule Tile规则动态生成地图(从脚本中使用RuleTile)

要解决什么问题?

    RuleTile是非常实用的一个Unity工具,然而网上能找到的许多教程都是在编辑器中直接使用palette绘制地图的。然而如果游戏要有roguelike要素,需要随机生成地图时,则需要从脚本控制地图的生成,当然我们希望的是能够继续使用RuleTile,代替我们自己编写瓦块填充规则。
     虽然这个问题事实上并不难,但网上找不到别的教程,这对我这种小白而言还是挺痛苦的。捣鼓了半天摸到了解决办法,在这里分享出来,希望有需要的人可以少走点弯路。

解决问题的关键

首先可以从官方文档中找到这么一个函数,是可以设置Tilemap中一个Cell的Tile的,它的第二个参数是Tile的样本,类型为TileBase
SetTile
然后经过我的查找发现,RuleTile类事实上是继承于TileBase类的TileBase
因此事实上RuleTile可以作为SetTile函数的参数传递,这就是从脚本中使用RuleTile的关键。

详细解决办法

1、与常规做法一样,从Assets中创建新的RuleTile,并决定好所需的规则
创建RuleTile:

预设规则:

2、在创建随机地图的脚本中加入RuleTile变量(我用了两个RuleTile所以加了两个)
为了绘制,我们还需要一个Tilemap变量
(其中[SerializeField]是为了在Inspector中序列化Private变量)

3、挂载该脚本,从Inspector中拖入所需的RuleTile和Tilemap

4、按照自己生成地图的逻辑,调用SetTile函数,其中第二个参数直接使用我们所需的RuleTile

5、整个地图构建都使用SetTile完成,出来的地图就已经是RuleTile处理过的地图了,不需要再进行任何操作。
脚本自动生成的地图

总结

要在脚本中使用RuleTile,只需要调用SetTile函数即可。
(其中RuleTile作为TileBase参数传递给SetTile函数)

调用SetTile函数与手动绘制RuleTile的效果是一致的,都是规则化处理的瓦片。

  • 14
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值