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

在创建所需参数后将代码挂载至上方的四个TileMap对象中,并修改对应的GridType并在mapData中传入一致的网格数据SO文件。在挂载的GridMap脚本中使用矩阵循环的方法获取网格中所有单元格,再使用网格的.GetTile(矩阵x,矩阵y)获取网格Tile绘制的图片,用于绘制判断。在判断中新建TileProperty对象并把矩阵循环当前的xy作为坐标传入其中,GridType=当前TileMap的类型即可。再将赋值完毕的TileProperty对象添加进mapData里的TileProperty列表中即可实现编辑状态下赋值网格属性,避免了运行中的赋值。(编辑模式下调用脚本需要ExecuteInEditMode属性)

using UnityEditor;
using UnityEngine;
using UnityEngine.Tilemaps;[ExecuteInEditMode]
public class GridMap : MonoBehaviour
{public MapData_SO mapData;public GridType gridType;private Tilemap currentTilemap;private void OnEnable(){if (!Application.IsPlaying(this)){currentTilemap = GetComponent<Tilemap>();if (mapData != null)// 清空所有数据,避免数据重复mapData.tileProperties.Clear();}}private void OnDisable(){if (!Application.IsPlaying(this)){currentTilemap = GetComponent<Tilemap>();UpdateTileProperties();
#if UNITY_EDITORif (mapData != null)// 通知对象数据刷新EditorUtility.SetDirty(mapData);
#endif}}private void UpdateTileProperties(){currentTilemap.CompressBounds();if (!Application.IsPlaying(this)){if (mapData != null){//已绘制范围的左下角坐标Vector3Int startPos = currentTilemap.cellBounds.min;//已绘制范围的右上角坐标Vector3Int endPos = currentTilemap.cellBounds.max;for (int x = startPos.x; x < endPos.x; x++){for (int y = startPos.y; y < endPos.y; y++){TileBase tile = currentTilemap.GetTile(new Vector3Int(x, y, 0));if (tile != null){TileProperty newTile = new TileProperty{tileCoordinate = new Vector2Int(x, y),gridType = this.gridType,boolTypeValue = true};mapData.tileProperties.Add(newTile);}}}}}}
}

TileMap大型地图网格属性设置相关推荐

  1. 2D 游戏工具系列:unity自带Tilemap和地图编辑器Tiled的基本使用以及Super Tiled2Unity如何导入tmx到Unity中(2)

    这次我们来使用Tilde地图编辑器制作一张地图,然后对一些经常用到的部分,我会尽量讲详细一些,方便大家理解,首先是这款软件的下载地址:https://www.mapeditor.org/,以及地图编辑 ...

  2. unity2D学习(2)Tilemap绘制地图

    1 Tilemap介绍 Tilemap(瓦片地图):unity中自带的快速构建2D场景的工具 2 Pixels Per Unit介绍 需要先介绍一下Pixels Per Unit(每个单位的资源像素量 ...

  3. 前端实现街道地图_使用百度地图实现地图网格的示例_白峰_前端开发者

    前言:最近要使用百度地图实现楼盘可视化的功能,因此最基础的功能就是将地图网格化以后实现不同地域的楼盘划分: 1,自行去百度地图的开放平台申请秘钥哈,这里我就把自己的秘钥贴出来了:ak=A3CklGvn ...

  4. Unity(9)-TileMap瓦片地图

    文章目录 前言 相关介绍 其他介绍 上一篇笔记 下一篇笔记 一.图片预处理 二.创建调色板(TilePalette) 三.创建瓦片(Tile) [1]. 方式一 [2]. 方式二 四.修改瓦片(Til ...

  5. DEV控件:gridControl常用属性设置

    1.隐藏最上面的GroupPanel   gridView1.OptionsView.ShowGroupPanel=false; 2.得到当前选定记录某字段的值   sValue=Table.Rows ...

  6. html设置文本域的,HTML-文本域属性设置

    1.设置文本域的字体 输入内容 2.设置文本域的背景色 输入内容 3.文本域的虚线边框设置 输入内容 4.文本域的实线边框设置 输入内容 5.文本域的点线边框设置 输入内容 6. 设置文本域的背景图 ...

  7. mysql+地图网格数据下载_离线地图

    D3 网格数据源代码展示 Document body { margin: 0; padding: 0; } #map { position: absolute; top: 0; bottom: 0; ...

  8. QCustomplot笔记(二)之QCustomplot 坐标轴属性设置

    一.前言 记录分享楼主学习QCustomplot的过程,楼主最近查看了坐标轴的一些属性设置,于是便记录下 属性设置不一定全,也不一定都对,不喜勿喷 二.坐标轴属性类别 1.设置坐标是否显示 ui-&g ...

  9. css样式如何设置边框,阴影,渐变等特效以及通过box-sizing属性设置盒子模型,背景区域设置等

    今天,我继续来和大家聊聊css3. 在css3中,新增了很多样式,使得页面更加的美观,效果更加的优秀. 但是,同样要注意的是,很多css3提出的新样式没有得到浏览器的支持,也就意味着有一部分的css3 ...

最新文章

  1. 负载分析及问题排查极简教程
  2. java中值传递机制
  3. MySQL根被拒绝_[转载]phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接。...
  4. Android之ndk-build出现c:28:51: error: ‘get_string‘ undeclared here (not in a function)解决办法
  5. crowd counting_[crowd_counting]-SFANet-arxiv1902
  6. WePhone开发者被逼自杀案续,在翟欣欣身上的各种消费清单明细及细节曝光
  7. shellscript 07 正则表达式介绍
  8. iOS开发RunLoop学习:三:Runloop相关类(source和Observer)
  9. 如何远程连接软件加密狗
  10. [LeetCode]739. 每日温度
  11. python爬虫京东口红销售排行
  12. Volley,Glide,Swiperefreshlayout 简单使用
  13. sgu482 Impudent Thief (动态规划)
  14. 有经验JAVA程序员如何提升自己?
  15. 双向dijkstra
  16. 离散数学:求空集的幂集?求空集的幂集的幂集?求空集的幂集的幂集的幂集?
  17. 苹果发布2019款iPad mini/Air:配A12芯片支持手写笔
  18. 学习任务01-配置自己ssh config
  19. 【网络初识】IP地址,端口号的概念;TCP/IP五层模型;封装和分用
  20. 爬虫自定义创建Opener

热门文章

  1. 中央电大c 语言程序设计本科试题,中央电大本科C语言程序设计试题2013年1月.pdf...
  2. 带库的pydroid安装与使用。
  3. 强化学习常用算法总结
  4. 私网地址与公网地址是如何转换的?
  5. 深度学习神经网络画图软件汇总
  6. hibernate: 用Disjunction和Conjunction构造复杂的查询条件
  7. 2015伦敦深度学习峰会笔记:来自DeepMind、Clarifai等大神的分享
  8. 得到app文稿导出_得到-app分析
  9. 探秘Hadoop生态6:Hive技术初探与实践入门
  10. BZOJ 3168: [Heoi2013]钙铁锌硒维生素