找回密码
 点一下
查看: 4238|回复: 6

【请教】GetFilterUnit()和GetEnumUnit()有啥区别 ?[已解决]

[复制链接]
发表于 2010-2-9 01:51:54 | 显示全部楼层 |阅读模式
在学习Filter机制的时候遇到这两个API,好像都是Get Next Unit,不过他们有什么区别呢?
发表于 2010-2-9 04:31:05 | 显示全部楼层
放进触发器里
GetFilterUnit()是“匹配单位”
GetEnumUnit()是“选取单位”
回复

使用道具 举报

发表于 2010-2-9 04:47:24 | 显示全部楼层
是哦,仔细一看,真想不出区别来。同求教...
回复

使用道具 举报

发表于 2010-2-9 06:21:32 | 显示全部楼层
引用第2楼Conflux于2010-02-09 04:47发表的  :
是哦,仔细一看,真想不出区别来。同求教...
……………………
是有区别的。而且区别很大。
GetFilterUnit()适用于boolexpr条件。
而GetEnumUnit()适用于code动作。
比如:
选取地图范围内【匹配单位GetFilterUnit()的所有者是玩家1】的单位,做动作:
对【选取单位GetEnumUnit()发布Stop命令】
回复

使用道具 举报

发表于 2010-2-9 10:13:45 | 显示全部楼层
GroupEnumUnit(group g,xxxxx,boolexpr a)

的时候会对范围内的所有单位调用一次boolexpr a

如果这个boolexpr返回true就会把这个单位加入单位组g

此时使用GetFilterUnit()可以得到当前单位

----------------------------------------------------------------------
ForGroup(group g,function b)

的时候会对单位组g内的所有单位调用一次b

此时用GetEnumUnit()可以得到当前单位
回复

使用道具 举报

 楼主| 发表于 2010-2-9 13:50:31 | 显示全部楼层

回 4楼(eff) 的帖子

是不是我可以认为,只要涉及Filter的就用GetFilterUnit,而其他情况下取Unit用GetEnumUnit?
回复

使用道具 举报

发表于 2010-2-10 18:50:32 | 显示全部楼层
纯粹是两个函数里面使用不同的东西而已,在ForGroup里面你用GetFilterUnit是不能获得东西的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-12 05:14 , Processed in 0.032504 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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