一、单例
单例是一个可以在任何脚本直接访问的对象,分为内置单例与自定义单例。内置单例不是节点,主要成员是各类Server,开发者可以使用它们直接控制游戏程序的图形与音效等内容。
我们可以在文档中查找“@GlobalScope”获取相关内容:
自定义单例必须是节点类型的对象,是开发者自定义的全局对象。
二、Input单例
Input是一个重要对象,可以对玩家的按键情况进行反馈。
点击“项目”-“项目设置”-“输入设置”,即可加入新的按键映射:
我们在添加新动作一栏输入“向左走”,点击“添加”点击右侧加号,即可选择键盘按键。找到“A”键并点击确定即可创建。
在项目中,为“Sprite2D”添加如下代码:
这里,“get_action_strength”函数的作用是返回按键按下时的力度,如果使用的是机械键盘,那么这里只会固定返回0或者1,将其返回内容打印出来,并放在“_process”函数下,每帧运行一次,可以看到输出栏一直在输出0,按下“A”键,输出变成1,松开后又恢复0。
在“_process”或“_physic_process”中通过Input单例来获取按键情况,一秒数十次检测游戏输入情况的编码方式称作轮询。if+轮询+修改内置变量=游戏在玩家控制下发生实质性的改变。
比如,通过如下代码,我们就可以让画面中的图片在按下A时向左移动:
三、自定义单例
我们也可以在项目中自定义一个单例,只需要在项目文件中新建一个脚本,并写入如下代码:
接着,我们来到“项目”-“项目设置”-“自动化加载”,将我们的脚本加入进去:
点击路径右侧的文件夹按钮即可选择脚本,在节点名称处可以自定义名称。
接着,我们在刚才“Sprite2D”挂载脚本下写下如下代码:
运行后可以看到,它将a变量所代表的值和b函数都执行了一遍。