Tile中添加属性字段是比较麻烦的-Tile的创建是由Unity3d创建的,类似于预制体,他不包含在Hierarchy栏目中,同时无法挂脚本,没办法做到赋值,也不能操作自定义属性
CustomRuleTile可以解决这个问题但是他使用起来比较麻烦,同时教程较少,官方文档中也没有合适的案例
首先确定版本
演示操作版本-2021.3.7f1c1
以下案例是错误的,请勿使用该方案
创建一个CustomRuleTIle
生成文件
生成的代码
[CreateAssetMenu] public class NewCustomRuleTile : RuleTile<NewCustomRuleTile.Neighbor> { public bool customField; public class Neighbor : RuleTile.TilingRule.Neighbor { public const int Null = 3; public const int NotNull = 4; } public override bool RuleMatch(int neighbor, TileBase tile) { switch (neighbor) { case Neighbor.Null: return tile == null; case Neighbor.NotNull: return tile != null; } return base.RuleMatch(neighbor, tile); } }在
代码中可以添加自定义属性
比如HP 同时我们把文件名改掉
在编译器中出现了
单击后生成一个Tile
在然后就可以拖动进调色板使用了 -同时他也支持创建规则
再然后编写代码进行试验
if (Input.GetKey(KeyCode.Backspace)) { //将世界坐标转换为TileMap坐标 var postion = tilemap.WorldToCell(transform.position); Debug.Log(postion); //获取指定的Tile TileBase tile = tilemap.GetTile(postion); //这种方式也是可以的 //TileBase tile1 = tilemap.GetTile<T89TileScript>(postion); Debug.Log(tile); if (tile is T89TileScript t89Script) { t89Script.HP--; Debug.Log(t89Script.HP); } }
剩余可以跳过
-探讨其绑定过程
Script脚本如何与Tile进行绑定的
记事本打开文件
可以看到一串ID 用来定义脚本
打开Script文件
可以看到两个ID是一样的
当然也可以通过普通Tile来绑定 预制件 GameObject来操作
标签:return,Tilemap,postion,CustomRuleTile,tile,Neighbor,Tile,public From: https://www.cnblogs.com/AnAng/p/16753119.html