From 2475048d6bb804bb4c9f74822b3f2bb2582f9f0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=A8=E8=90=BD=E5=9F=BA=E5=9B=B4=E8=99=BE?= <3161880837@qq.com> Date: Sat, 24 Jan 2026 08:23:41 +0800 Subject: [PATCH] =?UTF-8?q?fix(TickTool):=20=E4=BF=AE=E5=A4=8Duntil?= =?UTF-8?q?=E6=96=B9=E6=B3=95=E4=B8=AD=E5=AF=B9=E8=B1=A1=E5=A4=B1=E6=95=88?= =?UTF-8?q?=E6=97=B6=E7=9A=84=E6=BD=9C=E5=9C=A8=E5=B4=A9=E6=BA=83=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改until方法,在每次循环前检查对象是否有效,避免在对象被释放后继续调用predicate导致崩溃 --- scripts/Tools/TickTool.gd | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/scripts/Tools/TickTool.gd b/scripts/Tools/TickTool.gd index e7a4a59..063971e 100644 --- a/scripts/Tools/TickTool.gd +++ b/scripts/Tools/TickTool.gd @@ -6,8 +6,11 @@ static func frame(count: int = 1): for i in range(count): await WorldManager.tree.physics_frame static func until(predicate: Callable): - while not predicate.call(): - await frame.unbind(1).call(0) + var obj = predicate.get_object() + while is_instance_valid(obj): + await frame() + if predicate.call(): + break static func modifyAnimationKey(animator: AnimationPlayer, name: String, track: NodePath, trackType: Animation.TrackType, time: float, value: Variant): var animation = animator.get_animation(name) var trackIdx = animation.find_track(track, trackType)