func_instance_io_proxy
< Zh
Jump to navigation
Jump to search
func_instance_io_proxy
是一个逻辑实体,可在所有的 起源 游戏,自从
异形丛生 以来中使用。
实体描述
在实例内放置此实体的副本。通过代理的OnProxyRelay输出向实例内实体发送消息,使您能够从实例外部触发这些实体。从实例内实体向代理发送ProxyRelay消息,即可通过func_instance将这些事件用于向外部其他实体发送消息。



- 通过ProxyRelay向代理发送输出的实体只能输出到代理。若实体既有输出到代理又有输出到实例内其他实体,代理会将正常输出重定向到ProxyRelay#,导致I/O系统出现异常行为。
- 必须显式设置修正名称(Fix Up Name)。若实例的修正名称留空,则消息转发将失效,且实例内实体甚至不会在ent_fire命令的自动补全中显示(即使实例应自动生成名称时也如此)。
- 若实例嵌套在另一个实例中,则通过代理向实例发送消息将失效。可通过基于已知修正名称直接命名实体来规避此问题(而非使用代理转发)。 [todo tested in ?]

键值
- 名称 (targetname) <target_source>
- 其他实体引用此实体时使用的名称。
输入
- ProxyRelay <字符串 >
- 此消息将被转发,并可从实例访问。
输出
- OnProxyRelay
- 外部消息可触发此输出以在实例内引发事件。

ProxyRelay
和OnProxyRelay
。它们仅作为VBSP的占位符,编译时会自动映射到OnProxyRelay1
至OnProxyRelay30
。使用指南
创建输出
func_io_proxy的核心价值在于映射实例内实体的输出,使其成为func_instance实体自身的可配置输出。若无此功能,与外部世界的任何交互都需精心预设计划,极大限制实例的功能性。
要路由输出,需在源实体中向代理发送含ProxyRelay输入的输出:
detect_stuff_trigger - trigger_multiple 我的输出 > 目标实体 目标输入 参数 延迟 仅一次 OnStartTouch door_proxy ProxyRelay 0.00 否
func_instance实体现在能像使用自身输出一样使用此输出。

在func_instance的输出选项卡点击"添加",即可配置如下输出:
func_instance 我的输出 > 目标实体 目标输入 参数 延迟 仅一次 instance:detect_stuff_trigger;OnStartTouch zap_sound playsound 0.00 否 instance:detect_stuff_trigger;OnStartTouch !activator kill 2.00 否
理论上可向代理添加任意数量实体的任意数量输出。这使func_instance成为通配实体:借预设实体的输出,供地图制作者自由配置。
处理输入
实例代理可预定义重要输入,用于提示地图制作者实例的标准用法,或隔离外部可操作范围以避免逻辑错误。
要添加预定义输入,在代理的输出选项卡使用OnProxyRelay输出指向实例内实体的输入:
shaft_proxy - func_instance_io_proxy 我的输出 > 目标实体 目标输入 参数 延迟 仅一次 OnProxyRelay detect_stuff_trigger disable 0.00 否
代理配置输入后,外部实体即可通过func_instance调用:
elevator_arriving_relay - logic_relay 我的输出 > 目标实体 目标输入 参数 延迟 仅一次 elevator_shaft_instance instance:detect_stuff_trigger;Disable 0.00 否
您会注意到: 1. 无需填写目标输入字段 2. Hammer可能不标记此连接有效(可忽略,因Hammer不总是校验此类连接)
建议仅预定义实例的标准功能输入。非常规操作可直接通过实体实名向实例内实体发送消息(如elevator_shaft-detect_stuff_test)。此方法适用于:
- 不常复用的操作
- 需直接/非常规控制的行为
- 因过于基础或频繁而不值得配置代理的调用
另见
- func_instance
- func_instance_parms - 控制实例内参数的实体
- func_instance_origin - 定义实例中心点的辅助实体