using System;
using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.UI;
/// <summary>
/// 设置菜单
/// </summary>
public class SetUp : MonoBehaviour
{
public static SetUp Instance;
//选择滑动条或输入框
private bool bl_SliInp;
private Button Btn_Confirm;//确认键
private Button Btn_Reset;//重置键
//参数数值
public float AppearTime;//出现时间
private float MoveSpeed;//移动时间
//参数组件
private GameObject game_MoveSpeed;//父组件
private Slider Sli_MoveSpeed;//滑动条
private InputField Inp_MoveSpeed;//输入框
void Start()
{
Instance = this;
InitGetComponent();
}
/// <summary>
/// 声明组件
/// </summary>
private void InitGetComponent()
{
//声明组件
game_MoveSpeed = GameObject.Find("MoveSpeed");
Sli_MoveSpeed = game_MoveSpeed.transform.GetChild(0).GetComponent<Slider>();
Inp_MoveSpeed = game_MoveSpeed.transform.GetChild(1).GetComponent<InputField>();
Btn_Confirm = GameObject.Find("Confirm").GetComponent<Button>();
Btn_Reset = GameObject.Find("Reset").GetComponent<Button>();
//初始化数值
AppearTime = 10;
MoveSpeed = 1;
//给按钮添加点击监听
Btn_Confirm.onClick.AddListener(OnClickConfirm);
Btn_Reset.onClick.AddListener(OnClickReset);
}
/// <summary>
/// 点击确定键执行
/// </summary>
private void OnClickConfirm()
{
//在其他代码使用单例赋值参数,或其他方法
//如:this.MoveSpeed = SetUp.Instance.MoveSpeed;
//可以将参数进行存储,如二进制,JSON,XML
Debug.Log("修改/保存成功");
}
/// <summary>
/// 点击重置键执行
/// </summary>
private void OnClickReset()
{
//重置数值
MoveSpeed = 1;
//同步滑动条数值
Sli_MoveSpeed.value = MoveSpeed;
}
void Update()
{
if (bl_SliInp)
{
//选择滑动条,输入框的值取到滑动条值的后一位
Inp_MoveSpeed.text = Sli_MoveSpeed.value.ToString("F1");
}
else
{
//选择输入框,滑动条的值等于输入框的值
Sli_MoveSpeed.value = float.Parse(Inp_MoveSpeed.text);
}
}
//为滑动条或输入框手动添加点击
public void Box_Slider()
{
bl_SliInp = true;
}
public void Box_InputField()
{
bl_SliInp = false;
}
}
///另一个代码里调用
private void Update()
{
if (Input.GetKeyDown(KeyCode.Tab))
{
//按Tab键可以隐藏或显示设置菜单
SetUp.SetActive(!SetUp.activeSelf);
//鼠标的隐藏与显示
switch (Cursor.lockState)
{
case CursorLockMode.None://如果显示状态
Cursor.lockState = CursorLockMode.Locked;//鼠标隐藏并锁定
break;
case CursorLockMode.Locked://如果隐藏状态
Cursor.lockState = CursorLockMode.None;//鼠标显示并解锁
break;
default:
break;
}
}
}