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]]

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/640119.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode 86. 分隔链表

题目链接: 86. 分隔链表 - 力扣(LeetCode)https://leetcode.cn/problems/partition-list/description/ 题目: 给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出…

Rumble Club上线时间+配置要求+游戏价格+加速器推荐

Rumble Club上线时间配置要求游戏价格加速器推荐 Rumble Club是一款基于物理的玩家大乱斗游戏,该作拥有丰富饱满的视觉效果和趣味性十足的游玩极致,让玩家可以各种富有想象力的方式,推搡、戏耍好友。该作即将正式上线,为了避免玩…

500道Python毕业设计题目推荐,附源码

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

TQZC706开发板教程:编译zynq linux内核2019_R1

您需要下载对应版本的Linux系统文件以及IMG1.3.1镜像文件。为了方便您的操作,本文所使用的所有文件以及最终生成的文件,我都已经整理并放置在本文末尾提供的网盘链接中。您可以直接通过该链接进行下载,无需在其他地方单独搜索和获取。希望这能…

Python安装和开发环境搭建

Python的下载 访问Python语言官网(Welcome to Python.org)进行下载相关安装包,根据需要和系统环境、下载相应的windows/linux/macOs安装包。 ​ 更新的还是挺快的,都到3.12.3了。 直接点Download哪里的Python 3.12.3。 ​ 我这边系统是64位&#xf…

龙迅LT8618SXB TTL /BT656/BT601/BT1120桥接到HDMI 1.4,低功耗HDMI1.4发射机

龙迅LT8618SXB描述: LT8618SX是Lontium基于ClearEdgeTM技术的低功耗版本HDMI发射机。它支持24位颜色深度HDMI1.4(高清多媒体接口)规范。它们完全向后兼容Lontium的第一代HDMI发射机LT8618EX。LT8618SX是一款高性能、低功耗的部件&#xff0c…

30 消息队列

原理 操作系统可以通过页表映射在共享区创建一块共享内存,也可以申请一个队列。A进程和B进程可以向这个队列发送数据块,两个进程接收数据块来通信 函数 申请数据块 参数中的key来自于ftok函数 删除消息队列 同样消息队列也有数据结构管理&#xff…

MATLAB——M文件

M文件 MATLAB允许编写两种程序文件- 脚本−脚本文件是扩展名为.m的程序文件。在这些文件中,您编写了一系列要一起执行的命令。脚本不接受输入,也不返回任何输出。它们对工作区中的数据进行操作。 函数−函数文件也是扩展名为.m的程序文件。函数可以接…

(回溯)记忆化搜索和dp

动态规划的核心就是 状态的定义和状态的转移 灵神 的 回溯改递归思路 首先很多动态规划问题都可以采用 回溯 的思想 回溯主要思想就是把 一个大问题分解成小问题 比如 采用子集类回溯问题中的核心思想-> 选或不选 或者 选哪个 记忆化搜索之后 我们可以发现 每个新节点依…

java多线程-创建

简介 定义:多条执行流程并行的技术优点:异步执行,避免同步等待 创建-继承Thread 代码实现 继承Thread类重写run方法新建自建线程的实例调用start方法 继承Thread类重写run方法 /*** 1. 继承Thread类* 2. 重写run方法*/ public class MyThrea…

代码随想录第43天|1049.最后一块石头的重量II 494. 目标和

1049.最后一块石头的重量II 1049. 最后一块石头的重量 II - 力扣(LeetCode) 代码随想录 (programmercarl.com) 动态规划之背包问题,这个背包最多能装多少?LeetCode:1049.最后一块石头的重量II_哔哩哔哩_bilibili 有…

rCore-Turorial-Book第三课(计算机启动流程和程序内存布局与编译流程探索)

本节任务:梳理程序在操作系统中被编译运行的全流程,大体了解我们在没有操作系统的情况下,我们会面对那些困难 重点 1. 计算机组成基础 面对的困难:没有操作系统,我们必须直面硬件资源,管理起他们并为应用程…