Unity SKFramework框架(九)、Input 输入管理模块

举报
CoderZ1010 发表于 2022/09/25 06:04:53 2022/09/25
【摘要】 目录 一、Key Input 二、Mouse Input 三、Axis Input 四、Input Master 五、Input Trigger 一、Key Input 通过编辑器设置一个键盘按键: using UnityEngine;using SK.Framework; public class Examp...

目录

一、Key Input

二、Mouse Input

三、Axis Input

四、Input Master

五、Input Trigger


一、Key Input

通过编辑器设置一个键盘按键:


  
  1. using UnityEngine;
  2. using SK.Framework;
  3. public class Example : MonoBehaviour
  4. {
  5. [SerializeField] private KeyInput aInput;
  6. }

 

通过代码设置一个键盘按键:


  
  1. using UnityEngine;
  2. using SK.Framework;
  3. public class Example : MonoBehaviour
  4. {
  5. private KeyInput aInput;
  6. private void Start()
  7. {
  8. aInput = new KeyInput(KeyCode.A);
  9. }
  10. }

开启按键监听:


  
  1. //开启按键监听
  2. aInput.BeginListening();

停止按键监听:


  
  1. //停止按键监听
  2. aInput.StopListening();

按键按下、持续按下、抬起:


  
  1. using UnityEngine;
  2. using SK.Framework;
  3. public class Example : MonoBehaviour
  4. {
  5. private KeyInput aInput;
  6. private void Start()
  7. {
  8. aInput = new KeyInput(KeyCode.A);
  9. //开启按键监听
  10. aInput.BeginListening();
  11. }
  12. private void Update()
  13. {
  14. if (aInput.IsPressed) Debug.Log("A键 按下");
  15. if (aInput.IsHeld) Debug.Log("A键 持续按下");
  16. if (aInput.IsReleased) Debug.Log("A键 抬起");
  17. }
  18. }

二、Mouse Input

通过编辑器设置一个鼠标按键:


  
  1. using UnityEngine;
  2. using SK.Framework;
  3. public class Example : MonoBehaviour
  4. {
  5. [SerializeField] private MouseButtonInput leftMouseButtonInput;
  6. }

 

通过代码设置一个鼠标按键:


  
  1. using UnityEngine;
  2. using SK.Framework;
  3. public class Example : MonoBehaviour
  4. {
  5. private MouseButtonInput leftMouseButtonInput;
  6. private void Start()
  7. {
  8. leftMouseButtonInput = new MouseButtonInput(MouseButtonCode.Left);
  9. }
  10. }

开启按键监听:


  
  1. //开启按键监听
  2. leftMouseButtonInput.BeginListening();

停止按键监听:


  
  1. //停止按键监听
  2. leftMouseButtonInput.StopListening();

按键按下、持续按下、抬起: 


  
  1. using UnityEngine;
  2. using SK.Framework;
  3. public class Example : MonoBehaviour
  4. {
  5. private MouseButtonInput leftMouseButtonInput;
  6. private void Start()
  7. {
  8. leftMouseButtonInput = new MouseButtonInput(MouseButtonCode.Left);
  9. //开启按键监听
  10. leftMouseButtonInput.BeginListening();
  11. }
  12. private void Update()
  13. {
  14. if (leftMouseButtonInput.IsPressed) Debug.Log("鼠标左键 按下");
  15. if (leftMouseButtonInput.IsHeld) Debug.Log("鼠标左键 持续按下");
  16. if (leftMouseButtonInput.IsReleased) Debug.Log("鼠标左键 抬起");
  17. }
  18. }

三、Axis Input

通过编辑器设置一个轴输入:


  
  1. using UnityEngine;
  2. using SK.Framework;
  3. public class Example : MonoBehaviour
  4. {
  5. [SerializeField] private AxisInput horizontal;
  6. }

通过代码设置一个轴输入:


  
  1. using UnityEngine;
  2. using SK.Framework;
  3. public class Example : MonoBehaviour
  4. {
  5. private AxisInput horizontal;
  6. private void Start()
  7. {
  8. horizontal = new AxisInput(AxisNames.Horizontal);
  9. }
  10. }

开启监听:


  
  1. //开启监听
  2. horizontal.BeginListening();

停止监听:


  
  1. //停止监听
  2. horizontal.StopListening();

读取轴输入值:


  
  1. using UnityEngine;
  2. using SK.Framework;
  3. public class Example : MonoBehaviour
  4. {
  5. private AxisInput horizontal;
  6. private void Start()
  7. {
  8. horizontal = new AxisInput(AxisNames.Horizontal);
  9. //开启监听
  10. horizontal.BeginListening();
  11. }
  12. private void Update()
  13. {
  14. float hValue = horizontal.ReadValue();
  15. float hRawValue = horizontal.ReadRawValue();
  16. }
  17. }

四、Input Master

1.InputMaster是整个输入模块的管理器,其核心属性Toggle是整个系统的开关,将其设为false时,将不再监听任何输入:


  
  1. //关闭系统开关
  2. InputMaster.Toggle = false;

2.可以通过如下属性判断是否有任意按键输入:


  
  1. bool isAnyKey = InputMaster.IsAnyKey;
  2. bool isAnyKeyDown = InputMaster.IsAnyKeyDown;

3.可以通过如下方式获取鼠标位置的偏移量:


  
  1. //鼠标位置偏移量
  2. Vector2 mouseDelta = InputMaster.Mouse.Delta;

五、Input Trigger


  
  1. using UnityEngine;
  2. using SK.Framework;
  3. public class Example : MonoBehaviour
  4. {
  5. private KeyInput aInput;
  6. private void Start()
  7. {
  8. aInput = new KeyInput(KeyCode.A);
  9. //开启监听
  10. aInput.BeginListening();
  11. }
  12. private void Update()
  13. {
  14. if (aInput.IsPressed) Debug.Log("Pressed");
  15. }
  16. }

如上述代码所示,我们监听了键盘A键的输入,当A键按下时,将打印日志"Pressed"。Trigger用于触发按键的输入,表示我们无需真实的去按下键盘A键,通过调用如下代码,打印日志"Pressed"的逻辑也会被执行。


  
  1. //触发按键A按下
  2. InputMaster.Key.Trigger(KeyCode.A, InputTriggerType.Pressed);

文章来源: coderz.blog.csdn.net,作者:CoderZ1010,版权归原作者所有,如需转载,请联系作者。

原文链接:coderz.blog.csdn.net/article/details/124884667

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。