TileMap大型地图网格属性设置

这篇博客介绍了如何在Unity中使用TileMap创建大型地图,并通过GridMap脚本实现多条件网格属性设置。作者创建了TileProperty类来存储网格坐标和类型,使用ScriptObject管理网格数据,并通过枚举控制每个TileMap的GridType。通过矩阵循环获取并设置每个单元格的属性,实现了在编辑模式下预设网格属性,避免了运行时赋值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Unity自带一个GridInfomation的脚本用于网格类型的管理需要挂载在Grid工具同物体上,不过无法完成多条件赋值,所以很多细致的判断无法做到。

这里使用的方法是在Grid中创建多个TileMap用于实现网格叠加的效果

新建TileProperty类,用于单元格数据的存储,类中只需要Vecotr2和GridType(自定义枚举)两个参数类型,用于存储网格的坐标和网格的类型。

本地创建ScriptObject文件,用于网格的数据管理。

using System.Collections.Generic;
using UnityEngine;

[CreateAssetMenu(fileName = "MapData_SO", menuName = "Map/MapData", order = 0)]
public class MapData_SO : ScriptableObject {
    // 场景名字
    [SceneName] public string sceneName;
    // 所有设置了属性的网格
    public List<TileProperty> tileProperties;
}

在每个TileMap上添加脚本GridMap并使用枚举控制每一个网格对应的GridType。

    public MapData_SO mapData;      // 写入的结构
    public GridType gridType;       // 网格的类型
    private Tilemap currentTilemap; // 当前绘制的Tilemap</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值