快报:「Unity」2DTileMap —— 能在运行中切换某位置的瓦片图片的规则瓦片(二)
大家好,这里是秋野
【资料图】
先叠个甲
我自己是零零散散自学的Unity和C#,只是出于兴趣编写了这个东西。
代码内容里面大概率出现各种不规范和弱智写法
如果发现
!!!可以尽情的指出,骂也无所谓!!!
(如果要骂,还是骂轻一点吧)
而且写这个专栏也是为自己理清楚自己做这个东西的逻辑
接下来就是正题了
四·功能实现(二)——魔改RuleTile
如小标题所说的
我们在这里需要魔改RuleTile
为什么需要魔改,那么具体这里有两个原因
第一个原因
我们看看之前写的代码里面有一段是用于生成在BaseLayer的Tile
基本逻辑就是根据底下的RuleTile的sprite去生成一个Tile放上去
那么这里就会出现一个问题
每次刷新都要去生成要给新的Tile给覆盖上去
当我们「画」地图的数量很多的时候
在BaseLayer的Tilemap组件里面就会出现一堆Tile
就,很不优雅
第二个原因
我们需要有那么个东西去保存我们用来切换的Sprite或者Tile
虽说RuleTile本身储存每个规则的Sprite的方式就是用一个Sprite[]来存储的
但每次需要根据Sprite来获取规则,就得遍历两边来确认
一遍规则列表,一遍Sprite列表
还是突出一个,不优雅
那么我们就得出来两个需求了
「复用Tile,避免每次都要生成一个Tile浪费资源」
「优化获取规则的方法,方便以后切换Tile的步骤」
那么首先是复用Tile
既然要避免每次都生成一个新的出来
那就直接在editor界面的时候就预先制作好每个Tile
最简单的方法就是直接将分割好的Sprite拖到TilePalette里面
他让你选择的路径就是保存Tile的路径
那么我们就可以直接用程序直接在这路径去找对应的Tile使用了
但是,这样还是很麻烦很不优雅
所以咱们要开始「魔改」RuleTile了
首先创建一个脚本文件
就很简单的在RuleTile的基础上加了一个Tile数组
选中我们的Ruletile
将代码换成我们自己写的Ruletile
即可看到我们的Tile数组出来了
但是这个只是解决了保存已有的Tile
没法精确的找到这个Tile的索引值
除非每次找个Tile都去foreach一下
也很不优雅
所以咱把Sprite的name作为key,索引值作为value用字典去快速找到咱们需要的tile
然后咱们把之前生成好的Tile全放到这个Tile数组内
这样是可以做到了咱们的第一个需求
「复用Tile,避免每次都要生成一个Tile浪费资源」
但是咱们还没能完成第二个需求
「优化获取规则的方法,方便以后切换Tile的步骤」
那么我们需要保存Tile的同时保存他对应的规则
如果看过前一篇那个快速制作RuleTile的文章的话
会知道Unity保存规则的方法是用一个字典去保存
那我们是也要去保存他的字典吗?
当然不用
我们只需要保存一个索引值即可
就是RuleTile.m_TilingRules的索引值
因为一个TilingRule里面也就只会保存一个规则
那么保存他的索引值自然也就保存跟他对应规则的相关Sprite
用一个类去打包这两个数据
如果我们以后需要添加其他东西也能直接在这个类中添加
虽说这东西是写好了
但是要往里填数据的时候就麻烦了
需要根据下面的TilingRules来一个一个添加和填写
这就又很不优雅了
既然咱们可以搞快速的制作一个RuleTile
自然就可以快速填入这个列表是不
避免篇幅过长就单独一个专栏了↓↓↓↓
假设我们这里已经搞定好TilingRules的写入
剩下的就是需要修改获取Tile的逻辑了
只需修改之前的UpdateAroundTileAtBaseTiles即可
经过测试是可以正常运行的
那么我就不再发一次测试的动图了
也省一点流量
接下来的下一篇就是实践切换Tile的功能了
如果感兴趣或者获得了帮助
请求来个一键三连(话说专栏能一键三连吗?)
如果内容有误或者建议也欢迎指出
关键词:
上一篇:甘肃民乐:雪润祁连山 小城显生机
下一篇:最后一页
精心推荐
- 上海发布进一步优化调整疫情防控的相关措施-天天快资讯
- 山西汾酒12月6日获沪股通净买入2.19亿-播报
- 去年京津冀工信部门推进签约570多项高端高新项目
- 京津冀区域协同创新指数增长迅速
- 1至2月河北省工业生产平稳开局 规模以上工业增加值同比增长6.0%
- 浙江绍兴15日0-21时新增41例确诊病例
- 沈阳大气优良天数达近5年来最好水平
- 辽宁实行市级政府集中监管 首站定点冷库加强疫情防控
- 辽宁省25个博士后团队冲刺全国博士后创新创业大赛
- 安徽省宿州市埇桥区大营镇大营新村调整为中风险地区
- 云南哀牢山4名地质调查人员因公殉职原因查明
- 全国首部涉及“非现场执法”的法规施行 浦东新区打造引领区数字化城市治理样板
- 杭州一封控小区完成第三轮核酸检测 前两轮检测均为阴性
- 集采未中选药品现在怎么样了?这组数据告诉你
-
(四川统战人说统战事)“海归”博士后王暾:专注灾害预警科技创新 打通灾害预警“最后一公里” 中新网成都12月15日电 (起钰婷)“国
-
中新网福建平和12月15日电 (周晓彬 马淑惠)12月15日,福建省平和县人民法院依法宣判蔡某金等10人涉恶犯罪案件。 法院审理查明,20
-
中新网郑州12月15日电 (记者 韩章云)针对近日网友实名举报中国农业发展银行太康县支行员工夏某华吃空饷一事,中国农业发展银行河南省
-
中新网宿迁12月15日电 (记者 刘林)“房子干净又敞亮,社区漂亮又整洁。”15日,家住江苏宿迁牛角淹社区的袁有亮谈起新家,兴奋的心情
-
中新网通辽12月15日电 (记者 张林虎)15日,记者从内蒙古自治区通辽市科左后旗公安局获悉,该局打掉一个帮助网络犯罪转账的“跑分团队
X 关闭
行业排行
- 1、深圳:积极推进旅游业恢复 扎实推动经济稳定增长
- 2、保定定州提出一系列发展措施 引领体品产业向智能化品牌化高端化迈进
- 3、河北省财政厅充分发挥财政职能作用 促进交通运输事业发展
- 4、太原阳曲人才公寓项目开启施工招标工作 共有1954套人才公寓满足人才居住需求
- 5、山西出口钢构件顺利发货 为企业加强科技创新开辟了更为广阔的发展空间
- 6、上半年泰州姜堰实现新签约亿元和1000万美元以上项目95个 计划总投资208.319亿元
- 7、清华博士非洲修电站 因为他,“内卷”成为网络热词
- 8、内蒙古新增本土确诊病例3例 均在呼伦贝尔满洲里市
- 9、31省份新增新冠肺炎确诊病例67例 其中本土50例
- 10、浙江新增本土确诊病例45例 其中宁波6例、绍兴39例
X 关闭
产业
-
不用跑北京 在家门口也能挂上顶...
日前,我省首个神经疾病会诊中心——首都医科大学宣武医院河北医院...
-
“十四五”期间 河北省将优化快...
从省邮政管理局获悉,十四五期间,我省将优化快递空间布局,着力构...
-
张家口市宣化区:光伏发电站赋能...
3月19日拍摄的张家口市宣化区春光乡曹庄子村光伏发电站。张家口市宣...
-
“张同学”商标被多方抢注 涉及...
“张同学”商标被多方抢注,官方曾点名批评恶意抢注“丁真” ...
-
山东济南“防诈奶奶团”花式反诈...
中新网济南12月15日电 (李明芮)“老有所为 无私奉献 志愿服...
-
广州新增1例境外输入关联无症状...
广州卫健委今日通报,2021年12月15日,在对入境转运专班工作人...
-
西安报告初筛阳性病例转为确诊病例
12月15日10:20,经陕西西安市级专家组会诊,西安市报告新冠病毒...
-
广东东莞新增本土确诊病例2例 ...
(抗击新冠肺炎)广东东莞新增本土确诊病例2例 全市全员核酸检测...
-
中缅边境临沧:民警深夜出击捣毁...
中新网临沧12月15日电 (胡波 邱珺珲)记者15日从云南临沧边境...
-
“土家鼓王”彭承金:致力传承土...
中新网恩施12月15日电 题:“土家鼓王”彭承金:致力传承土家...