Android证书移动全攻略:从手动安装到自动化脚本部署
2026/7/6 23:24:34
许多新手把逻辑全塞进
_process,结果卡顿、逻辑乱序。本文拆解 Godot 节点生命周期:加载、就绪、物理帧、普通帧、输入、退出,并给出“放哪写什么”的范式与性能建议。
心法:运动/碰撞放
_physics_process,视觉/插值放_process,初始化放_ready,输入优先_unhandled_input。
_init可选)。_enter_tree→_ready。_process→_physics_process按引擎节奏交替。_input→ UI →_unhandled_input。_exit_tree→queue_free清理资源。@onready var anim := $AnimationPlayer func _ready(): anim.play("idle") $Area2D.body_entered.connect(_on_body_entered)_init里找节点,场景尚未装配。func _process(delta): sprite.modulate = sprite.modulate.lerp(Color.WHITE, 0.1) ui_time += delta label.text = format_time(ui_time)func _physics_process(delta): velocity.y += gravity * delta move_and_slide()move_and_slide/move_and_collide等物理 API,保证稳定性。_unhandled_input,避免与按钮焦点冲突。func _unhandled_input(event): if event.is_action_pressed("pause"): toggle_pause() get_viewport().set_input_as_handled()_input。func _exit_tree(): SignalsBus.enemy_spawned.disconnect(_on_enemy_spawned)_physics_process。null instance报错;改用@onready或放到_ready。_process里连接信号会导致多次绑定;连接操作放_ready,必要时先disconnect。queue_free或call_deferred("free")。_unhandled_input,或在_input调用accept_event()。_process内避免频繁创建对象(如 new Vector2),可复用向量或在类成员预存。_physics_process,中频逻辑用 Timer,低频逻辑用yield/await或状态机驱动。set_process(false)、set_physics_process(false)关闭回调,UI 场景静态时尤为有效。func _ready(): _init_inputs() _init_signals() func _physics_process(delta): _update_gravity(delta) _update_move(delta) _apply_motion() func _process(delta): _update_animations(delta) _update_ui(delta)print,运行一次即可确认调用次序。_process和_physics_process是否被启用。_ready,物理_physics_process,表现_process,输入_unhandled_input,清理_exit_tree。_process;关闭不需要的处理;信号连接放_ready,解绑放_exit_tree。