GFProjectileEmitter3D¶
API Reference / Combat / 类索引
- 路径:
addons/gf/extensions/combat/projectiles/gf_projectile_emitter_3d.gd - 模块:
Combat - 继承:
Node3D - API:
public - 类别:运行时句柄 (
runtime_handle) - 首次版本:
3.17.0
通用 3D 发射体生成节点。 负责按场景目录和生成点模式实例化发射体,并把本次发射上下文交给 发射体的 launch()。它不解释伤害、阵营、弹药、冷却或特效规则。
成员概览¶
| 类型 | 名称 | 签名 |
|---|---|---|
| 信号 | projectile_emitted |
signal projectile_emitted(projectile: Node, projectile_context: Dictionary) |
| 信号 | projectile_emit_failed |
signal projectile_emit_failed(reason: StringName, details: Dictionary) |
| 属性 | projectile_scene |
var projectile_scene: PackedScene = null |
| 属性 | projectile_catalog |
var projectile_catalog: GFProjectileCatalog = null |
| 属性 | default_projectile_id |
var default_projectile_id: StringName = &"" |
| 属性 | spawn_pattern |
var spawn_pattern: GFProjectileSpawnPattern3D = null |
| 属性 | default_context |
var default_context: Dictionary = {} |
| 属性 | spawn_parent_path |
var spawn_parent_path: NodePath = NodePath("") |
| 属性 | launch_after_spawn |
var launch_after_spawn: bool = true |
| 属性 | disable_auto_launch_before_add |
var disable_auto_launch_before_add: bool = true |
| 属性 | use_object_pool |
var use_object_pool: bool = false |
| 属性 | release_pooled_projectile_on_finish |
var release_pooled_projectile_on_finish: bool = true |
| 属性 | object_pool_utility |
var object_pool_utility: GFObjectPoolUtility = null |
| 方法 | emit_projectile |
func emit_projectile(projectile_context: Dictionary = {}, projectile_id: StringName = &"") -> Node: |
| 方法 | emit_projectiles |
func emit_projectiles( projectile_context: Dictionary = {}, projectile_id: StringName = &"", emit_count: int = -1 ) -> Array[Node]: |
| 方法 | resolve_projectile_scene |
func resolve_projectile_scene(projectile_id: StringName = &"") -> PackedScene: |
| 方法 | resolve_spawn_parent |
func resolve_spawn_parent() -> Node: |
| 方法 | prewarm_projectiles |
func prewarm_projectiles(count: int, projectile_id: StringName = &"") -> bool: |
信号¶
projectile_emitted¶
- API:
public
发射体已生成。
参数:
| 名称 | 说明 |
|---|---|
projectile |
生成的发射体节点。 |
projectile_context |
本次发射上下文。 |
结构:
projectile_context: Dictionary,本次发射上下文副本,包含默认上下文、调用方上下文和 spawn 信息。
projectile_emit_failed¶
- API:
public
发射失败时发出。
参数:
| 名称 | 说明 |
|---|---|
reason |
失败原因。 |
details |
失败细节。 |
结构:
details: Dictionary,失败上下文,通常包含 projectile_id、spawn_index 等诊断字段。
属性¶
projectile_scene¶
- API:
public
默认发射体场景。未使用目录或目录缺少 ID 时使用。
projectile_catalog¶
- API:
public
可选发射体目录。
default_projectile_id¶
- API:
public
默认目录 ID。
spawn_pattern¶
- API:
public
3D 发射点模式。为空时使用发射器自身全局变换。
default_context¶
- API:
public
默认上下文。每次发射会深拷贝后再合并调用方上下文。
结构:
default_context: Dictionary,默认发射上下文;每次发射会深拷贝后合并调用方上下文。
spawn_parent_path¶
- API:
public
可选生成父节点路径。为空时优先使用发射器父节点。
launch_after_spawn¶
- API:
public
是否在生成后调用发射体的 launch(context)。
disable_auto_launch_before_add¶
- API:
public
生成前是否关闭常见发射体的 auto_launch_on_ready,避免进入树时使用空上下文启动。
use_object_pool¶
- API:
public
是否使用 GFObjectPoolUtility 获取节点。池化场景应把 projectile 的 auto_launch_on_ready 设为 false。
release_pooled_projectile_on_finish¶
- API:
public
使用对象池时,是否在 projectile_finished 后自动归还节点。
object_pool_utility¶
- API:
public
可选对象池工具。为空时会从注入架构或最近的 GFNodeContext 查询。
方法¶
emit_projectile¶
- API:
public
发射单个发射体。
参数:
| 名称 | 说明 |
|---|---|
projectile_context |
本次发射上下文。 |
projectile_id |
可选目录 ID;为空时使用 default_projectile_id。 |
返回:生成的发射体节点;失败时返回 null。
结构:
projectile_context: Dictionary,本次发射上下文;会与 default_context 合并后传给发射体。
emit_projectiles¶
- API:
public
func emit_projectiles( projectile_context: Dictionary = {}, projectile_id: StringName = &"", emit_count: int = -1 ) -> Array[Node]:
按当前模式发射一批发射体。
参数:
| 名称 | 说明 |
|---|---|
projectile_context |
本次发射上下文。 |
projectile_id |
可选目录 ID;为空时使用 default_projectile_id。 |
emit_count |
请求生成数量;小于等于 0 时由 spawn_pattern 决定。 |
返回:成功生成的发射体节点列表。
结构:
projectile_context: Dictionary,本次发射上下文;会与 default_context 合并后传给每个发射体。
resolve_projectile_scene¶
- API:
public
解析当前要使用的发射体场景。
参数:
| 名称 | 说明 |
|---|---|
projectile_id |
可选目录 ID。 |
返回:找到时返回 PackedScene,否则返回 null。
resolve_spawn_parent¶
- API:
public
解析发射体生成父节点。
返回:有效父节点;找不到时返回 null。
prewarm_projectiles¶
- API:
public
预热对象池。
参数:
| 名称 | 说明 |
|---|---|
count |
预热数量。 |
projectile_id |
可选目录 ID。 |
返回:预热请求被接受时返回 true。