赞
踩
在网上找了好久,讲新输入系统的没几个,使用XR Interaction Toolkit的更少,自己来一个吧
完整版
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.InputSystem;
using DG.Tweening;
using Unity.VisualScripting;
using UnityEngine.UIElements;
简洁版
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
using Unity.VisualScripting;
DG.Tweening是Dotween的包,可以不管他,
如果没用到UI的话,UI类的包也别导入了
第二件事,增加新输入系统变量
public InputActionProperty AActionProperty;
private InputAction AAction;
在Start中
void Start()
{
pinchAction = pinchActionProperty.action;
AAction= AActionProperty.action;
}
最后在Update中做处理
直接举例子好了
下面以Select事件做完整版例子
public class A : MonoBehaviour { public InputActionProperty AActionProperty; private InputAction AAction; bool isSelectOK = true; // Start is called before the first frame update void Start() { AAction= AActionProperty.action; } // Update is called once per frame void Update() { if (isSelectOK) { if (AAction.ReadValue<float>() == 1) { isSelectOK = false; StartCoroutine(setSelectOkValue(0.6f)); aabbcc(); } } } public void aabbcc() { } IEnumerator setSelectOkValue(float a) { yield return new WaitForSeconds(a); isSelectOK = true; } }
在Unity编辑器里
上面代码的意思是当isSelectOK为true时,接收AAction的数据,当接收到AAction的输入时(值为1)
将isSelectOk设置为负,取消接收AAction的数据
然后启动协程,等待0.6秒后,再将isSelectOK设置为true,继续接收AAction的数据,相当于是给输入增加了个0.6秒的冷却时间
将需要的功能加入到aabbcc()里面就好
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。