You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity脚本中如何读取多层Tilemap获取点击位置的瓦片信息?

多Tilemap图层点击检测解决方案

核心思路

将需要检测的所有Tilemap存入一个列表,鼠标点击时遍历该列表,逐个检查对应网格位置的瓦片,收集所有存在的瓦片信息,适配后续新增的高层modifier图层需求。

实现步骤

  • 替换单个Tilemap变量为List<Tilemap>类型,在Unity Inspector面板中添加所有需要检测的图层(如地面层、房屋层、未来的modifier层)。
  • 通过鼠标位置转换得到统一的网格坐标(所有Tilemap的网格坐标对齐,只需转换一次)。
  • 遍历列表内的每个Tilemap,检测对应坐标是否存在瓦片,收集有效瓦片数据。

示例代码

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

public class MultiTilemapClickDetector : MonoBehaviour
{
    // 在Inspector面板添加所有需要检测的Tilemap图层
    public List<Tilemap> targetTilemaps;

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            // 获取鼠标世界位置,Z轴对齐Tilemap的Z值保证坐标转换正确
            Vector3 worldPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            if (targetTilemaps.Count > 0)
            {
                worldPos.z = targetTilemaps[0].transform.position.z;
            }

            // 转换为网格坐标
            Vector3Int cellPos = targetTilemaps[0].WorldToCell(worldPos);

            // 遍历所有Tilemap收集瓦片
            List<TileBase> clickedTiles = new List<TileBase>();
            foreach (Tilemap tilemap in targetTilemaps)
            {
                TileBase tile = tilemap.GetTile(cellPos);
                if (tile != null)
                {
                    clickedTiles.Add(tile);
                    Debug.Log($"检测到图层[{tilemap.name}]的瓦片:{tile.name}");
                    // 此处可添加瓦片类型判断、业务逻辑处理
                }
            }

            // 对收集到的瓦片做后续处理,比如按图层优先级执行逻辑
            if (clickedTiles.Count > 0)
            {
                // 示例:优先处理上层瓦片(按列表顺序)
                TileBase topTile = clickedTiles[clickedTiles.Count - 1];
            }
        }
    }
}

注意事项

  • 确保所有Tilemap的网格设置一致(单元格大小、原点对齐),否则坐标转换会出现偏差。
  • 新增图层时,直接在Inspector的targetTilemaps列表中添加即可,无需修改代码逻辑。
  • 可调整列表内Tilemap的顺序,按渲染层级从下到上排列,方便优先处理高层瓦片。

内容的提问来源于stack exchange,提问作者lsKakashi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 20:31:01