魔兽首页最新地图防守地图对抗地图角色剧情TD塔类图标准战役ORPG地图其它地图
魔兽论坛攻略秘籍补丁工具RPG 录像制图教学制图资源魔兽战队新图试玩通魔作坊

您的位置:魔兽争霸U9网 >> 制图教学

[技术]Tiveone第一讲 - 使用Jass动态注册事件

作者:Tiveone    文章来源:U9论坛    点击数:    更新时间:2006-8-30 19:49:43
[技术]Tiveone第一讲 - 使用Jass动态注册事件
大家好,我是Tiveone,现在以及将来我将为大家讲解一些 WE 的进阶技术
这次为大家讲的是动态注册事件

相信大家有遇见过需要注册大量单位的事件吧!
比如:我要使地图上的所有单位的生命值在小于或等于50的时候,使其无敌。
可解决办法之一就是:将所有单位都在编辑器中创建好,并注册事件。
这方法固然好,却不怎么现实,首先其弊病就是导致地图加载量变大,增加读取时间。并且还会使触发器注册多余的事件。

而另一个方法就是动态注册事件
动态注册事件的好处:没有上述方法的弊病,并且最大限度减少内存占用

废话不多说,直接说实现方法。
事例还是上面所说的那个

首先,我们为写一个模板供需要注册时间的单位使用

//当触发注册的事件时调用的函数
function OnUnitAmort takes nothing returns nothing
    //设置触发单位为无敌
    call SetUnitInvulnerable( GetTriggerUnit(), true )
    //破坏这个触发器,即下面的RegisterUnitAmortEvent所创建的触发器
    //这样就不会导致该触发被多次调用,并且还能清理该触发所占用的内存
    call DestroyTrigger(GetTriggeringTrigger())
endfunction

//注册模板
function RegisterUnitAmortEvent takes unit witchUnit returns nothing
    //创建一个触发器
    local trigger rTrg = CreateTrigger()
    //为创建的触发器注册事件:当单位witchUnit的生命值小于或等于50的时触发事件
    call TriggerRegisterUnitLifeEvent( rTrg , witchUnit, LESS_THAN_OR_EQUAL, 50 )
    //注册触发器事件响应后所调用的函数
    call TriggerAddAction( rTrg, function OnUnitAmort )
endfunction

模板就完成了,下面我们只需要在游戏中的时候调用RegisterUnitAmortEvent函数注册单位就可以了。
当然,动态注册事件的功能不只于此,只要是需要注册大量重复事件的触发都可以应用,具体就要看个人了。

附件为演示

[ 本帖最后由 Tiveone 于 2006-1-27 16:56 编辑 ]

附件: [动态注册事件演示地图] DynamicEvent.rar (2006-1-27 16:43, 17.37 K)


责任编辑:admin
进入论坛参与针对本文章的讨论
文中部分附件请进入论坛下载
本文章地址:
  • 上一篇:通魔之路(WE主讨论区):[吸血鬼的完美主义]关于人物模型
  • 下一篇:
  • 相关文章

    进入论坛参与针对本文章的讨论用户评论

    地图 攻略
    热门搜索: 仙之侠道 真三国无双 Dota Allstar

    地图专区导航

    热门地图攻略

    热门地图周排行

    最新推荐地图

    地图下载总排行

    关于我们  -  联系我们  -  广告优势  -  广告服务
    建议意见:玩家点击留言  商务合作:客户点击留言
    西安优久数码科技有限公司 版权所有 陕ICP证08000654号