搜索
查看: 774|回复: 17

浅谈LUA技术--LUA脚本怎么用1个U变量储存多个变量数据

[复制链接]
发表于 2023-8-13 23:34:48 | 显示全部楼层 |阅读模式



写脚本的都知道U变量对于版本的宝贵程度,目前引擎总共只有499个U变量资源,用一个少一个!

但是在写一些复杂的功能时候又无法避免这个问题!因为很多数据必须要分开储存!

这个问题是在我写LUA灵兽的时候比较困惑的,数据多,变量资源占用多,当时也是突发奇想。。

如果一个U变量能储存多个数据就好了

于是我就开始尝试了各种解决办法,最后选择了字符串拆分和合并这个思路,没想到效果还非常棒!

和大家分享一下吧,希望对各位有帮助!

我的方法是使用string.sub()这个函数,它的功能是:可以按照规则截取字符串...


那么知道了它的功能如何利用好这个参数呢?


我们可以结合一个例子来理解一下:
例如我有一个功能,原本需要使用 U1,U2,U3,U4这四个U变量,如果使用string.sub()的话,那么只需要1个变量就能实现!(千万注意引擎U变量的储存长度)
未拆分前的数据:
U1=11
u2=22
u3=33
u4=44
1.储存变量
储存变量的时候我们可以利用链接符号".."
local test = u1..u2..u3..u4..u5..u6
那么print()的结果就是 "11223344”
可以理解为从头到尾的顺序每两位数值就是我们的u1-u4的变量了!
然后就可以把数据储存到一个U变量当中!


2.提取变量
提取变量的时候就要用到string.sub()函数了。。

                                local date = actor:getVal_U(UX)--之前储存的变量
                                在取变量之前要做一个判断,看下字符的长度是否符合要求,否则会报错!
                                if date >=10 then v1 = math.modf(string.sub(date,1,2)) end -- 取第一个变量
                                if date >=1000 then v1 = math.modf(string.sub(date,3,4)) end -- 取第二个变量
                                if date >=100000 then v1 = math.modf(string.sub(date,5,6)) end -- 取第三个变量
                                if date >=1000000 then v1 = math.modf(string.sub(date,7,8)) end -- 取第四个变量



OK,变量提取完成了!是不是特别简单就节省了3倍的变量资源?

那么我们在尝试的时候一定要注意几个方面,
1.储存的数据必须是数字,并且不要有小数点
2.注意引擎对U变量的最大储存长度
3.提取变量的时候要注意判断变量的长度

帖子里面只简单介绍了一些常规的用法,具体实践还需要各位根据实际情况加条件判断!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
 楼主| 发表于 2023-8-13 23:41:08 | 显示全部楼层
不建议用在频繁调用变量的功能上,,毕竟有个拆分的过程在...
发表于 2023-8-13 23:43:05 | 显示全部楼层
我顶,好贴
发表于 2023-8-14 00:14:40 | 显示全部楼层
如果lua有移位与或那会相当简单,学习了,比较好的办法,我是纯脚本算个十百千万亿,分开,然后再合成。
发表于 2023-8-14 01:57:05 | 显示全部楼层
简单道问题复杂化

点评

那你来说说还有哪些简单办法?别装  发表于 2023-8-14 03:05
 楼主| 发表于 2023-8-14 03:14:01 | 显示全部楼层
醉酒 发表于 2023-8-14 01:57
简单道问题复杂化

要不要你也分享点东西出来给大家看看怎么才能简单点?
发表于 2023-8-14 11:30:38 | 显示全部楼层
思路还是很棒的,不过在字符串拼接的过程中会额外耗费些内存和性能
发表于 2023-8-14 15:43:11 | 显示全部楼层
ini有多少数据不能存?
通区INI。。。。

点评

通区INI??你考虑过开服老G的感受么?  发表于 2023-8-14 16:46
发表于 2023-8-15 13:53:31 | 显示全部楼层

希望能帮到你!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

点评

高手就是高手,一目了然  发表于 2023-8-19 20:16
大神,你是用U变量做的唯一值ID索引来去归类每个角色在INI文件中的数据嘛?  发表于 2023-8-15 14:55
给大神点赞!  发表于 2023-8-15 14:14
发表于 2023-8-15 14:08:56 | 显示全部楼层

我X,太高端,没看明白一存多?

点评

应该是用U变量做的索引然后调用INI文件储存的数据,,我只是没想明白合区怎么办!  发表于 2023-8-15 14:50
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|HGEM2论坛

GMT+8, 2024-11-21 23:48 , Processed in 0.675528 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表