Appearance
如何响应手柄的交互
手柄类型
目前只支持右手柄的交互
csharp
public enum HandType
{
Left,
Right,
}
获取手柄生命状态
手柄生命状态包括配对(绑定)状态,连接状态和手柄电量。
- 使用者可以通过注册回调方式,监听手柄生命状态的变化
csharp
HandleControllerManager.Instance.InitRegistration(
UpdateBinding, UpdateConnection, UpdatePowerStats
);
private void UpdateBinding(HandType handType, bool status)
{
Debug.Log("绑定状态改变");
}
private void UpdateConnection(HandType handType, bool connected)
{
Debug.Log("连接状态改变");
}
private void UpdatePowerStats(HandType handType, float power)
{
Debug.Log("电量改变");
}
- 使用者也可以直接查询手柄当前的生命状态
csharp
/// <summary>
/// 获取手柄绑定状态
/// </summary>
bool status = HandleControllerManager.Instance.GetBindState(HandType.Right);
/// <summary>
/// 获取手柄连接状态
/// </summary>
bool connected = HandleControllerManager.Instance.GetConnectState(HandType.Right);
/// <summary>
/// 获取手柄电量
/// </summary>
float power = HandleControllerManager.Instance.GetPowerStats(HandType.Right);
手柄按键事件
按键类型
csharp
public enum HandleKeyCode
{
Home, // Home键
Return, // 返回键
Primary, // A / X键
Secondary, // B / Y键
Rocker, // 摇杆键
Trigger, // 扳机键
Grid // 侧边键
}
按键接口
csharp
/// <summary>
/// 手柄按键是否按下
/// </summary>
/// <param name="handType">手柄类型</param>
/// <param name="keyCode">按键类型</param>
/// <returns></returns>
public bool GetButtonDown(HandType handType, HandleKeyCode keyCode)
/// <summary>
/// 手柄按键是否弹起
/// </summary>
/// <param name="handType">手柄类型</param>
/// <param name="keyCode">按键类型</param>
/// <returns></returns>
public bool GetButtonUp(HandType handType, HandleKeyCode keyCode)
/// <summary>
/// 手柄按键是否按住
/// </summary>
/// <param name="handType">手柄类型</param>
/// <param name="keyCode">按键类型</param>
/// <returns></returns>
public bool GetButton(HandType handType, HandleKeyCode keyCode)
摇杆接口
csharp
/// <summary>
/// 获取手柄摇杆坐标
/// </summary>
/// <param name="handType">手柄类型</param>
/// <returns>坐标范围从左下角[-1,-1]到右上角[1,1],复位为[0,0]</returns>
public Vector2 GetAxis2D(HandType handType)
手柄控制事件
震动控制
csharp
/// <summary>
/// 手柄震动
/// </summary>
/// <param name="handType">手柄类型</param>
/// <param name="level">震动等级 1-8</param>
/// <param name="time">震动时长 0-65535 ms</param>
public bool VibrateHandle(HandType handType, int level, int time)