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点击进去,会转到刚才新建的脚本文件里

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

可以进行访问和调用

自定义单例特征及用途
  • 可以在任意一个脚本中对它们进行直接访问
  • 用于记录全局变量
相关推荐
暴走约伯9 小时前
【VFX工具链源码拆解 09】终极工业化闭环:基于 ID 规则驱动的全自动场景建档、骨骼挂载与男转女场景迁移
unity·c#·游戏引擎·材质
承渊政道1 天前
【Python编程—从入门到实践】(记分与闯关:用Python+Pygame,打造越战越精彩的太空大战!)
开发语言·python·pycharm·游戏程序·pygame
寂寞的船1 天前
【Unity知识速递】第13期 Unity 内存泄漏排查实战:从 Memory Profiler 到 Lua 引用泄漏的生产级全链路诊断
unity·junit·c#·游戏引擎·lua
寂寞的船2 天前
【Unity Bug挑战】第12期 Awaitable 二次 await 死锁之谜 —— 为什么同一个异步操作等两次就卡死?
unity·c#·游戏引擎·bug
探求虚无3 天前
用 AI 在 Unity 里做一款 RTS:最难的不是生成代码,而是证明它真的能玩
人工智能·unity·游戏引擎
寂寞的船5 天前
【Unity知识速递】第10期 Unity GC 零分配实战:从 UnityEngine.Pool 到手动 GC 控制的全链路优化
jvm·unity·c#·游戏引擎·lucene
Martina_03216 天前
AI生成3D场景的霓虹灯一开就糊成光团?用6步检查Emissive、Bloom与曝光
人工智能·3d·ai·自然语言处理·游戏引擎·材质·贴图
又过二十7 天前
结合Godot八向图实现网页角色设计器测试
ai·aigc·godot·game·qwen-image·游戏素材
寂寞的船7 天前
【Unity知识速递】第8期 IL2CPP 托管堆内存碎片与原生堆交互机制深度解析
unity·游戏引擎·交互
淡海水8 天前
09-04-内存-Unity原生对象生命周期
unity·c#·游戏引擎·gc