Godot 4.0 加载为占位符(InstancePlaceholder)的用法和特点

科技资讯 投稿 5000 0 评论

Godot 4.0 加载为占位符(InstancePlaceholder)的用法和特点

加载为占位符的功能设计上是用来辅助选择性加载场景的。比如一个很庞大的3D世界,玩家一时之间只会处在世界一小部分区域内,同时让整个地图驻留于内存是不现实的,此时需要选择性地灵活加载地图,使用Godot的"加载为占位符"功能可辅助这项工作的进行。
本人以开发2D游戏为主,发现此功能也可为我提供便利。

基本使用

    把希望动态加载的每个节点拖入"文件系统"对话框中,这将使场景被储存起来成为资源。

  1. 右键场景中刚刚操作的节点,勾选"加载为占位符"

  2. 就像获取一般节点一样获取到此节点,然后调用其CreateInstance(函数。C#需要将其转化为InstancePlaceholder才可调用该函数。

//C# code
var node = GetNode("../TheNode";
var placeholderNode = node as InstancePlaceholder;
var target = placeholderNode.CreateInstance(;

(启动游戏后,物体没有被立即加载
(↓点击"加载"按钮后,物体被加载了

效果与特点

如何取得实例化出来的节点?

CreateInstance(会返回实例化出来的节点。

反复实例化会怎样?

实例化后的物体替换了原有节点吗?

并且Godot会为节点取新的名字。


如果你时不时会移除、重新实例化此场景,这似乎是一个合适的设计。

值得注意的bug

若进行了修改,原场景将无法找到该资源,并且设置为占用符的节点无法实例化,更糟的是你正在编辑的场景可能因为无法找到此依赖而无法保存,
按理来说Godot内部应该会维护资源名称的变更,但是这次它没有(我使用的版本v4.0.2.stable.mono.official [7a0977ce2],该问题存在。

https://github.com/godotengine/godot/issues/37818

参考

https://docs.godotengine.org/en/stable/classes/class_instanceplaceholder.html

编程笔记 » Godot 4.0 加载为占位符(InstancePlaceholder)的用法和特点

赞同 (28) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽