什么时候使用 preload

Table of Contents

preload() 是 Godot 中的一个函数,用于在游戏启动时(在任何脚本运行之前)加载资源。这对于在整个游戏中立即且频繁使用的资源非常有用,可以消除按需加载造成的延迟。

以下是使用 preload() 的情况:

  1. 初始化:当您需要在初始化节点或场景后立即可用的资源时,例如基本纹理、声音或脚本。
  2. 性能:避免游戏过程中出现卡顿或延迟,如果在游戏运行时加载资源,则可能会出现这种情况。预加载允许您在加载屏幕或游戏启动时加载资源。
  3. 依赖项:如果您的脚本或场景从一开始就依赖某些资源才能正常运行,则 preload() 可确保在尝试使用它们之前满足这些依赖项。

使用 preload() 的示例如下所示:

extends Node

# 预加载场景以便稍后实例化
var my_scene = preload("res://path/to/scene.tscn")

func _ready():
    # 可以立即实例化场景,不会有任何延迟
    var instance_of_scene = my_scene.instance()
    add_child(instance_of_scene)

但是,您不应将 preload() 用于:

  1. 大型资源:如果资源很大且不需要立即使用,预加载可能会导致更长的初始加载时间。
  2. 不常用的资源:很少使用或仅在特定条件下需要的资源应改用 load() 加载。
  3. 动态资源:处理在游戏过程中可能发生变化的资源或您希望更好地控制加载和卸载时间的资源时。

preload 的参数必须是常量, 因为 preload 是在编译期加载的. 如果您发现自己需要动态加载资源,请考虑使用 load() 或 ResourceLoader.load():

extends Node

func _ready():
    # 如果可能导致延迟,请异步加载资源
    var my_resource = ResourceLoader.load("res://path/to/resource.ext")

总之,当您需要在整个游戏中立即且一致地提供资源或优化性能至关重要时,请使用 preload()。对于动态或偶尔的资源需求,请选择 load() 或资源加载器方法。