|
有十个触发,它们的事件完全相同,不同的条件对应着不同的动作,并且动作是由N次判断组成的
比如这样
[trigger]
事件
单位 - XXXX 使用物品
条件
((被操作物品) 的类型) 等于 物品一
动作
自定义代码: local unit u=GetTriggerUnit()
自定义代码: local player p=GetOwningPlayer(u)
自定义代码: local integer id=GetConvertedPlayerId(p)
自定义代码: if udg_BOOLEAN[id] then
自定义代码: //do someting
自定义代码: else
自定义代码: if xxx then
自定义代码: elseif xxx then
自定义代码: elseif xxx then
自定义代码: endif
自定义代码: //do someting
自定义代码: endif
自定义代码: set u=null
自定义代码: set p=null
[/trigger]
这样在一个事件的开头就需要申明3个局部变量,有十个事件就要写十次,而
[trigger]
动作
自定义代码: local unit u=GetTriggerUnit()
自定义代码: local player p=GetOwningPlayer(u)
自定义代码: local integer id=GetConvertedPlayerId(p)
自定义代码: if udg_BOOLEAN[id] then
自定义代码: //do someting
自定义代码: else
自定义代码: //do someting
自定义代码: endif
自定义代码: set u=null
自定义代码: set p=null[/trigger]
这一段是通用的,也就是十个触发的前面全部是这样,不同的只是每个触发动作里如果判断不成立,则运行的动作不同
也就是每个触发的
[jass] if xxx then
elseif xxx then
elseif xxx then
endif[/jass]
这个部分不同
这十个触发仅仅是条件不一样,所以想问一下,如果写成如下情况,会不会效率高一点,既能节省代码量,亦能节省触发器数量...
[trigger]
事件
单位 - XXXX 使用物品
条件
任意条件成立
((被操作物品) 的类型) 等于 物品一
((被操作物品) 的类型) 等于 物品二
....................
((被操作物品) 的类型) 等于 物品十
动作
自定义代码: local unit u=GetTriggerUnit()
自定义代码: local player p=GetOwningPlayer(u)
自定义代码: local integer id=GetConvertedPlayerId(p)
自定义代码: if udg_BOOLEAN[id] then
自定义代码: //do someting
自定义代码: else
if ((被操作物品) 的类型) 等于 物品一 then
自定义代码: if xxx then
自定义代码: elseif xxx then
自定义代码: elseif xxx then
自定义代码: endif
elseif ((被操作物品) 的类型) 等于 物品二 then
自定义代码: if xxx then
自定义代码: elseif xxx then
自定义代码: elseif xxx then
自定义代码: endif
elseif ((被操作物品) 的类型) 等于 物品三 then
...............一直到物品十
自定义代码: endif
自定义代码: //do someting
自定义代码: endif
自定义代码: set u=null
自定义代码: set p=null
[/trigger]
以前爬帖时看到过一种说法,把一个触发拆分成几个来运行,把在动作里需要判断的条件放到触发器条件里判断效率会高一些,不知道是否属实...即使属实,是否适用于以上这种情况?
再就是...如果不是十个触发器,而只有三四个的情况时,上面这种整合型写法是否会更好一点?
因为在触发器条件里是多个or,每次运行一次触发就需要依次判断是否有条件成立,如果有三个条件,最多会判断三次,如果有几十个条件,那不是在满足某个条件之前会判断之前的几十个条件...那样效率不就没有分开写的高了... |
|