4、事件监听

鼠标

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class KeyTest : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        if(Input.GetMouseButtonDown(0)){
            Debug.Log("左键按下。。。");
        }
        if(Input.GetMouseButtonDown(2)){
            Debug.Log("中键按下。。。");
        }
        if(Input.GetMouseButtonDown(1)){
            Debug.Log("右键按下。。。");
        }
    }
}

注意:监听需要写在Update中,每一帧都需要监听

键盘

using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;

public class KeyTest : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        if(Input.GetKeyDown(KeyCode.A)){
            Debug.Log("A键按下。。。");
        }
        if(Input.GetKeyUp(KeyCode.A)){
            Debug.Log("A键抬起。。。");
        }
        if(Input.GetKey(KeyCode.A)){
            Debug.Log("A键持续按下。。。");
        }
    }
}

注意:监听需要写在Update中,每一帧都需要监听

虚拟轴

虚拟轴到底是什么?

简单来说,虚拟轴就是一个数值在-1~1内的数轴,这个数轴上重要的数值就是-1、0和1。当使用按键模拟一个完整的虚拟轴时需要用到两个按键,即将按键1设置为负轴按键,按键2设置为正轴按键。在没有按下任何按键的时候,虚拟轴的数值为0;在按下按键1的时候,虚拟轴的数值会从0~-1进行过渡;在按下按键2的时候,虚拟轴的数值会从0~1进行过渡。

系统预设了很多的虚拟轴供我们使用,在(服务-常规设置-输入管理器-轴线)中

image-20240918112341361

以水平虚拟轴为例,可以看到系统默认配置了一个名为Horizontal的虚拟轴

image-20240918112705012

然后就可以在脚本中根据虚拟轴名称获取到这个虚拟轴的值,并控制物体的左右移动

using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;

public class KeyTest : MonoBehaviour
{

    float moveSpeed = 5;

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        float h = Input.GetAxis("Horizontal");
        Vector3 pos = transform.position;
        pos.x += Time.deltaTime * h * moveSpeed;
        transform.position = pos;
    }
}