30.Tilemap瓦片地图代码控制

30.2D相关-Tilemap瓦片地图-代码控制


30.1 知识点

获取Tilemap和TileBase和Grid

Tilemap组件

  • 用于管理瓦片地图。
TileBase组件

  • 单张瓦片资源对象基类。
Grid组件

  • 用于坐标转换。
使用他们需要引用Tilemaps命名空间
using UnityEngine.Tilemaps;
脚本创建对应变量并关联

// 瓦片地图信息,可以通过它得到瓦片格子
public Tilemap tilemap;
// 格子位置相关控制,可以通过它进行坐标转换
public Grid grid;
// 瓦片资源基类,通过它可以得到瓦片资源
public TileBase tileBase;

Tilemap瓦片地图重要API

Tilemap.ClearAllTiles方法 清空瓦片地图
//Tilemap类中的ClearAllTiles方法 清空瓦片地图
//清除 Tilemap 中放置的所有瓦片。
tilemap.ClearAllTiles();
Tilemap.GetTile方法 获取指定坐标格子的瓦片格子
//Tilemap类中的GetTile方法 获取指定坐标格子的瓦片格子 传入的是Vector3Int类型
//根据给定的瓦片地图中某个单元格的 XYZ 坐标,获取瓦片。
//假如对应坐标没有瓦片格子,会返回空
TileBase tempTileBase = tilemap.GetTile(Vector3Int.zero);
print(tempTileBase);//nature_environment_01_3 (UnityEngine.Tilemaps.Tile)
Tilemap.SetTile方法 设置瓦片和删除瓦片
//Tilemap类中的SetTile方法 设置瓦片和删除瓦片
//根据给定的瓦片地图中某个单元格的 XYZ 坐标,设置瓦片。
//设置瓦片
tilemap.SetTile(new Vector3Int(0, 2, 0), tileBase);
//删除瓦片
tilemap.SetTile(new Vector3Int(1, 0, 0), null);
Tilemap.SetTiles方法 批量设置设置瓦片和删除瓦片
//Tilemap类中的SetTiles方法 批量设置设置瓦片和删除瓦片
//根据给定的瓦片地图中对应单元格的 XYZ 坐标,设置瓦片的数组。
//要传入Vector3Int类型的坐标数组,再传入瓦片数组进行设置
//tilemap.SetTiles();
Tilemap.SwapTile方法 替换瓦片
//Tilemap类中的SwapTile方法 替换瓦片
//将 changeTile 的所有现有瓦片交换为 newTile 并刷新所有交换的瓦片。
//是将瓦片资源图片替换的意思 资源所有使用到瓦片资源的图片都会进行变化
tilemap.SwapTile(tempTileBase, tileBase);
Tilemap.WorldToCell方法 世界坐标转格子坐标
//Tilemap类中的WorldToCell方法 世界坐标转格子坐标
//将世界位置转换为单元格位置。
//传入的参数是Vector3类型世界坐标
//grid.WorldToCell();
//我们可以先屏幕坐标转世界坐标
//再世界坐标转格子坐标

30.2 知识点代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Tilemaps;

public class Lesson30_2D相关_Tilemap瓦片地图_代码控制 : MonoBehaviour
{
    //瓦片地图信息 可以通过它得到瓦片格子
    public Tilemap tilemap;
    //格子位置相关控制 可以通过它 进行坐标转换
    public Grid grid;
    //瓦片资源基类通过它可以得到瓦片资源
    public TileBase tileBase;

    void Start()
    {
        #region 知识点一 获取Tilemap和TileBase和Grid

        //Tilemap组件:用于管理瓦片地图
        //TileBase组件:单张瓦片资源对象基类
        //Grid组件:用于坐标转换

        //使用他们需要引用命名空间 using UnityEngine.Tilemaps;
        #endregion

        #region 知识点二 Tilemap瓦片地图重要API

        //Tilemap类中的ClearAllTiles方法 清空瓦片地图
        //清除 Tilemap 中放置的所有瓦片。
        //tilemap.ClearAllTiles();

        //Tilemap类中的GetTile方法 获取指定坐标格子的瓦片格子 传入的是Vector3Int类型
        //根据给定的瓦片地图中某个单元格的 XYZ 坐标,获取瓦片。
        //假如对应坐标没有瓦片格子,会返回空
        TileBase tempTileBase = tilemap.GetTile(Vector3Int.zero);
        print(tempTileBase);//nature_environment_01_3 (UnityEngine.Tilemaps.Tile)

        //Tilemap类中的SetTile方法 设置瓦片和删除瓦片
        //根据给定的瓦片地图中某个单元格的 XYZ 坐标,设置瓦片。
        //设置瓦片
        tilemap.SetTile(new Vector3Int(0, 2, 0), tileBase);
        //删除瓦片
        tilemap.SetTile(new Vector3Int(1, 0, 0), null);

        //Tilemap类中的SetTiles方法 批量设置设置瓦片和删除瓦片
        //根据给定的瓦片地图中对应单元格的 XYZ 坐标,设置瓦片的数组。
        //要传入Vector3Int类型的坐标数组,再传入瓦片数组进行设置
        //tilemap.SetTiles();

        //Tilemap类中的SwapTile方法 替换瓦片
        //将 changeTile 的所有现有瓦片交换为 newTile 并刷新所有交换的瓦片。
        //是将瓦片资源图片替换的意思 资源所有使用到瓦片资源的图片都会进行变化
        tilemap.SwapTile(tempTileBase, tileBase);

        //Tilemap类中的WorldToCell方法 世界坐标转格子坐标
        //将世界位置转换为单元格位置。
        //传入的参数是Vector3类型世界坐标
        //grid.WorldToCell();
        //我们可以先屏幕坐标转世界坐标
        //再世界坐标转格子坐标
        #endregion
    }


}


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏