Zh/Instance: Difference between revisions
< Zh
Jump to navigation
Jump to search
mNo edit summary |
|||
Line 36: | Line 36: | ||
{{l4d2|2}}之前的游戏需手动处理I/O。发送输入时直接引用修正后的实体名: | {{l4d2|2}}之前的游戏需手动处理I/O。发送输入时直接引用修正后的实体名: | ||
::{| class=standard-table | ::{| class=standard-table | ||
! || | ! || My Output || Target Entity || Target Input || Parameter || Delay || Only Once | ||
|- | |- | ||
| [[File:Io11.png]] || <输出名称> || <修正名>-<实体名> || <输入名> || <无> || 0.00 || 否 | | [[File:Io11.png]] || <输出名称> || <修正名>-<实体名> || <输入名> || <无> || 0.00 || 否 | ||
|} | |} | ||
接收输出需通过{{ent|logic_auto}}的 | 接收输出需通过{{ent|logic_auto}}的{{L|AddOutput}}动态添加: | ||
::{| class=standard-table | ::{| class=standard-table | ||
! || | ! || My Output || Target Entity || Target Input || Parameter || Delay || Only Once | ||
|- | |- | ||
| [[File:Io11.png]] || OnMapSpawn || <修正名>-<实体名> || AddOutput || <输出名> <目标实体>:<目标输入>::0:-1 || 0.00 || 否 | | [[File:Io11.png]] || OnMapSpawn || <修正名>-<实体名> || AddOutput || <输出名> <目标实体>:<目标输入>::0:-1 || 0.00 || 否 | ||
|} | |} | ||
{{note|若使用 | {{note|若使用{{L|TeamSpen's Hammer Addons|Hammer增强插件}},推荐改用<code>comp_kv_setter</code>实体在编译时而非运行时添加输出}} | ||
{{note|Hammer不会自动补全且会标记为无效,但游戏中仍有效。若实例的"实体名修正规则"设为后缀模式,需交换修正名与实体名的位置。}} | {{note|Hammer不会自动补全且会标记为无效,但游戏中仍有效。若实例的"实体名修正规则"设为后缀模式,需交换修正名与实体名的位置。}} | ||
Latest revision as of 07:38, 5 July 2025
实例(Instance)是通过func_instance实体引用的地图文件 (.vmf
),可配合func_instance_parms和/或func_instance_io_proxy实体使用。

GameData
键值。仅




mapversion
键值取自某个实例的版本号。实例的应用价值包括:
- 作为预制件 的动态替代方案——实例地图的修改会实时同步到所有引用处
- 替代可视分组 管理大型地图——将庞大地图拆分为多个易管理的小型地图(支持多人协作)
- 简化非正交角度构造——在独立地图中正向建造结构,再通过旋转的
func_instance
导入主地图(相比直接编译旋转结构,此法能减少刷子表面 数量从而优化性能,但可能影响物理特性 如滑行玩法 ) - 实现跨平台兼容——例如同时支持
求生之路和
求生之路2版本的地图
实例I/O系统
使用func_instance_io_proxy
求生之路2及后续版本支持实例收发输入输出。需在实例内配置名为
proxy
的func_instance_io_proxy实体。向实例内实体发送输入的格式如下:
接收实例内实体输出的格式:

无func_instance_io_proxy方案
求生之路2之前的游戏需手动处理I/O。发送输入时直接引用修正后的实体名:
接收输出需通过logic_auto的AddOutput 动态添加:

comp_kv_setter
实体在编译时而非运行时添加输出
清单系统
通过清单(Manifests)可进一步扩展实例功能。清单将地图内容拆分为特殊的"子地图"实例。与传统实例不同:
- Hammer无需单独打开VMF即可无缝切换子地图
- 子地图视为主地图的延伸(不支持名称修正或位置偏移)
- 单个子地图可被多个清单复用
清单的核心优势:
- 支持多人实时协作开发
- 隔离地图损坏风险(问题仅影响单个子地图)
- 为地图区域分配直观名称
- 优化版本控制系统(如Git)的管理效率
可通过"实例"菜单创建清单。



工具 -> 转换实例为选区
可将选区转为实例
编辑实例(预览)
,可在主地图参照下编辑实例




预编译器方案
Metapyziks开发的预编译器可在每次编译前将实例合并到主VMF。虽然GameData
方案已使其过时,但技术爱好者可通过二次开发添加新功能(如实例I/O支持或可视分组开关)。