using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; // 如果您使用的是UGUI public class SteeringWheelController : MonoBehaviour { public Button[] buttons; // 您的UI按钮 private int selectedButtonIndex = 0; // 当前选中的按钮索引 private bool hasSelected = false; // 是否已经进行了选择 // 假设这是从硬件获取的方向盘角度 private float steeringWheelAngle; // 方向盘选择角度阈值和中立阈值 public float selectionAngleThreshold = 30.0f; // 例如,30度 public float neutralAngleThreshold = 5.0f; // 方向盘接近中立位置的阈值 public float testFloatV; void Update() { // 更新方向盘角度 UpdateSteeringWheelAngle(); // 检查方向盘角度并更新选中的按钮 CheckSteeringWheelAngle(); } public void SSSS() { testFloatV = 45; } public void AAAA() { testFloatV = 0; } public void BBB() { testFloatV = -45; } private void UpdateSteeringWheelAngle() { // 这里需要替换成获取硬件方向盘角度的代码 steeringWheelAngle = testFloatV; } private void CheckSteeringWheelAngle() { if (Mathf.Abs(steeringWheelAngle) < neutralAngleThreshold) { hasSelected = false; return; } if (!hasSelected) { if (steeringWheelAngle > selectionAngleThreshold) { // 向右转动 SelectNextButton(); hasSelected = true; } else if (steeringWheelAngle < -selectionAngleThreshold) { // 向左转动 SelectPreviousButton(); hasSelected = true; } } } private void SelectNextButton() { selectedButtonIndex = (selectedButtonIndex + 1) % buttons.Length; Debug .Log("前进"+selectedButtonIndex); HighlightButton(selectedButtonIndex); } private void SelectPreviousButton() { if (selectedButtonIndex == 0) selectedButtonIndex = buttons.Length - 1; else selectedButtonIndex--; Debug .Log("后退"+selectedButtonIndex); HighlightButton(selectedButtonIndex); } private void HighlightButton(int index) { // 根据您的UI系统来高亮选中的按钮 // 例如,在UGUI中,您可以改变按钮的颜色或添加一个高亮的边框 buttons[index].GetComponent