天工维度魔兽争霸开发者社区-全国最大的TJ集中营-原提百万联盟

标题: 【通用】哈希表的用法和应用 [打印本页]

作者: Seago    时间: 2020-8-23 19:16
标题: 【通用】哈希表的用法和应用
简介
哈希表是一种数据存储方式。
目前WE主流的数据存储方式可以分为两种,一种是变量,一种是哈希表。数组的本质也是一种变量,游戏缓存基本可以被哈希表取代。
哈希表的使用并不困难,只不过是使用形式与变量有所差异,很多人不愿意接受新鲜事物所以不愿意去尝试探索,另外逆天功能的普及导致了在T作图时哈希表的存在感也不是很高。
使用哈希表存储数据之前需要先创建一个哈希表。哈希表有主次两个索引,均要求使用整数,理论上没有严格的大小限制。可以将哈希表看作是一个二维数组,只不过数组的索引必须是非负的,而哈希表则没有这个限制。
主次两个索引共同确定了一个存储地址。(扩展:从这个角度来看,我们也可以利用普通的数组来模拟一个二维数组。如我们想摸拟一个[10,10]维度的二维数组,那么两个索引的取值区间都是[0,9],想要在[1,8]位置上存储数据,则可以通过计算1*10+8=18,得到这个位置的实际索引值是18。)
就方便的角度而言,对于哈希表的两个索引不需要太过刻意的去设计,不重复、且便于自己记录即可,结合具体的应用场景可以添加一些特殊设计。
哈希表应用的示例
最为典型的代表是逆天自定义逆天局部变量
逆天自定义值的本质就是利用哈希表进行存储数据。给某个单位存储数据,则以该单位的整数地址做为主索引,具体的自定义属性作为次索引。如果是对单位类型绑定,则以单位类型作为主索引,以此类推。
索引对应的整数是如何产生的?针对单位、物品、特效等实体,他们都有独一无二的整数地址,即handleId,只要没有被排泄,都是唯一的,所以可以直接获取他们的整数地址作为索引。单位类型、物品类型等,他们本身就是一种特殊的整数,可以直接作为索引。
而自定义属性,通常是采用字符串的哈希值这个方式来转换成整数的。
如何确定主次索引?为什么要用单位来作为主索引、自定义属性作为次索引?主次索引的选择并没有严格的规范或限制,通常来说,自定义值是单位的一种扩展属性,存在着一种从属关系,自然而然就有了这种设计。当一个单位死亡之后,我们需要清除相关的数据,以单位为主索引,可以直接清空他对应的子表,即属于他的所有自定义值都可以被一次性清空。如果以自定以值作为主索引,那么只能一次性清空所有单位的这种自定义值,而无法针对某个单位进行统一的清除。总结来说,谁主谁次主要还是根据需求来,看看是否有一种潜藏的从属关系或分类需求
哈希表可以有哪些妙用
有的人会觉得,都是存储数据,用全局变量就可以了,干嘛要用哈希表?相比之下,变量更加松散,获取比较死板。而哈希表是一组结构化的数据,可以通过一系列的运算来集体获取,方便配置。
比较简单的使用,可以给不同的关卡配置不同的怪物、属性加成、奖励信息等,将关数作为主索引,随着关卡的推进,自动获取数据
另外许多新手比较头疼的计时器获取不到触发内的变量,也可以通过哈希表来传递,主索引使用计时器的整数地址即可。
复杂一点的,可以结合地图的玩法策划,实现一些人物属性、UI配置等的扩展,我此前的可配置物品合成系统也是基于哈希表实现的,只需要配置合成公式,在获取新物品的时候可以自动检查并合成,而不需在触发种编写冗长的if条件进行判断。
在T作图时,通常都是事件驱动的设计思路,直接使用逆天自定义值这类封装好的功能即可,操作简单。而J作图时,通常是功能驱动的设计思路,可以结合哈希表编写一些复杂的功能系统。




作者: 尘怨入梦    时间: 2020-8-23 19:18
阿巴阿巴,大佬
作者: 流行小炮    时间: 2020-8-24 05:26
感谢楼主        
作者: CNWorth    时间: 2020-8-24 09:01
这个实在,学习了~
作者: freecovld    时间: 2020-8-24 09:47
6666666666.看看
作者: q931358177    时间: 2020-8-25 19:33
阿巴阿巴,大佬
作者: alwk    时间: 2020-8-26 06:50
啊吧~阿吧·~学习一下
作者: a505214683    时间: 2020-8-28 01:03
大佬 学习了
作者: nelson    时间: 2020-8-28 16:10

阿巴阿巴,大佬
作者: 雨散云飞    时间: 2020-8-29 11:18
看看!!!!!
作者: mpdf1995    时间: 2020-8-29 14:25
厉害了我的楼主
作者: 孤坟大叔    时间: 2020-8-29 14:55
有没有图片呀,,
作者: Seago    时间: 2020-8-29 17:51
孤坟大叔 发表于 2020-8-29 14:55
有没有图片呀,,

因为平时是用J的,不太习惯搞T,后面会酌情加一些图片说明
作者: Sun丶包子    时间: 2020-8-29 22:25

大佬 学习了
作者: chance125    时间: 2020-9-1 14:10
过来看看 学习
作者: q345895843    时间: 2020-9-3 16:38
支持一下~
作者: yo梦    时间: 2020-9-5 15:01

感谢楼主        

作者: qzx378168227    时间: 2020-9-5 22:11
感谢楼主,学习一下
作者: sanyangzhihuo    时间: 2020-9-8 17:26
学习下 谢谢大佬
作者: 瀚海漂流    时间: 2020-9-11 03:13
阿巴阿巴,大佬
作者: jplenpdl    时间: 2020-9-19 01:36

看看!!!!!
作者: 347780682    时间: 2020-9-22 17:16
学习学习
作者: Phantom丶    时间: 2020-9-28 17:00
感谢大佬
作者: W2472032347    时间: 2020-10-10 19:51
感谢大佬分享
作者: FrostKing    时间: 2020-12-9 12:14
大佬牛逼
作者: demonsung    时间: 2020-12-16 14:07
学习学习
作者: uwjhrqxc    时间: 2021-1-3 20:03
感谢!感谢!
作者: 天天曰    时间: 2021-1-6 15:54
感谢楼主      
作者: nkjvxdaf    时间: 2021-1-23 16:42
大佬 学习了
作者: 萌新灰尘    时间: 2021-1-28 01:36
感谢楼主
作者: 泛光灯    时间: 2021-2-2 01:09
谢谢分享!
作者: yrtpestu    时间: 2021-2-4 00:17
学习了学习了谢谢分享
作者: gandi2019    时间: 2021-2-16 16:54
学习学习
作者: lhd11112222    时间: 2021-3-9 12:46
好东西 学习一下
作者: youwangjile    时间: 2021-3-11 22:09
学习了!不错很详细
作者: qqwwee147159    时间: 2021-3-18 02:52
学会了 活到老学到老
作者: 11cooker    时间: 2021-3-18 16:04
顶萌新路过
作者: yingsuhui    时间: 2021-4-10 17:25
好东西 加油
作者: 星火    时间: 2021-4-26 22:17
感谢分享
作者: han6991833    时间: 2021-4-27 16:46
瞧一瞧 看一看  
作者: cxkj1288    时间: 2021-4-28 09:08
谢谢分享!
作者: 天轮    时间: 2021-5-10 16:41
支持一波
作者: 自由如风    时间: 2021-7-12 10:40
这个不错
作者: uepthsrq    时间: 2021-7-29 16:20
感谢楼主
作者: 稻草刀    时间: 2021-8-2 18:32
学习学习下
作者: 幻夜的风    时间: 2021-9-9 20:15
学习一下

作者: 枫林小白虎    时间: 2021-9-9 21:08
学习一下
作者: jin2827    时间: 2021-9-17 21:38
正好需要 感谢 可以学习一波
作者: x352415    时间: 2021-9-30 19:35

学习了,不错,讲的太有道理了
作者: 贝蒂    时间: 2021-10-10 07:35
今天开始学习 都看一下
作者: 601831398a    时间: 2021-10-12 11:53
刚好需要学习~~
作者: MotherLand    时间: 2021-10-29 13:54
逆天等于哈希表
作者: MotherLand    时间: 2021-10-29 13:55
逆天等于哈希表
作者: hayagu    时间: 2021-10-29 16:18
感谢大佬分享 大佬牛蛙
作者: 牧少皇    时间: 2021-11-19 03:44
被训了 来补课
作者: xianshi    时间: 2021-11-20 02:16
学习一下!
作者: 万青    时间: 2021-12-16 19:21
走一走看一看
作者: 小脑薯胖了胖    时间: 2021-12-17 00:29
继续学习
作者: kabasiki    时间: 2022-3-19 13:27
大佬牛逼
作者: pfdtzbjk    时间: 2022-4-9 23:31
感谢大佬分享!
作者: 根本停不下来    时间: 2022-4-11 06:04
谢谢分享
作者: 斯内克    时间: 2022-5-5 09:44
这个实在,学习了~

作者: yangxinlin    时间: 2022-5-8 00:35
谢谢大佬教程
作者: rg001    时间: 2022-5-14 18:04
好东西,学习了
作者: 无忧小木子    时间: 2022-5-17 15:33
感谢大佬,学到了学到了

作者: 梦醒时分    时间: 2022-5-30 04:54
刚好需要学习哈希表 看看教程
作者: qq2442519362    时间: 2022-6-4 20:35
神了,看完突然就会了
作者: 初心    时间: 2022-6-15 20:54
学习学习!
作者: 学技术哪家强    时间: 2022-6-19 11:36
这个一定要学
作者: pyx    时间: 2022-6-19 23:06
这我必须给你一个大大的赞啊
作者: zebin0821    时间: 2022-6-28 09:49
看看有多长
作者: raxfal    时间: 2022-7-14 09:53
感谢分享
作者: gxmy2012    时间: 2022-7-17 07:04
感谢分享前来学习
作者: a1052808697    时间: 2022-8-6 11:00
啊吧!阿吧!学习!学习!
作者: 李再媚    时间: 2022-9-9 14:42
这还有异常内容,其实大多时候都是太长不看,但是写得好的,还是会忍着看的!
作者: 神之旅    时间: 2022-10-3 17:38
最近正好在学习哈希表,来看看
作者: chenhanshi    时间: 2022-10-5 11:24
这个实在,学习了~
作者: 是我是我    时间: 2022-10-5 22:28
阿巴阿巴,大佬
作者: reoalugn    时间: 2022-10-8 21:57
这个实在,学习了~
作者: angiou    时间: 2022-10-29 18:46
真的很不错 感谢!
作者: wdjnabon    时间: 2022-11-16 16:01
学习学习
作者: 永恒之奕    时间: 2022-11-26 17:56
我来看看
作者: 470908830    时间: 2023-1-2 07:03
感觉说的不错啊
作者: 观茶员    时间: 2023-1-18 13:34
哈希表的介绍
作者: q782263324    时间: 2023-2-22 14:07
学习!!!!!!!!!!!!!!!!
作者: GMs2484990328    时间: 2023-5-23 00:46
有用的教学  有视频就好了
作者: 15515521992    时间: 2023-10-13 10:05
学习学习
作者: 人间失格    时间: 2023-11-27 22:17
大佬 学习了
作者: 不吃果子狸    时间: 2023-12-6 19:06
我是一个没有脑子的傻逼我是一个没有脑子的傻逼
作者: eevvok    时间: 2024-2-24 14:17
支持一下,辛苦了,祝愿天工越来越好
作者: 敏敏敏敏敏敏    时间: 2024-7-15 16:53
感谢大佬,学习一下
作者: qwe136183    时间: 2024-8-20 07:46
学习 受教了




欢迎光临 天工维度魔兽争霸开发者社区-全国最大的TJ集中营-原提百万联盟 (http://bbs.mvprpg.com/) Powered by Discuz! X3.4