0 votes
by (120 points)
recategorized by

Unity 默认Joystick 有20个键位,获取的方式类似是:

Input.GetKeyDown(KeyCode.Joystick1Button0);
...
Input.GetKeyDown(KeyCode.Joystick1Button19);

但是,发现Pico Neo3设备上,是从第15个开始的,

这导致,如果使用外接的三方手柄的话,只有5个键可以用 (号码为15-19);

请问是否有办法可以完整地使用20个键位,比如:企业版定制是否可以?

1 Answer

0 votes
by (5.4k points)

外接手柄应该不影响,我用这种方法可以读到手柄的按键值。我读到的手柄上对应的值是Joystick2Button0到Joystick2Button9。
你试试看,看你的外接手柄值都是多少。是不是也这样的。

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

public class JoysticksTest : MonoBehaviour
{
    public Text m_text;
    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        var m_values = System.Enum.GetValues(typeof(KeyCode));
        for(int i = 0; i < m_values.Length; ++i)
        {
            if (Input.GetKeyDown((KeyCode)m_values.GetValue(i)))
            {
                m_text.text = m_values.GetValue(i).ToString();
            }
        }
    }
}
by (120 points)

奇怪,我的手柄序号全部向前移动了15,比如原来的 Joystick1button0 就变成 Joystick1button15 了,导致之前的5以上的按钮全都识别不了。
在手机上,电脑上,手柄序号都是正常的。Axis 也是正常的。

只有 Neo3 设备上序号不对。

试着用其他Joystick2,Joystick3 等 也不行。

我的手柄型号显示是:
PC/PS3/Android Gamepad

by (5.4k points)

刚又试了一下,不加pico的sdk到neo 3里获取的手柄值也正常。我用的小米手柄,会不会是你的手柄跟安卓10适配的问题

by (120 points)

试了下,确实是手柄的问题,和Neo3没关系。

...