1. 基础原理:
2. 实现步骤:
jass
// 触发器示例
function HideAbility takes nothing returns nothing
local unit u = YourUnit // 替换为你的争霸中单位变量
call UnitRemoveAbility(u, 'A000') // 移除主动技能A
call UnitRemoveAbility(u, 'A001') // 移除主动技能B
// 添加被动技能占位(可选)
call UnitAddAbility(u, 'A002') // A002为被动技能ID
endfunction
function ShowAbility takes nothing returns nothing
local unit u = YourUnit
call UnitAddAbility(u, 'A000') // 重新添加主动技能A
call UnitAddAbility(u, 'A001') // 重新添加主动技能B
// 移除被动占位技能
call UnitRemoveAbility(u, 'A002')
endfunction
3. 优化方案(推荐使用工程升级):
1) 创建两个单位类型:
2) 使用触发器替换单位:
jass
call ReplaceUnitBJ( oldUnit, newUnitType, bKeepHealth )
4. 高级技巧:
5. 注意事项:
jass
call SelectUnit(YourUnit, false)
call SelectUnit(YourUnit, true)
6. 动态控制方案:
jass
// 通过自定义值控制技能状态
if GetUnitUserData(u) == 0 then
call ShowAbility
call SetUnitUserData(u, 1)
else
call HideAbility
call SetUnitUserData(u, 0)
endif
建议优先使用工程升级方案,这种方法更稳定且兼容性好。单位如果需要完全隐藏,设置可以创建1x1像素的可隐透明技能图标作为占位符。
魔兽