|
写脚本的都知道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
|