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

单例

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

在帮助里面找到Globalscope

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

Input 单例

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

打开项目设置,输入映射

可以添加自己Action

输入向左走,点击添加

点击右边的+号,添加事件

使用英文输入法点击A,输入A键

然后点击关闭

创建一个Sprite节点,为其添加一个脚本

可以直接访问Input单例

ctrl+左键,点击进入文档

有个get_action_strength,这个函数可以返回按下某个按键的力度

按键取决于之前action的设置,返回的值会介于0~1之间

如果使用的是一般的键盘,返回值就固定是0或1,按下是1,没按时0

在ready函数里输入

复制代码
print(Input.get_action_strength("向左走"))

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

把这行代码放到process函数里的时候,运行

会不断出现0,在按住A键的时候,会输出1

2. 轮询
  • 在_process 或_physic_process 中通过 Input 单例来获取按键情况,这种一秒数十次检测游戏输入情况的编码方式称为轮询。

  • If+ 轮询 + 修改内置变量 = 游戏在玩家的控制下发生实质性的改变。
    输入

    if Input.get_action_strength("向左走"):
    self.position.x = self.position.x - 1

运行场景后,当按住A键,精灵节点会向左移动

自定义单例

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

  • 在项目设置中选择 Autoload。

  • 选择脚本路径

右边可以修改单例的名称

  • 点击添加

AA的单例就被添加到游戏中

可以识别AA单例

ctrl点击进去,会转到刚才新建的脚本文件里

可以在其中自定义变量和函数

可以进行访问和调用

自定义单例特征及用途
  • 可以在任意一个脚本中对它们进行直接访问
  • 用于记录全局变量
相关推荐
南無忘码至尊32 分钟前
Unity学习90天 - 第 6 天 -学习物理 Material + 重力与阻力并实现弹跳球和冰面滑动效果
学习·unity·游戏引擎
mxwin3 小时前
Unity 单通道立体渲染(Single Pass Instanced)对 Shader 顶点布局的特殊要求
unity·游戏引擎·shader
魔士于安5 小时前
unity 低多边形 无人小村 木质建筑 晾衣架 盆子手推车,桌子椅子,罐子,水井
游戏·unity·游戏引擎·贴图·模型
RReality5 小时前
【Unity Shader URP】简易卡通着色(Simple Toon)实战教程
ui·unity·游戏引擎·图形渲染·材质
魔士于安6 小时前
unity 骷髅人 连招 武器 刀光 扭曲空气
游戏·unity·游戏引擎·贴图·模型
洛阳吕工8 小时前
从 micro-ROS 到 px4_ros2:ROS2 无人机集成开发实战指南
游戏引擎·无人机·cocos2d
风酥糖8 小时前
Godot游戏练习01-第29节-游戏导出
游戏·游戏引擎·godot
南無忘码至尊9 小时前
Unity学习90天-第7天-学习委托与事件(简化版)
学习·unity·游戏引擎
君莫愁。9 小时前
【Unity】解决UGUI的Button无法点击/点击无反应的排查方案
unity·c#·游戏引擎·解决方案·ugui·按钮·button
南無忘码至尊20 小时前
Unity学习90天 - 第 6天 - 学习协程 Coroutine并实现每隔 2 秒生成一波敌人
学习·unity·c#·游戏引擎