找回密码
 点一下
查看: 1866|回复: 8

关于用缓存的疑问,大家讨论讨论,高手指点!

[复制链接]
发表于 2010-11-20 13:27:46 | 显示全部楼层 |阅读模式
           比如 一个函数 下来   

大家说  如果要用到等待   那么最好就用timerstart()  因为精度高   的确  如果用到0.02秒 这样的 必须得用  

但是用归用 1.传递参数就成了问题


大家有的推荐  用  2.缓存来  传递  

比如用  storeinteger() 中间  不是会创造 文件夹  然后里面会创一个  文件来暂时存储数据吗   然后用 getinteger()  函数可能写错了 见谅

我这么想的    费尽心机的用缓存 不就是为了节省吗   尽量少写全局变量   那么  如果传递参数只是瞬间的事  3.是不是可以传递完的瞬间就把它删除了呢   感觉创建文件 电脑都有延迟  如果是瞬间删除  这样达得到吗


还有   我看过缓存一般都是基本数据类型的 存储   

哪位大大能帮忙   写一下  利用 timerstart()  斜两个 函数   第2个函数是timerstart()调用的   内容可以是空的   只要做到  单位变量的传递  让 小弟学学 也让其他  这方面不很熟的人学学

对于会的人  应该可以很快写出来吧       毕竟RETURN BUG  感觉蛮抽象的啊   实用起来 怪怪的   帮忙写个  空的2个函数  传递 单位变量
发表于 2010-11-20 17:51:40 | 显示全部楼层
根本不存在什么“文件夹”,无论是缓存还是哈希表,都用的是哈希算法寻址。所以才能做到使用量虽然大,但是耗费的时间没有明显增加。


关于传递参数么... 话说一搜索就是一大片来着... 写个简单的给你吧...
[jass]globals
gamecache GC=InitGameCache("gc")
endglobals

function B takes nothing returns nothing
local timer t=GetExpiredTimer()
local integer tmr_hdl=H2I(t)

local integer unit_hdl=GetStoredInteger(GC,I2S(tmr_hdl),"unit")
local unit u=H2U(unit_hdl)

call KillUnit(u)

call DetroyTimer(t)
set t=null
set u=null
endfunction

function A takes unit u returns nothing
local timer t=CreateTimer()
local integer tmr_hdl=H2I(t)
local integer unit_hdl=H2I(u)
call StoreInteger(GC,I2S(tmr_hdl),"unit",unit_hdl)
call TimerStart(t,30,false,function B)

set t=null
set u=null
endfunction[/jass]
//---调用---
call A( GetTriggerUnit() )  //30秒后,这个触发单位会被杀死。
回复

使用道具 举报

 楼主| 发表于 2010-11-21 17:12:57 | 显示全部楼层
为什么  gamecache GC=InitGamecache("gc")   这1条  编译不通过呢   


难道是语法错误了   奇怪了 这一条是什么意思
回复

使用道具 举报

发表于 2010-11-21 20:29:43 | 显示全部楼层
游戏缓存变量的声明
回复

使用道具 举报

发表于 2010-11-21 20:41:21 | 显示全部楼层
引用第2楼elik720于2010-11-21 17:12发表的  :
为什么  gamecache GC=InitGamecache("gc")   这1条  编译不通过呢  


难道是语法错误了   奇怪了 这一条是什么意思


gamecache GC=InitGameCache("gc")

[jass]gamecache GC=InitGameCache("gc")[/jass]
回复

使用道具 举报

发表于 2010-11-21 21:10:36 | 显示全部楼层
呃... 抱歉,没检查语法
回复

使用道具 举报

 楼主| 发表于 2010-11-21 22:23:21 | 显示全部楼层
有个疑问    这种写法   如果是多个人用  是不是因为  创建的计时器 ID 不同而不冲突  


还是因为创建的计时器ID 相同 而且  都是UNIT  都是存储单位 而冲突呢  


是前者还是后者  还是2者都不正确    冲突不冲突
回复

使用道具 举报

发表于 2010-11-21 22:39:06 | 显示全部楼层
因为创建的计时器不同而不会冲突
回复

使用道具 举报

 楼主| 发表于 2010-11-22 12:33:22 | 显示全部楼层
还有 那个回答貌似没有清除缓存    那不是还占用着吗  要做到不泄露  应该 清楚  TIMER 的那个字段  还是只清空  KEY的那个字段
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-5-3 16:28 , Processed in 0.035218 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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