首页 > 其他分享 >Tilemap-CustomRuleTile 的使用 Tile

Tilemap-CustomRuleTile 的使用 Tile

时间:2022-10-04 07:11:48浏览次数:34  
标签:return Tilemap postion CustomRuleTile tile Neighbor Tile public

 

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

相关文章

  • 从双重校验锁进一步理解synchronized和volatile
    并发编程中的四个问题:可见性、原子性、有序性、指令重排对于synchronized和volatile首先我们知道:synchronized可以保证原子性、有序性、可见性;volatile只能保证有序性......
  • Volatile的解析
    volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来了解一下与......
  • 神奇的volatile
    什么是volatile?  打开google,百度一下,你就知道~  java编程语言允许线程访问共享变量,为了确保共享变量能被准确和一致的更新,线程应该确保通过排他锁单独获得这个变量。......
  • synchronized和volatile区别
    synchronized和volatile区别synochronizd和volatile关键字区别:volatile关键字解决的是变量在多个线程之间的可见性;而sychronized关键字解决的是多个线程之间访问共享资源......
  • Unity2d SunnyLand (一) 开发环境 + Tilemap
    一、开发环境.net6.0+.netframework4.7.1dev +vscode +unity2022.1.15将vscode设置为默认脚本编辑器  二、Tilemap1.导入资源  2.设置属性 ......
  • 面试java并发~(lock、volatile、cas)
    Lock锁是一个接口,有三个实现类,分别是常用的可重入锁,读锁、写锁。常用的可重入锁,默认一般创建的是非公平锁,就是允许线程插队,而不是按先来后到顺序。非公平锁的目的:是为......
  • 再谈volatile的可见性
    volatile保证可见性的说法有问题,准确说是任何变量都可被访问,只是访问时不一定是最新的值,volatile的作用时,保证线程访问变量时拿到的永远是最新值,所以这个可见性等于保证最......
  • Java并发编程之synchronized 与 volatile
    synchronized同步代码块一般使用Java的synchronized关键字来实现,有两种方式对方法进行加锁操作;第一处,在方法签名处加synchronized关键字;第二,使用synchronized(对象......
  • numpy数组扩展函数repeat和tile用法
    numpy数组扩展函数repeat和tile用法【Python学习】Numpy函数repeat和tile用法 ......
  • java 内存模型之 volatile 核心原理与应用
    1.happens-before规则https://blog.csdn.net/qq_39935047/article/details/1203847992.Juc12_Volatile的可见性、不保证可见性、有序性、使用、内存屏障四大指令StoreSt......