魔兽地图编辑器专家_威城网


互联网 站内搜索
当前位置: 主页 > 魔编邮报 >

触发器与JASS优缺点

时间:2011-12-15 17:47来源:zhidao 作者:飞鸟各投林 点击:
简单讲解魔兽编辑器触发器和jass的优点与缺点。

魔兽编辑器触发器的优点是浅显易懂,比较形象,易于制作人了解编辑器的功能。
缺点也很显然易见
1 功能不全面 不灵活  Jass的很多功能在触发里没有相应的UI,不能完全发挥出作用
比如设置局部变量 创建触发器之类     都要用"自定义代码"  实质就是J了
灵活性上
和局部变量等T中没有相应UI相关的一些东西 都要用自定义代码 不知道J的话就不会用
2 效率差
并非直接调用本地函数
比如得到句柄整数地址
function GetHandleIdBJ takes handle h returns integer
    return GetHandleId(h)
endfunction

真正起作用的是它调用到的GetHandleId(h)
也就是说如果你用GetHandleIdBJ()
他并非直接为你转换句柄到整数 而是 再调用GetHandleId

其效率必然不如直接用GetHandleId
为什么要这么做呢 其实这是把函数封装起来 归根结底还是方便做成新人能看明白的东西
更加典型的例子是T的创建X个单位给X玩家于X点面向X
在J对应的函数
function CreateNUnitsAtLocFacingLocBJ takes integer count, integer unitId, player whichPlayer, location loc, location lookAt returns group
    return CreateNUnitsAtLoc(count, unitId, whichPlayer, loc, AngleBetweenPoints(loc, lookAt))
endfunction
而他调用的CreateNUnitsAtLoc是
function CreateNUnitsAtLoc takes integer count, integer unitId, player whichPlayer, location loc, real face returns group
    call GroupClear(bj_lastCreatedGroup)
    loop
        set count = count - 1
        exitwhen count < 0
        call CreateUnitAtLocSaveLast(whichPlayer, unitId, loc, face)
        call GroupAddUnit(bj_lastCreatedGroup, bj_lastCreatedUnit)
    endloop
    return bj_lastCreatedGroup
endfunction

乃不用理解上面的代码 我直接和你解释   
J里面关于创建单位的函数 不管是何种创建类型(创建到点 创建到坐标等) 都是直接创建 1个单位
并没有创建单位数量的参数  也没有触发里“面向指定角度”的参数
T中为了实现这一点  
对J里创建单位的函数进行封装
先设定一个CreateNUnitsAtLoc  实质是循环整数1到创建单位数量 也就是连续N次调用创建单位到点这个基本的函数
然后再调用让创建的单位面向点的函数
综合封装就成了T的CreateNUnitsAtLocFacingLocBJ()

虽然功能不错 不过很多情况下 比如我创建2个无面向角度到点要求的单位 他的效率还不如连续调用两次J里的创建单位在点的本地函数
说到底 效率没有本地函数 也就是最基本的函数高  
但是呢 如果你用了老狼啊之类的UI (后缀 R   或者cj)  就相当于 在触发器的图形化界面里添加了直接用本地函数来达到功能的选项 这时候T和J在效率上差不多

总之,你可以先做到主T ,自定义代码辅助 逐渐过渡到纯J或者并用   刻意纯粹用J的实际意义不大。
-----------------------
灵活性有个例子
就是YDWE编辑器里有傻瓜式dota屠夫钩子的白虎的射箭触发
但是用T你只能输入他给定的参数 其他额外效果就很难加入了
还不如自己直接写
多个基础的功能 比1个封装了N个基础功能的新功能灵活好用

(责任编辑:admin)
分享到:
顶一下
(4)
100%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:点击我更换图片
栏目列表
推荐内容
广告