10.Godot Input与自定义单例的使用

单例

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

在帮助里面找到Globalscope
![[Pasted image 20240421162426.png]]

属性里面就是可以访问的内置单例

Input 单例

1. Input 单例
  • Input 是一个重要对象,它可以对玩家的按键情况进行反馈
  • Input 的 Action 手动设置,即游玩游戏的键位设置
  • Input 的常用函数介绍
    ![[Pasted image 20240421162611.png]]

打开项目设置,输入映射
可以添加自己Action
![[Pasted image 20240421162715.png]]

输入向左走,点击添加
![[Pasted image 20240421162752.png]]

点击右边的+号,添加事件
![[Pasted image 20240421162844.png]]

使用英文输入法点击A,输入A键
![[Pasted image 20240421162928.png]]

然后点击关闭
![[Pasted image 20240421163208.png]]

创建一个Sprite节点,为其添加一个脚本
![[Pasted image 20240421163315.png]]

可以直接访问Input单例
ctrl+左键,点击进入文档
![[Pasted image 20240421163447.png]]

有个get_action_strength,这个函数可以返回按下某个按键的力度
按键取决于之前action的设置,返回的值会介于0~1之间
如果使用的是一般的键盘,返回值就固定是0或1,按下是1,没按时0

在ready函数里输入

print(Input.get_action_strength("向左走"))

![[Pasted image 20240421164821.png]]

![[Pasted image 20240421164811.png]]

会输出一个0,指力度是0

把这行代码放到process函数里的时候,运行
会不断出现0,在按住A键的时候,会输出1

2. 轮询
  • 在_process 或_physic_process 中通过 Input 单例来获取按键情况,这种一秒数十次检测游戏输入情况的编码方式称为轮询。
  • If+ 轮询 + 修改内置变量 = 游戏在玩家的控制下发生实质性的改变。
    输入
if Input.get_action_strength("向左走"):
	self.position.x = self.position.x - 1

![[Pasted image 20240421165552.png]]

运行场景后,当按住A键,精灵节点会向左移动
![[Pasted image 20240421165626.png]]

![[Pasted image 20240421165614.png]]

自定义单例

自定义单例步骤
  • 创建一个新脚本

  • 在项目设置中选择 Autoload。
    ![[Pasted image 20240421165747.png]]

  • 选择脚本路径
    ![[Pasted image 20240421165851.png]]

![[Pasted image 20240421165915.png]]

右边可以修改单例的名称

  • 点击添加
    ![[Pasted image 20240421170002.png]]

![[Pasted image 20240421170047.png]]

AA的单例就被添加到游戏中
![[Pasted image 20240421170133.png]]

可以识别AA单例
ctrl点击进去,会转到刚才新建的脚本文件里
可以在其中自定义变量和函数
![[Pasted image 20240421170330.png]]

可以进行访问和调用
![[Pasted image 20240421170413.png]]

![[Pasted image 20240421170433.png]]

自定义单例特征及用途
  • 可以在任意一个脚本中对它们进行直接访问
  • 用于记录全局变量

相关推荐

  1. 定义函数使用

    2024-04-26 20:16:01       16 阅读
  2. 10-模式(Singleton)

    2024-04-26 20:16:01       32 阅读
  3. 15.模式

    2024-04-26 20:16:01       28 阅读
  4. Flutter 模式多种实现方法使用场景分析

    2024-04-26 20:16:01       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-26 20:16:01       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-26 20:16:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-26 20:16:01       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-26 20:16:01       20 阅读

热门阅读

  1. Docker知识点总结

    2024-04-26 20:16:01       16 阅读
  2. 桶排序(Bucket Sort)

    2024-04-26 20:16:01       13 阅读
  3. 多图详解VSCode搭建Python开发环境

    2024-04-26 20:16:01       14 阅读
  4. electron 中统一管理全局常量

    2024-04-26 20:16:01       10 阅读
  5. uniapp

    uniapp

    2024-04-26 20:16:01      16 阅读
  6. C++:智能指针(一)

    2024-04-26 20:16:01       15 阅读
  7. Docker 中常用的命令

    2024-04-26 20:16:01       15 阅读
  8. Android12之如何查看hidl服务

    2024-04-26 20:16:01       13 阅读
  9. 计算机网络-网络文件共享协议

    2024-04-26 20:16:01       15 阅读