这篇条目有关 Source引擎。如需详情,点击这里。

point_template

From Valve Developer Community
< Zh
Jump to navigation Jump to search
English (en)中文 (zh)Translate (Translate)
C++ 类层级
CPointTemplate
CLogicalEntity
CServerOnlyEntity
CBaseEntity
C++ point_template.cpp

Point template.pngPoint template classic.pngpoint_template是一个点实体,可在所有的 起源 起源 游戏中使用。

实体描述

point_template(en)实体(en)或实体集合转换为可多次实例化的模板。激活时(ForceSpawn),会按照创建时的相对位置生成模板中的实体。如果point_template未被移动,这些将是它们的原始位置。要在其他位置生成模板,可使用env_entity_maker(en)

Tip.png提示:模板内的任何logic_relay(en)实体在生成时会触发其OnSpawn输出,此特性可用于让模板实体在生成时执行特定操作。
Icon-Bug.png错误:InsurgencyDay of Infamy 此实体存在问题,通常会导致游戏崩溃。如果在Insurgency中将游戏模式设为训练,则可正常运作。
Icon-Bug.png错误:反恐精英:全球攻势 用此实体生成func_breakable_surf(en)会导致游戏崩溃。
Note.png注意:默认情况下无法实例化S_PreserveEnts(en)中的任何实体。可通过在载入地图时使用logic_auto(en)将模板的类名改为S_PreserveEnts中的实体来绕过此限制。生成模板时会显示"没有模板实体"的提示,但仍会正常工作。
Warning.png警告:具有globalname的实体若先前被销毁,则不会再次生成。

使用此实体前,请先阅读名称修正FGD增强等章节。

名称修正

为防止实体间的相互依赖(实体I/O、层级关系或其他名称引用),模板中的实体会被重命名,所有相互关联的输出会重新连接到新名称。命名格式为:'<原始名称>&XXXX',其中'&XXXX'会被替换为当前全局模板实例生成计数,因此使用通配符'<原始名称>&*'仍可找到它们。名称修正仅适用于通过输出生成的模板实体;point_template的输出不会被修正,其他对象引用模板实体的输出也不会。

特殊目标名(en)(!self等)对生成的对象有效,因此trigger_multiple(en)中指向!activator的输出可用于影响单个生成对象。通配符可引用所有由启用名称修正的point_template生成的实体。

注意若启用"不删除模板实体"标志,第一批生成的实体将带有&0002后缀。若不想进行名称修正(因为只需生成模板一次,或希望输入触发所有模板实例),请勾选"保留实体名称"生成标志。

证实:若启用spawnflag 2,未删除的实体是否会有&0001后缀?
Warning.png警告:point_template不会对其模板实体的参数覆盖框进行任何名称修正。
Note.png注意:必须通过键值或外部I/O连接按名称引用实体才能进行修正。若两者均不存在,则名称会被保留。若不需要此行为,可添加引用自身名称的虚拟键值(即使该键值实际上不存在于实体上)。

Keyvalues

Name (目标名称) <target_source>[ Edit ]
这个名称是其他实体通过 输入/输出(en) 或其他 关键值(en)(如 parentnametarget) 来引用该实体时使用的标识符。
该名称也会显示在 Hammer 编辑器的 2D 视图和 实体报告(en) 中。
参见:  所有实体均可使用的 通用键值、输入与输出(en)

Template 1 (Template01) to Template 16 (Template16) <target_destination>
目标名(en)(s)用于搜索要模板化的实体。可以是精确匹配或通配符(*)。若匹配多个实体,则所有匹配实体都会被包含在模板中。

Flags

Don't remove template entities : [1]
阻止自动删除模板实体。
Preserve entity names (Don't do name fixup) : [2]
使生成的实体名称与模板完全相同(不重命名)。

Inputs

ForceSpawn
在原始位置生成模板实例。

Outputs

OnEntitySpawned
!activator = !caller = this entity
生成此模板实例后触发。

FGD增强

来自TeamSpen210的Hammer插件,可使point_template显示连接到其模板所有实体的线条。

首先在base.fgd中找到此行并高亮相同字符:

@PointClass base(Targetname) iconsprite("editor/point_template.vmt") = point_template :

然后复制以下全部内容并覆盖原内容:

@PointClass base(BaseEntityPoint) 
	iconsprite("editor/point_template.vmt")
	line(255 255 0, targetname, Template01)
	line(255 255 0, targetname, Template09)
	line(255 255 0, targetname, Template02)
	line(255 255 0, targetname, Template10)
	line(255 255 0, targetname, Template03)
	line(255 255 0, targetname, Template11)
	line(255 255 0, targetname, Template04)
	line(255 255 0, targetname, Template12)
	line(255 255 0, targetname, Template05)
	line(255 255 0, targetname, Template13)
	line(255 255 0, targetname, Template06)
	line(255 255 0, targetname, Template14)
	line(255 255 0, targetname, Template07)
	line(255 255 0, targetname, Template15)
	line(255 255 0, targetname, Template08)
	line(255 255 0, targetname, Template16)
= point_template:

另见