调用Lua的简易触发器

From Valve Developer Community
Jump to: navigation, search
English (en)中文 (zh)
... Icon-Important.png
  • 步骤 1: 在确认你选择了"toolstrigger.vmat"材质之后,使用方块工具( Shift+B)创建一个方块,这个方块将会成为一个触发区域。
  • 步骤 2: 选择你所创建的方块,并点击 Tools(工具) > Tie To Entity(绑定到实体) (Ctrl+T). 这将会将你所创建的方块转换为触发实体。
  • 步骤 3: 选择触发实体,将它的类(class)改为"trigger_hero",这个触发实体意味着它将会在一个玩家进入或者离开触发区域的时候被触发,当然,还有很多触发类型,不过在本例中我们尽量做得简单一些。
  • 步骤 4: 为你的触发实体设置一个名字,同时设置它所指向的Lua程序文件,里面包含着你实体所要调用的函数。例如:如果你想从scripts/vscripts/my_file.lua 调用一个函数,你需要设置为Entity Scripts: my_file.lua
Warning.pngWarning: 当你将实体的指向Lua文件设置为 Entity Scripts: my_file.lua,游戏在开始运行的时候,将会调用my_file.lua中的Activate 函数(如果有这么一个函数的话),所以,除非你想让 addon_game_mode.lua 中的Activate函数被多次调用,否则不要将指向文件设置为addon_game_mode.lua
  • 步骤 5: 在选中了触发实体之后,按 Alt+ Enter 键来打开实体属性面板,然后选择输出(Output)选项卡。
  • 步骤 6: 点击 "Add" (添加)按钮,添加一个名为 "OnStartTouch"(当开始接触)的输出,将这个触发实体设置为目标(Target),输入(Input)设置为 "CallScriptFunction",参数(parameter)为你所要调用的lua文件中的函数名。
My Output Target Entity Target Input Parameter Delay Only Once
Io11.png OnStartTouch trigger_name CallScriptFunction MyFunction 0.00 No
  • Step 7: 添加一个同样的输出,将名称改为 "OnEndTouch"(当结束接触),将参数(parameter)改为另一个函数。


在Lua中的函数实例:

function OnStartTouch(trigger)

	print(trigger.activator)
	print(trigger.caller)
	
end

function OnEndTouch(trigger)

	print(trigger.activator)
	print(trigger.caller)
	
end