实例
< Zh
Jump to navigation
Jump to search
实例(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支持或可视分组开关)。