赞
踩
目录
2.Actions(侧栏绿色) And Action Properties:
1.先勾选Generate C# Class并应用(可设置名字以及保存位置等)
1.在unity中的Edit-Project Settings-Player-Other Settings-Configuration-Active Input Handing中勾选Input System Package或者Both.
2.在Unity中的Window-Package Manager中的Packages中选择Unity Registry然后搜索Input,选择Input System并下载导入。
3.在Project-Assets(位置随便,在Assets里就行)新建一个Input Actions.
是 一个行动地图,也是一个组,也是一个集合。
让动作变成一个事件的容器,如下图;跳跃作为一个事件出现;Start中的语句的目的是将Jump_performed(这个只是个名字,可以自己起)这个事件注册进去(注册就是把这个事件放进这个容器里),然后在特定情况下,被注册的事件将被触发。Jump_performed方法的参数会返回一个有关该操作的结构体,方法里的那个抛出可以不管,然后写要执行的代码。
- private void Start()
- {
- InputSystem.Player.Jump.performed += Jump_performed;
- }
-
- private void Jump_performed(InputAction.CallbackContext obj)
- {
- throw new System.NotImplementedException();
- }
让动作变成一个值,会根据所绑定的键以及所勾选的选项返回值;在Control Type为Vector2的情况下,可以创建一个上下左右的操作(具体如何使用见后),返回值由于Composite()中的Mode勾选了单位化,所以返回的二维向量的长度为1.
- Vector2 value_Get;
-
- private void Update()
- {
- //获取value的返回值
- value_Get = InputSystem.Player.Move.ReadValue<Vector2>();
- }
与value类似。
五个选项分别为:
Hold(按住):按住指定时间后触发;
Muti-Tap(连按):连续按指定次数;
Press(按下):按下即可,可以选择Press Only,Release Only以及Press And Release;
Slow-Tap(短按):按住指定时间后松开触发;
Tap:按住一定时间内松开触发。
一个按键,可通过右边属性栏中的Path绑定所要的按键;如果找不到,可按下listen,然后敲击所要的按键,然后选中即可。(这里的按键就是上文的特定情况)
PS:这三项都可以通过各自框框右上角的加号添加。上下左右的需要在Value或者Pass Through的前提一,以及Control Type为Vector2的前提二下,选择+中的Add Up/Down/Left/Right Composite实现。
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- //这一行记得加上
- using UnityEngine.InputSystem;
-
- public class NewThing : MonoBehaviour
- {
- //PlayerController是我的控制器脚本名字
- private PlayerController inputSystem;
- private void Awake()
- {
- inputSystem = new PlayerController();
- }
-
- }
- //在所挂物体启用时执行
- public void OnEnable()
- {
- //启用所实例化的控制器
- InputSystem.Enable();
- }
-
- public void OnDisable()
- {
- InputSystem.Disable();
- }
-
- private void Start()
- {
- inputSystem.Player.Move.Enable();
- }
- private Vector2 value;
- private void Update()
- {
- value = inputSystem.Player.Move.ReadValue<Vector2>();
- }
- private Rigidbody2D rb;
- //在外面赋值
- public float moveSpeed;
-
- private void Start()
- {
- rb = GetComponent<Rigidbody2D>();
-
- //inputSystem.Player.Move.Enable();
-
- }
-
- //在Update中
- rb.velocity = new Vector2(value.x * moveSpeed, rb.velocity.y);
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- //这一行记得加上
- using UnityEngine.InputSystem;
-
- public class NewThing : MonoBehaviour
- {
- //PlayerController是我的控制器脚本名字
- private PlayerController inputSystem;
-
-
- private void Awake()
- {
- inputSystem = new PlayerController();
- }
-
- private Rigidbody2D rb;
- public float moveSpeed;
-
- private void Start()
- {
- rb = GetComponent<Rigidbody2D>();
-
- inputSystem.Player.Move.Enable();
-
- }
-
-
- private Vector2 value;
- private void Update()
- {
- value = inputSystem.Player.Move.ReadValue<Vector2>();
-
- //在Update中
- rb.velocity = new Vector2(value.x * moveSpeed, rb.velocity.y);
- }
-
- private void OnEnable()
- {
- inputSystem.Enable();
- }
-
- private void OnDisable()
- {
- inputSystem.Disable();
- }
-
- }
如有错误或者不足还请指出,诸位的指正对我而言非常重要。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。