关于“出现时执行状态”的使用方法

请告诉我如何使用以下图像中的“出现时执行状态”。

我原本以为当对象出现时,可以执行除初始状态以外的其他状态,但无论选择哪个状态,都会从初始状态开始。

您好,

感谢您的咨询。

此功能用于设置在场景内直接放置对象时执行的状态。

当选择“初始执行状态”时,将执行在.vs中选择的初始执行状态。

(您可以在.vs中右键点击状态来设置初始执行状态)

如果选择其他状态,则将执行所选状态。

通过.vs的执行动作“生成对象”等生成的对象,其生成时的状态将为该动作中所选的状态。

以上是该功能的概要,但我们在创建项目并检查“出现时执行状态”时,发现其按设置正常执行,未能重现您报告的情况。

如果场景内直接放置的对象状态没有变化,请您麻烦分享相关项目文件。

敬请您协助确认,非常感谢。

AGM_member_T 您好,

感谢您的回复。

关于该问题,我在创建共享项目时已经弄清楚了问题的发生方式。

似乎是在场景切换时会出现该现象。

我已附上文件,请您确认。

谢谢!

testproject_20251104.zip (1.1 MB)

(左右移动角色,靠近物体时,画面上会显示消息。)

■ 问题发生模式
游戏场景0 → 过渡 → 游戏场景1(在此处设置出现时的执行状态)

■ 问题未发生模式
游戏场景1(在此处设置出现时的执行状态)

1 个赞

您好,
感谢您分享案例详情和项目信息。
我已确认,
后续还请多多关照。

1 个赞

您好,

我们已确认您分享的项目,在场景切换后“出现时执行状态”未能正常工作。我们怀疑这是一个bug,将向开发团队进行确认。

作为临时解决方案,烦请您考虑以下应对措施:

  1. 在希望指定状态的 GameObject 的 VariableSettings 中添加 SceneIndex。
  2. 在希望指定状态的 GameObject 的子对象中添加 Node2D,并附加以下脚本:
extends Node2D

func _ready() -> void:
    AGMakerManager.game_scene_changed.connect(_on_after_change_scene)
    pass

func _on_after_change_scene(current_scene: GameScene):
    if current_scene.name == "GameScene":
        $"../VariableSettings".set_value("SceneIndex", 1)
    pass
  1. 在 vs 中添加用于场景切换的状态,并设置为初始状态,通过“开关/变量变化”链接,引用 SceneIndex 进行分支判断。

非常抱歉给您带来不便,恳请您确认以上内容。

感谢您的报告,后续还请多多关照。

AGM_member_T 您好,

感谢您的确认以及替代方案的建议。目前我们正按照每个必要的执行状态分别创建对象,因此暂时将按此方式进行推进。不过,考虑到未来可能会需要此功能,恳请您予以支持和处理。

此外,除了此次事件外,还有一些场景切换后的行为表现异常,也希望能一并确认一下(目前尚未详细验证具体发生条件,但推测可能还存在其他类似问题):

  • 游戏进行中用于暂停的等待动作无法正常执行
  • 发射子弹时的发射位置会因场景不同而变化(通过连接器指定)
  • 场景切换后,玩家在DynamicWater中的显示时有时无

烦请协助确认,非常感谢!

1 个赞

感谢您的报告。
我们也将继续确认此事。
敬请继续支持。

1 个赞

AGM_member_T 您好,

感谢您的联系。关于上述问题,我发现当存在场景切换和不存在场景切换时,行为有所不同,因此请您确认以下步骤:

另外,我正在尝试通过以下步骤将 ImageGauge 与 HP 数值显示结合使用,但如果有更简单的方法,请告知。

■ 步骤

  • 在游戏场景的 CanvasLayer(UI)中放置对象 A
  • 为对象 A 的动作设置“显示文本”
    → 设置为显示 Player 对象的变量「HP」

■ 结果

  • 存在场景切换:HP 无法显示
  • 不存在场景切换:HP 可以正常显示

testproject_20251111.zip (1.1 MB)

1 个赞

让您久等了,我们已在今日发布的1.1.6版本中进行了修复。

2 个赞

Moonling 您好,

感谢您的回复。

我已确认 1.1.6 版本,确认“初始执行状态”可以被更改。

不过,不知是否与上述更改有关,BaseSettings 中的“消失后复活条件:场景切换”似乎未能正常工作,烦请您确认一下。

■ 问题现象:
① 在场景1中放置以下对象
※ 设置 BaseSettings 中的“消失后复活条件:场景切换”
・Enemy1 初始执行状态:action1
・Enemy2 初始执行状态:action2

② 在场景1中使上述对象消失后,切换至场景2

③ 从场景2切换回场景1

④ 场景1中各对象的状态如下:
・Enemy1 AnimationPlayer 的 Reset 被播放(状态未切换至 action1)
・Enemy2 AnimationPlayer 的 Reset 被播放(状态未切换至 action2)

※ 如果 AnimationPlayer 中不存在 Reset,则 Enemy1 和 Enemy2 均会执行 action1。

1 个赞

isa先生:

您好,感谢您的联系。

目前我在手头的项目中无法重现该问题,非常抱歉。为了进一步确认详情,能否请您共享相关的项目?给您添麻烦了,敬请确认,非常感谢!

AGM_member_T 您好,

您好,感谢您的关照。

我已将项目文件附上,请您查收。

testproject_2025-11-17.zip|附件 (1.1 MB)

如果我的设置方法有误,请随时告知。

■ 操作步骤:

  • 为 test 对象分别设置初始状态:
    • INFO_TILE:红色方块
    • INFO_TILE2:绿色方块
  • 当 Player 对象靠近上述对象后离开时,各对象将消失
  • 当 Player 到达屏幕右端时,切换至场景2
  • 在场景2中,当 Player 到达屏幕左端时,切换回场景1

■ 结果:

  • 当返回场景1时,两个 test 对象均显示 Reset 动画(黑色方块)

敬请指教,谢谢!

1 个赞

非常抱歉回复晚了。

关于这里的“初始状态”,顾名思义,它指的是“对象出现时设定的状态”。
而“对象复活”则是从“对象消失时的状态”开始恢复的。
本次的情况就是由这个原因导致的。

如果您希望从“初始状态”开始恢复,建议设置一个能返回到初始状态的链接,或者使用“初始化对象”操作。

1 个赞