- Home /
Get Array of all Input Manager Axes
Hi all
I was hoping to reduce some stringly-typing in my application by removing some hardcoded axis/button strings.
I had hoped the Unity API would provide methods for getting an array of all of the axes currently configured in the Input Manager, but I'm not seeing anything that would help me.
Using .NET Reflector shows that the Input class just wraps a bunch of external methods. So far I have been unable to find the inspector class for the Input Manager.
Is anyone aware of a method to get an array of all of the input axes?
Thanks, Ves
Answer by Sarkahn · Jul 21, 2015 at 07:55 AM
Yup.
using UnityEngine;
using System.Collections;
using UnityEditor;
public class ReadInputManager
{
public static void ReadAxes()
{
var inputManager = AssetDatabase.LoadAllAssetsAtPath("ProjectSettings/InputManager.asset")[0];
SerializedObject obj = new SerializedObject(inputManager);
SerializedProperty axisArray = obj.FindProperty("m_Axes");
if (axisArray.arraySize == 0)
Debug.Log("No Axes");
for( int i = 0; i < axisArray.arraySize; ++i )
{
var axis = axisArray.GetArrayElementAtIndex(i);
var name = axis.FindPropertyRelative("m_Name").stringValue;
var axisVal = axis.FindPropertyRelative("axis").intValue;
var inputType = (InputType)axis.FindPropertyRelative("type").intValue;
Debug.Log(name);
Debug.Log(axisVal);
Debug.Log(inputType);
}
}
public enum InputType
{
KeyOrMouseButton,
MouseMovement,
JoystickAxis,
};
[MenuItem("Assets/ReadInputManager")]
public static void DoRead()
{
ReadAxes();
}
}
If you have a look at the Input Manager the rest should be pretty easy to figure out.
Answer by huangtim · Jun 01, 2020 at 03:54 AM
If you are dedicated to find out the axis like I do, you can try this. I admit it is not a sexy solution but it gets my job done.
for(int I=1; i<=28; i++)
{
if(Input.GetAxis("Axis"+i)>0)
{
Debug.LogFormat("Move Axis{0}", i);
}
}
Then in input manager, add 28 inputs mapping to each of the joystick axises.
Your answer
Follow this Question
Related Questions
Get axis input only from certain keys 2 Answers
Adding extra axes to the input manager programaticly 3 Answers
Read analog stick input without using the Input Manager 1 Answer
Get raw joystick (axes) input 0 Answers
Weird Input Manager behaviour 1 Answer