U4S1L12——UGUI中使用
U4S1L12——UGUI中使用
InputSystem对UI的支持
新输入系统 InputSystem 不支持 IMGUI(GUI),注意: 编辑器代码不受影响
如果当前激活的是 InputSystem,那么 OnGUI 中的输入判断相关内容不会被触发
你必须要在File ——> Build Setting ——> Player Setting ——> Other ——> Active Input Handling 选择Both
或者只激活老输入系统 InputManager 才能让 OnGUI 中内容有用
新输入系统支持UGUI,但是需要使用新输入系统输入模块(Input System UI Input Module)
Input System UI Input Module 参数相关
Send Pointer Hover To Parent - 是否将指针悬停事件发送给父对象
如果这个属性为true,那么当指针悬停在一个UI组件上时,
不仅这个元素会收到 ((20230815156689-lih1h0h “IPointerEnter ...
U4S1L11——Player Input Manager
U4S1L11——Player Input Manager
PlayerInputManager
PlayerInputManager组件,主要是用于管理本地多人输入的输入管理器,它主要管理玩家加入和离开
PlayerInputManager参数相关
Notification Behavior:通知行为
当玩家进入时,PlayerInputManager如何通知关联的对象,
它的工作方式和PlayerInput相同
Join Behavior:玩家加入的机制
Join Players When Button Is Pressed:
当有新设备加入按下任意键,或者没有任何玩家时按下任意键
Join Players When Join Action Is Triggered:
当有新设备加入按下指定按键触发玩家加入
Join Players Manually:
不要自动加入玩家,需要自己手动加入玩家
Player Prefab:挂载PlayerInput组件****的游戏对象
Joining Enabled By Default:启用后,新加玩家按 ...
U4S1L10——Player Input
U4S1L10——Player Input
本章代码关键字
1234567PlayerInput //玩家输入类,是InputSystem提供的专门用于接受玩家输入来处理自定义逻辑的组件playerInput.currentActionMap //玩家输入对象当前激活的输入映射集的属性playerInput.ActivateInput() //激活玩家输入监听playerInput.DeactivateInput() //失活玩家输入监听Inputvalue //输入值类,用于PlayerInput组件行为执行模式前两种模式下,监听输入的监听函数所需要的参数inputValue.isPressed //是否按下的属性inputValue.Get<>() //获取到值的属性
PlayerInput
PlayerInput 是 InputSystem 提供的专门用于接受玩家输入来处理自 ...
U4S1L9——输入配置文件生成C#代码
U4S1L9——输入配置文件生成C#代码
之前我们通过配置文件,可以做到一个配置文件管理多个 InputAction 类,那我们该如何在C#脚本里使用这些类呢?
我们需要通过配置文件生成自动一个C#脚本,使我们可以让配置文件配置的输入方案使用C#代码监听
根据配置文件生成C#代码
选择 InputActions 文件
在 Inspector 窗口设置生成路径,类名,命名空间
应用后生成代码
注意生成的脚本名,不要将已有的C#脚本覆盖了!
之后我们也要通过这个脚本中的类来监听输入
使用C#代码进行监听
演示生成C#代码所使用的配置文件的情况如下:
创建生成的代码对象
生成的输入类的类名取决于在通过配置文件生成C#代码时使用的脚本名,例如这次通过配置文件生成的C#脚本名为 Lesson9Input,因此代码这样写
1234void Start(){ Lesson9Input input = new Lesson9Input(); }
激活输入
这里的 input 是配置文件生成的C#类变量,生成的输入类的类名取决于在通过配置文件生成 ...
U4S1L8——输入配置文件
U4S1L8——输入配置文件
输入配置文件
输入系统中提供了一种输入配置文件 Input Actions,你可以理解它是 InputAction 的集合,可以在一个文件中编辑多个 InputAction 的信息
里面记录了想要处理的行为和动作(也就是 InputAction 的相关信息)
我们可以在其中自己定义 InputAction(比如:开火、移动、旋转等),然后为这个 InputAction 关联对应的输入动作
之后将该配置文件和 PlayerInput 进行关联,PlayerInput 会自动帮助我们解析该文件
当触发这些 InputAction 输入动作时会以分发事件的形式通知我们执行行为
编辑输入配置文件
在 Project 窗口右键 Create 创建 InputActions 配置文件(本质是json文件)
双击创建出的文件
双击文件进行配置
配置窗口参数相关
ActionMaps 行动映射窗口(多套操作规范)
Actions 输入动作窗口(InputAction集合)
Properties 输入操作绑定的输入属性(Inp ...
U4S1L7——Input Action类
U4S1L7——Input Action类
本章代码关键字
123456789101112InputAction //输入动作类,InputSystem输入监听触发相关的主要内容inputAction.Enable() //输入监听激活方法inputAction.started //开始操作时触发的委托inputAction.performed //真正触发时的委托inputAction.canceled //结束输入时触发的委托CallbackContext //输入监听回调信息类,所有作为输入监听方法都需要用这个来作为参数callbackContext.phase //当前输入状态callbackContext.action //输入动作行为也就是InputAction对象信息,即触发者传入自己callbackContext.control //控件信息,传入触发这次监听方法的输入控件名c ...
U4S1L6——其它输入
U4S1L6——其它输入
新输入系统中的输入设备类
常用的
Keyboard—键盘
Mouse—鼠标
Touchscreen—触屏
Gamepad—手柄
其它
Joystick—摇杆
Pen—电子笔
Sensor(传感器)
Gyroscope—陀螺仪
GravitySensor—重力传感器
加速传感器
光照传感器
等等
要查看所有的支持的传感器 ——> 请看这里: 传感器支持 | 输入系统 | 1.2.0 (unity3d.com)
关于没有细讲的设备
对于我们没有细讲的设备,平时在开发中不是特别常用
如果想要学习他们的使用,最直接的方式就是看官方的文档,或者直接进到类的内部查看具体成员
通过查看变量名和方法名即可了解使用方式
例如:
陀螺仪
这里的陀螺仪命名空间需要使用UnityEngine.InputSystem !
12UnityEngine.InputSystem.Gyroscope g = UnityEngine.InputSystem.Gyroscope.current;g.angularVelocity.Re ...
U4S1L5——手柄输入
U4S1L5——手柄输入
本章代码关键字
123456789101112131415161718192021Gamepad //手柄类Gamepad.current //获取当前可用手柄StickControl //摇杆类gamepad.leftStick.ReadValue() //左摇杆方向向量gamepad.rightStick.ReadValue() //右摇杆方向向量gamepad.leftStickButton //左摇杆按键gamepad.rightStickButton //右摇杆按键gamepad.dpad.up //方向键上键gamepad.dpad.down //方向键下键gamepad.dpad.left //方向键左键gamepad.dpad.right ...
U4S1L4——触屏输入
U4S1L4——触屏输入
本章代码关键字
12345678910111213141516Touchscreen //触屏类Touchscreen.current //获取当前触屏设备touchscreen.touches.Count //得到触屏手指数量touchscreen.touches //得到所有触屏手指(需要遍历)touchscreen.touches[] //得到单个触屏手指touchControl.press.wasPressedThisFrame //按下touchControl.press.wasReleasedThisFrame //抬起touchControl.press.isPressed //长按touchControl.tap.isPressed //点击手势 ...
U4S1L3——鼠标输入
U4S1L3——鼠标输入
本章代码关键字
1234567891011121314Mouse //鼠标类Mouse.current //获取当前鼠标设备ButtonControl //鼠标对象类mouse.leftButton //鼠标左键mouse.middleButton //鼠标中键mouse.rightButton //鼠标右键mouse.forwardButton //鼠标侧前键mouse.backButton //鼠标侧后键buttonControl.wasPressedThisFrame //鼠标按键按下buttonControl.wasReleasedThisFrame ...