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

游戏中建立触发的问题

[复制链接]
发表于 2009-10-2 11:35:04 | 显示全部楼层 |阅读模式
游戏中通过CreateTrigger建立触发的方法,和写好触发然后勾掉“初始打开”的方法,效果一样么?使用前者能否缩短地图读取的时间?能否减少游戏中的内存占用?

用第二种勾掉初始打开的方法还是会在一开始建立触发,不过既然Disable掉了在游戏中是不是不会产生额外负担?

如果差别不大我想还是选用第二种方法,第一种写法触发器不太直观
发表于 2009-10-2 11:51:02 | 显示全部楼层
CreateTrigger 这个...一般是用来动态创造触发器的...

而且,对于CreateTrigger这种东西,要关掉它就要用到call DisableTrigger( GetTriggeringTrigger() )  也就是关掉某触发……但是创建这个触发的触发还是要LZ判断是否打开...

总之,别去理会CreateTrigger就对了- -

我印象中记得,初始打开载地图的时候会运行一次,而初始打开关掉,载入地图的时候不会运行,速度会变快

是初始打开,还是进入了游戏后在初始化触发里面打开,嘛,我偏向于后者
回复

使用道具 举报

发表于 2009-10-2 11:54:26 | 显示全部楼层
当然不一样了 CreateTrigger创建的触发是打开的 关闭触发操作的触发操作之后是关闭的
前者是否减少读图时间? 不明...你是说在游戏时动态创建? 那当然在读图时间是快了。但是多个动态注册触发的技能密集的出现在游戏某一时间段,会很卡。是要开始慢,还是要游戏时慢,这个要具体情况具体分析。
初始打开,的确是创建触发后关闭触发,多了一个操作当然是会慢一些的,至于慢多少,我想差别是很微小的,内部实现可能,仅仅是可能是一个布尔值而已。
动态创建删除触发确实不是啥好想法,但是有需求,也是需要用的。魔兽数据是重复使用的,某些的删除和销毁只是标记该数据不再使用,其他申请同类数据创建时,会优先使用标记为不能使用的
回复

使用道具 举报

 楼主| 发表于 2009-10-2 12:46:20 | 显示全部楼层

回 1楼(zjwzero) 的帖子

关于初始打开关闭后是否会在读图过程中运行,我测试的时候在创建触发后面加bjDebugMsg,发现还是要运行CreateTrigger()的。

所以我想知道CreateTrigger()这个工作会在读图的过程中造成多大负担
回复

使用道具 举报

 楼主| 发表于 2009-10-2 12:51:28 | 显示全部楼层

回 2楼(hunluan89) 的帖子

比如dota有近100个英雄,但每局只有10个英雄的技能触发会被用到,那么读图的时候把所有的触发都建立一遍然后再disable掉是不是有点浪费?(不过因为有dm模式所以也不好说……)

我想如果卡就在选英雄后集中卡一下好了,现在我读我做的图时25%的地方很慢,所以想要在游戏中创建,不知道这样是不是就该选择第一种了呢?
回复

使用道具 举报

发表于 2009-10-2 12:52:55 | 显示全部楼层
可以放心,代碼初始化的時間和載入遊戲物體的時間沒法比,後者遠遠長於前者,這點效率可以忽略
回复

使用道具 举报

发表于 2009-10-2 12:54:47 | 显示全部楼层
dota是動態註冊的,選了英雄后再create相應英雄的trigger,用T的話原理也是一樣,先在GUI編輯器裏面把觸發關閉了,需要用的時候再用打開觸發器打開
回复

使用道具 举报

发表于 2009-10-2 12:57:17 | 显示全部楼层
不会比你创建一个单位更消耗资源
回复

使用道具 举报

 楼主| 发表于 2009-10-2 13:04:21 | 显示全部楼层
这样……谢谢各位,这样一来就安心许多了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 21:24 , Processed in 0.037536 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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