Godot - 单例 / Singleton

Godot的单例和其他的语言写法不一样,不是通过构造类来实现的。。而是通过设置,没有错,类还是普通的类,声明成单例就行了。

接下来我来给你一步一步演示

1. 创建一个简单的单例模型

创建一个Node2D,并创建对应的类

extends Node
class_name Conf

func getStr():
  return "hellow"

2. 绑定成单例

打开项目设置


2068504-2fbc9e6acf8a7caa.png

到这个页面


2068504-07e04d7f50097a14.png

找到你需要绑定的类
2068504-90faa79ea9844459.png

设置好调用名称后,点击添加


2068504-e498a9a9273c8568.png

上面截图已经添加好了

3.检查

运行测试,选择树结构的远程模式,你会看到实时运行时已经帮你创建好了这个Conf


2068504-50fb1b7aef45824d.png

4. 调用

调用很简单,只要像普通的方式一样调用就好了
···
var gc = get_node("/root/Conf")
print(gc. getStr());
···

自己动手试试看吧

官方教程:https://docs.godotengine.org/en/3.1/getting_started/step_by_step/singletons_autoload.html?highlight=singleton

问题:

官方例子可以使用gd代码直接单例,但是没有成功在3.1下,有懂的小伙伴可以留言提供一下接到,谢谢。
这里测试如果使用纯gd代码,在整个代码生命周期都不会被创建,只留了一个类名声明,未初始化
我会把这个问题提交给开发者

问题2:

当用纯gd代码作为单例时,绝对不要加关键字tool,也不要加class_name

问题发现了,但是只能等官方新版本解决,同数据持久化遇到的bug一样,问题来自开发软件本身,可能软件存在内存泄露,导致功能坍塌,重启app后这些功能都得到了恢复。。。

转载于:https://www.jianshu.com/p/6d1dd73c8d6b

猜你喜欢

转载自blog.csdn.net/weixin_33862041/article/details/91053777