游戏场景中能看见一个对象,为什么仍不能据此确认它已经进入保存内容?Godot 4.5-stable的官方Node类源文档,把场景树关系与owner归属分开说明。本文采用的是这份版本文档,不运行示例代码,也不根据画面替任何工程判断保存结果。
Node可以作为另一Node的子节点,组成树形结构;这样的节点树称为场景。父子关系首先回答节点怎样组织。owner另有条件:它必须是该节点的一位祖先。文档并没有把owner定义为任意对象,也没有说每个子节点的owner只能是直接父节点。“祖先”与“直接父节点”不能在转述时被压成同一个词。
保存关系由owner的说明继续展开。把owner节点打包到PackedScene时,它拥有的节点也会随之保存。于是,树上存在一条父子联系,与打包时哪个owner带上哪些节点,是相关却不等同的两层信息。只画出层级图,还没有完整回答持久化范围。
add_child的邻接说明把这一差别说得更具体:除建立父子关系外,若要子节点持久到PackedScene,还涉及owner。原文另指出,在编辑器中,不属于场景根owner的节点通常不显示在Scene dock,也不会保存;它还描述了对象在二维或三维视图中可见的情况。由此可见,视图里出现对象不能单独成为保存证明。
可以用一个没有真实工程对应的交接情境理解:记录甲仅说“对象已加入父节点下面”,记录乙还说明它属于哪个owner。前者说明层级,后者补充打包归属。这个比较不指示如何改项目,也不保证乙所说内容已经查实;它只是依据文档指出,一句“已经加入”可能仍缺少哪一种关系。
这里的owner是软件对象属性,不是作品著作权或游戏发行权。本文不提供保存步骤、代码修改或项目故障诊断,也不外推所有嵌套场景的完整行为。首发日期未知,所读范围为4.5-stable Node源文档的定义及邻接说明。理解这两种关系,有助于让场景交接围绕具体保存对象展开,而不是仅用屏幕可见性替代数据依据。
信息来源
本文基于上述公开资料整理,未使用来源页面的图片、视频或嵌入媒体。