MyToggle.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. using UnityEngine;
  2. using System.Collections;
  3. using UnityEngine.UI;
  4. using System;
  5. /// <summary>
  6. /// qqwang:
  7. /// 自定义的单选按钮
  8. /// </summary>
  9. public class MyToggle : MonoBehaviour
  10. {
  11. /// <summary>
  12. /// 选中状态
  13. /// </summary>
  14. private GameObject isOnGameObject;
  15. /// <summary>
  16. /// 关闭状态
  17. /// </summary>
  18. private GameObject isOffGameObject;
  19. /// <summary>
  20. /// 单选状态的管理者
  21. /// </summary>
  22. private Toggle toggle;
  23. /// <summary>
  24. /// 按钮的选中发生状态对外提供的处理回调
  25. /// </summary>
  26. private Action<bool> OnToggleValueChangedCallBack;
  27. /// <summary>
  28. /// 控件的初始化处理
  29. /// </summary>
  30. /// <param name="_valueChangedCallBack">按钮的选中状态发生变化之后,要对外提供的一个回调处理 参数bool,false=关闭</param>
  31. /// <param name="defaultToggleIsOn">单选按钮的默认状态true= 选中 false= 关闭</param>
  32. public void Init(Action<bool> _valueChangedCallBack, bool defaultToggleIsOn)
  33. {
  34. OnToggleValueChangedCallBack = _valueChangedCallBack;
  35. isOnGameObject = this.transform.Find("SwitchOn").gameObject;
  36. isOffGameObject = this.transform.Find("SwitchOff").gameObject;
  37. toggle = this.gameObject.GetComponent<Toggle>();
  38. if (toggle == null)
  39. {
  40. toggle = this.gameObject.AddComponent<Toggle>();
  41. }
  42. ////读取游戏内的音乐音效配置
  43. SetToggleState(defaultToggleIsOn);
  44. toggle.isOn = defaultToggleIsOn;
  45. toggle.onValueChanged.AddListener(OnValueChanged);
  46. }
  47. /// <summary>
  48. /// 设置不同的状态UI显示
  49. /// </summary>
  50. /// <param name="isOn">true= 选中 false= 关闭</param>
  51. private void SetToggleState(bool isOn)
  52. {
  53. isOnGameObject.SetActive(isOn);
  54. isOffGameObject.SetActive(!isOn);
  55. }
  56. /// <summary>
  57. /// toggle按钮的选中状态发生变化的处理函数
  58. /// </summary>
  59. /// <param name="isOn">true= 选中 false= 关闭</param>
  60. public void OnValueChanged(bool isOn)
  61. {
  62. SetToggleState(isOn);
  63. if (OnToggleValueChangedCallBack != null)
  64. {
  65. OnToggleValueChangedCallBack(isOn);
  66. }
  67. }
  68. }