587 字
3 分钟
--
godot基础:Input单例和自定义单例

大家好呀!我是琴泠,之前就有学过一点点godot的开发,但是为了更加系统性,我打算努努力,从更加基础的部分开始掌握学习。这个日志就是我的学习过程啦~相信你这么聪明,只要和我一起努力,也一定可以学会的。

单例#

  • 单例
    • 单例是一个刻意在任何脚本中直接对其访问的对象,分为内置单例与自定义单例。每个单例都是独一无二的对象。
    • 内置单例不是节点,主要成员是各类server,开发者可以使用它们直接控制游戏程序的图形与音效等内容。此外,还包括了一些其他对象,它们设计的范围包括网络,时间,电脑系统,输入等。
    • 自定义单例必须是节点类型的对象,是开发者自定义的全局对象。

Input 单例#

  • Input单例
    • Input单例是一个重要对象,它可以对玩家的案件情况进行反馈
    • Input是GDscript中的单例,可以在任何一个脚本中对它进行访问。
    • Input的常用函数介绍

在设置-键位映射中,就可以设置action,例如添加一个向左走,设置完毕后,添加键位映射,选择Keyboard Keys ,找到a键。

对于input,如果是键位而非遥感,那么按下后值为1,否则为0,可以用于做if判断。

保存后,你可以在脚本中直接访问Input 单例,例如:

func _process():
print(Input.get_action_strengh("向左走"))
#在这里选择打印Input的输出,当玩家按下a时,打印输出1。

这种一秒内检测数十次的游戏输入情况,称之为轮询

如果稍作修改,让角色移动:

func _process():
if Input.get_action_strengh("向左走"):
self.postion.x = self.postion.x - 1

创建自定义单例#

首先,需要新建一个脚本,在项目设置中找到Autoload(不同版本的翻译会改为 全局 或 自动加载),选择刚才新建的脚本。

在这里添加完毕后,就可以修改单例的名称。一旦添加成功,就可以在不同脚本间访问这个单例,例如:

##############################
规定了一个level单例:
var count = 100
func print_count():
print("单例的自定义函数")
##############################
func _ready():
print(level.count)
godot基础:Input单例和自定义单例
https://vilstia.pages.dev/posts/游戏开发/godot/godot基础iput单例与自定义单例/
作者
琴泠
发布于
2026-04-07
许可协议
CC BY-NC-SA 4.0