diff --git a/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs b/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs index fb067a9..44ba25a 100644 --- a/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs +++ b/DungeonShooting_Godot/src/framework/activity/ActivityObject.cs @@ -386,6 +386,37 @@ { } + + /// <summary> + /// 子类需要重写 _EnterTree() 函数, 请重写 EnterTree() + /// </summary> + public sealed override void _EnterTree() + { +#if TOOLS + // 在工具模式下创建的 template 节点自动创建对应的必要子节点 + if (Engine.IsEditorHint()) + { + _InitNodeInEditor(); + return; + } +#endif + EnterTree(); + } + + /// <summary> + /// 子类需要重写 _ExitTree() 函数, 请重写 ExitTree() + /// </summary> + public sealed override void _ExitTree() + { +#if TOOLS + // 在工具模式下创建的 template 节点自动创建对应的必要子节点 + if (Engine.IsEditorHint()) + { + return; + } +#endif + ExitTree(); + } /// <summary> /// 显示并更新阴影 @@ -471,6 +502,20 @@ } /// <summary> + /// 进入场景树时调用 + /// </summary> + public virtual void EnterTree() + { + } + + /// <summary> + /// 离开场景树时调用 + /// </summary> + public virtual void ExitTree() + { + } + + /// <summary> /// 返回是否能与其他ActivityObject互动 /// </summary> /// <param name="master">触发者</param> diff --git a/DungeonShooting_Godot/src/game/activity/role/enemy/Enemy.cs b/DungeonShooting_Godot/src/game/activity/role/enemy/Enemy.cs index a602808..c9f9a7f 100644 --- a/DungeonShooting_Godot/src/game/activity/role/enemy/Enemy.cs +++ b/DungeonShooting_Godot/src/game/activity/role/enemy/Enemy.cs @@ -103,7 +103,7 @@ StateController.ChangeStateInstant(AiStateEnum.AiNormal); } - public override void _EnterTree() + public override void EnterTree() { if (!World.Enemy_InstanceList.Contains(this)) { @@ -111,7 +111,7 @@ } } - public override void _ExitTree() + public override void ExitTree() { World.Enemy_InstanceList.Remove(this); } diff --git a/DungeonShooting_Godot/src/game/activity/weapon/Weapon.cs b/DungeonShooting_Godot/src/game/activity/weapon/Weapon.cs index be9b74e..e12efa8 100644 --- a/DungeonShooting_Godot/src/game/activity/weapon/Weapon.cs +++ b/DungeonShooting_Godot/src/game/activity/weapon/Weapon.cs @@ -431,7 +431,7 @@ return 1; } - public override void _EnterTree() + public override void EnterTree() { //收集落在地上的武器 if (IsInGround()) @@ -440,7 +440,7 @@ } } - public override void _ExitTree() + public override void ExitTree() { World.Weapon_UnclaimedWeapons.Remove(this); }