【Unity程序技巧】Input管理器


👨‍💻个人主页@元宇宙-秩沅

👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 秩沅 原创

👨‍💻 收录于专栏Unity基础实战

⭐🅰️⭐



文章目录


⭐前言⭐


🎶(W)PC_Input管理器


1.相关知识

2.特点

  • 配合事件中心管理器和公共Update管理器使用
  • 主要用于检测输入事件然后与事件中心配套使用
  • 使用场景: 更换玩家时进行相同的操作
3.脚本
csharp 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;


public class InputManager : SingleManager<InputManager>
{
    private bool isStart = false;


    public InputManager()
    {
        UpdateManager.GetInstance().AddUpdateListener(MyUpdate);
    }


    // 是否开启输入检测

    public void OpenOrClose(bool flag)
    {
        isStart = flag;
    }

    private void MyUpdate() //执行时已变成生命函数Update
    {
        if (!isStart) return;
        CheckKeyCode(KeyCode.W);
        CheckKeyCode(KeyCode.S);
        CheckKeyCode(KeyCode.A);
        CheckKeyCode(KeyCode.D);
    }

 
    // 分发输入事件给事件中心

    private void CheckKeyCode(object  key)
    {
        KeyCode code = (KeyCode)key;

  
        if (Input.GetKeyDown(code))
            EventCenter.GetInstance().EventTrigger("按下某键", key);

        //由于传进来的参数是枚举类型,而事件中心的构建不支持所以,传进事件中心的还是Object类型

    }

	//可自定义构造其他传入事件中心的组合
}
  • 测试
csharp 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;

public class text : MonoBehaviour
{

    void Start()
    {
        //开启输入检测
        InputManager.GetInstance().OpenOrClose(true);

        //添加事件到事件中心
        EventCenter.GetInstance().AddEventListener<object>("按下某键", KeyDown);

    }
             
    public void KeyDown( object key)
    {
        KeyCode code =(KeyCode)key ;
        switch (code)
        {
            case KeyCode.W:
                Debug.Log("前进");
                break;
            case KeyCode.S:
                Debug.Log("后退");
                break;
            case KeyCode.A:
                Debug.Log("向左");
                break;
            case KeyCode.D:
                Debug.Log("向右");
                break;
        }

    }


}

    

⭐🅰️⭐


【Unityc#专题篇】之c#进阶篇】

【Unityc#专题篇】之c#核心篇】

【Unityc#专题篇】之c#基础篇】

【Unity-c#专题篇】之c#入门篇】

【Unityc#专题篇】---进阶章题单实践练习

【Unityc#专题篇】---基础章题单实践练习

【Unityc#专题篇】---核心章题单实践练习


你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!



相关推荐
Thomas_YXQ5 小时前
Unity3D游戏内存优化指南
游戏·unity·职场和发展·性能优化·蓝桥杯·游戏引擎·unity3d
chillxiaohan5 小时前
Unity接入Steamworks.NET实现通信功能
unity
枯萎穿心攻击14 小时前
响应式编程入门教程第二节:构建 ObservableProperty<T> — 封装 ReactiveProperty 的高级用法
开发语言·unity·c#·游戏引擎
X_StarX1 天前
【Unity笔记02】订阅事件-自动开门
笔记·学习·unity·游戏引擎·游戏开发·大学生
霸王•吕布1 天前
游戏引擎中顶点着色&像素着色
游戏引擎·顶点着色器·像素着色器·顶点颜色·顶点uv·顶点法向
Thomas_YXQ1 天前
Unity URP法线贴图实现教程
开发语言·unity·性能优化·游戏引擎·unity3d·贴图·单一职责原则
徐子竣2 天前
[学习记录]Unity-Shader-几何着色器
unity·游戏引擎·着色器
EQ-雪梨蛋花汤2 天前
【Part 3 Unity VR眼镜端播放器开发与优化】第四节|高分辨率VR全景视频播放性能优化
unity·音视频·vr
与火星的孩子对话2 天前
Unity进阶课程【六】Android、ios、Pad 终端设备打包局域网IP调试、USB调试、性能检测、控制台打印日志等、C#
android·unity·ios·c#·ip
幻世界2 天前
【Unity智能模型系列】Unity + MediaPipe + Sentis + ArcFace模型:构建高效人脸识别比对系统
unity·游戏引擎