中EN
概念页

资源与场景实例化

Resources & Instancing

更新于 2026-10-16 约 1 分钟GodotResourcePackedScene实例化共享

Resource 是纯数据容器(纹理、网格、脚本、动画、音频等);节点消费 Resource。场景实例化是把 PackedScene 当作蓝图复制出运行时节点树——勿与 GPU MultiMesh 硬件实例化混淆。

原理

  • Resource:磁盘上几乎一切可加载物;同路径加载返回同一缓存实例(共享),无需也不应无故 duplicate。
  • 外部 vs 内嵌:有路径的外部资源 vs 写进 .tscn 的 built-in。
  • Instancing:.tscn 是蓝图;实例默认同结构,可覆盖导出属性;编辑器隐藏内部,表现像单个节点。
  • 代码:preload/load → instantiate()。

应用

  • 子弹、敌人、子弹用场景实例;数值表、对话、存档结构用自定义 Resource 子类 + @export。
  • 更改共享 Resource 会影响所有引用者——这是特性(享元),改独立副本需 duplicate()。

取舍

  • 共享省内存、易统一改;也易「改一处全军覆没」。
  • 硬件大批量相同网格用 MultiMesh(性能页),不是场景实例化。

参见

  1. Godot 官方文档(离线 HTML,stable) Godot 4.7/stable
  2. Godot 官方文档(离线 HTML,stable) Godot 4.7/stable
  3. Godot 官方文档(离线 HTML,stable) Godot 4.7/stable
  4. docs.godotengine.org/en/stable/getting_started/step_by_step/instancing.html
  5. docs.godotengine.org/en/stable/tutorials/scripting/resources.html

相关页面

游戏开发 · Godot节点与场景Nodes & ScenesGodot 把游戏抽象成「场景树」:节点是最小积木,场景是可复用的节点树蓝图;场景可嵌套实例化,同时扮演其他引擎中 Prefab 与关卡的角色。游戏开发 · Godot文件与数据 IO、存档思路Godot File IO & Persistence官方存档模式:用组标记持久对象 → 序列化(常 JSON 字典或自定义)→ 写入 user://。实践上 GDQuest 更推荐简单结构用 FileAccess.storevar,复杂结构用自定义 Resource + ResourceSaver。游戏开发资源管理器Resource Manager游戏由网格、材质、纹理、着色器、动画、音频、关卡布局、碰撞与物理参数等大量资源(也叫资产、媒体)构成。内存有限,所以引擎要保证每个资源在内存中只有一份(五个网格共用一张纹理时只载入一份)。每个引擎都有某种资源管理器:有的是统一集中的子系统,有的散布在多年间由不同人写的各个子系统中,但职责和要解决的问题是一样的。本页讲运行时部分:职责、文件组织与归档、文件格式、资源 GUID、资源注册表、生命周期(引用计数)和资源的内存管理;交叉引用与加载后初始化见 资源交叉引用与加载后初始化,离线工具链见 资产管线与工具链。游戏开发资源交叉引用与加载后初始化Resource Cross-References & Post-Load Initialization资源之间以任意方式相互引用(网格引用材质,材质引用纹理),整个资源数据库是一张有向依赖图。内存中的指针离开运行中的程序就失去意义,所以存盘时要把引用改写为 GUID 或文件内偏移,加载后再修正 (fix up) 回指针;含非 POD 的 C++ 对象还要用 placement new 调用构造函数;跨文件的外部引用要先加载全部相关文件。加载后通常还需要按资源类型做加载后初始化(以及释放前的拆除)。游戏开发原型模式Prototype Pattern原型模式 (Prototype Pattern) 的核心思想是“一个对象可以生成与自己相似的对象”:生成器持有一个原型实例,通过 clone() 复制出类和状态都相同的新对象。Nystrom 认为这个设计模式本身在现代游戏中很少是最佳答案,更有价值的是“原型委托 (delegation)”用于数据建模,让数据条目继承另一条目的属性,减少重复。游戏开发享元模式Flyweight Pattern享元模式 (Flyweight Pattern) 把对象的数据拆成可共享的“内在状态”和每个实例独有的“外在状态”,让大量对象共用一份内在状态。森林里成千上万棵树共用一份网格和纹理,以及瓦片地图中每格只存一个指向共享地形对象的指针,都是它的典型应用。

被这些页面引用2 篇

输入关键词开始搜索

滚轮或双指缩放 · 拖动平移 · 双击放大 / 还原