请选择 进入手机版 | 继续访问电脑版

 找回密码
 点一下
查看: 1319|回复: 17

【讨论+求助】从何着手优化每秒事件

[复制链接]
发表于 2014-2-2 18:00:28 | 显示全部楼层 |阅读模式
本帖最后由 allennai 于 2014-2-2 18:01 编辑

以每1秒/每0.5秒运行的事件相信大家用的不能再多,但达到一定数量的时候地图就会开始卡,怎么样才可以进行优化呢?从何处着手?
发表于 2014-2-2 18:36:52 | 显示全部楼层
其实我比较常用的事件是每0.02秒执行动作

对于这个事件导致的地图变卡,常见的问题有两类:
一类是因为内存泄露导致的内存占用过多,游戏运行速度变慢。这种问题容易出现在新手之间,因为排泄不完全之类的导致泄露。解决方法就没必要再说了。
另一类是因为同一时间执行的动作过多,或者地图上马甲单位过多导致地图变卡。马甲过多的话,少用马甲就行了;动作过多的话,减少动作数量,或者调整触发时间间隔就行了。
总之,作为地图,不卡顿,运行流畅才是最重要的。

点评

我模拟了一个回血系统,动作很少,就几条,但条件太广了,几乎全图的单位都判断运行一次,有的虽然没运行,但怎么说都判断过,通过动作if else判断过,但是没运行动作因为条件不达成的可能有很多,进入地图慢慢就会  详情 回复 发表于 2014-2-3 11:05
回复

使用道具 举报

 楼主| 发表于 2014-2-3 11:05:12 | 显示全部楼层
lo 发表于 2014-2-2 18:36
其实我比较常用的事件是每0.02秒执行动作

对于这个事件导致的地图变卡,常见的问题有两类:

我模拟了一个回血系统,动作很少,就几条,但条件太广了,几乎全图的单位都判断运行一次,有的虽然没运行,但怎么说都判断过,通过动作if else判断过,但是没运行动作因为条件不达成的可能有很多,进入地图慢慢就会断卡了……
回复

使用道具 举报

发表于 2014-2-3 17:39:23 | 显示全部楼层
嗯~优化是肯定要有的~
尤其是这种全图选取,你可以换一种方式~

准备一个单位组g,所有符合条件的单位动态的加入g,每秒检测的就只有g中单位~
如果发现g中有不符合条件者,那么将其移除即可~

此外,当发现g中单位一个都没有时,你还可以关闭回血的触发器,直到g中有单位时再开启~

相比使用每xxx秒事件,更推荐计时器+计时器到期事件来着的...

点评

运用将单位加入单位组再运用我加了,但还是一样会卡。 我是这样设置的。 设置DWZ = 全地图单位 选择DWZ 内的所有单位 判断条件 动作 清空单位组 删除单位组 结果到了游戏内卡,出兵以后爆卡  详情 回复 发表于 2014-2-3 22:13
回复

使用道具 举报

 楼主| 发表于 2014-2-3 22:13:39 | 显示全部楼层
夜の星 发表于 2014-2-3 17:39
嗯~优化是肯定要有的~
尤其是这种全图选取,你可以换一种方式~

运用将单位加入单位组再运用我加了,但还是一样会卡。
我是这样设置的。
设置DWZ = 全地图单位
选择DWZ 内的所有单位
  判断条件
  动作
清空单位组
删除单位组
结果到了游戏内卡,出兵以后爆卡

点评

别每次都设置单位组啊 任意单位进入地图全都添加进一个单位组  详情 回复 发表于 2014-2-4 23:46
回复

使用道具 举报

发表于 2014-2-4 23:46:15 | 显示全部楼层
本帖最后由 拜里热就脱 于 2014-2-5 00:24 编辑
allennai 发表于 2014-2-3 22:13
运用将单位加入单位组再运用我加了,但还是一样会卡。
我是这样设置的。
设置DWZ = 全地图单位


别每次都设置单位组啊
任意单位进入地图全都添加进一个单位组

额,不会复活的单位死后要移除

点评

按照你的方法去做,进入可用区域加入单位组,死亡的时候踢出。 每秒选择单位组内的单位动作。 结果无比的顺畅  详情 回复 发表于 2014-2-6 00:28
我是每秒设置一个空的单位组,选取全部单位放入,运行条件判断动作之后清空并删除单位组。 这样可以么?  详情 回复 发表于 2014-2-5 15:00
回复

使用道具 举报

 楼主| 发表于 2014-2-5 15:00:37 | 显示全部楼层
拜里热就脱 发表于 2014-2-4 23:46
别每次都设置单位组啊
任意单位进入地图全都添加进一个单位组

我是每秒设置一个空的单位组,选取全部单位放入,运行条件判断动作之后清空并删除单位组。
这样可以么?

点评

这样做会卡?  详情 回复 发表于 2014-2-5 18:39
嗯,所以你卡了,对  发表于 2014-2-5 17:15
回复

使用道具 举报

 楼主| 发表于 2014-2-5 18:39:34 | 显示全部楼层
allennai 发表于 2014-2-5 15:00
我是每秒设置一个空的单位组,选取全部单位放入,运行条件判断动作之后清空并删除单位组。
这样可以么?

这样做会卡?
回复

使用道具 举报

发表于 2014-2-5 19:20:33 | 显示全部楼层
中心计时器

点评

表示不会用这东西,连哪里设置都找不到  详情 回复 发表于 2014-2-6 00:27
回复

使用道具 举报

 楼主| 发表于 2014-2-6 00:27:38 | 显示全部楼层

表示不会用这东西,连哪里设置都找不到
回复

使用道具 举报

 楼主| 发表于 2014-2-6 00:28:35 | 显示全部楼层
拜里热就脱 发表于 2014-2-4 23:46
别每次都设置单位组啊
任意单位进入地图全都添加进一个单位组

按照你的方法去做,进入可用区域加入单位组,死亡的时候踢出。
每秒选择单位组内的单位动作。

结果无比的顺畅
回复

使用道具 举报

发表于 2014-2-6 00:52:44 | 显示全部楼层

恭喜你中奖!

点评

果断也将防守图的也给换了  详情 回复 发表于 2014-2-6 03:18
回复

使用道具 举报

 楼主| 发表于 2014-2-6 03:18:49 | 显示全部楼层

果断也将防守图的也给换了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 04:22 , Processed in 0.241525 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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