• NGUI之Toggle实现单选框


    一:使用步骤——创建一个checkboxes

      1.首先在UI Root下建立一个Sprite,设置一张贴图,当作按钮的背景。

      

      然后为其添加碰撞组件和Toggle组件

      

      2.为第一个Sprite建立一个子Sprite,设置一张图片,当作选中的标识。

      

      将其调整到适当的位置。

      

      3.选择第一个Sprite的UIToggle组件

      

      为State Transition中的Sprite设置对象,即刚才添加的子Sprite。

    以上便创建了一个checkboxes。

    二:创建一个radio button groups

      1.将上面创建的checkboxes复制3个。

      2.将他们三个的UIToggle中的Group属性,都改为同一个数字,但不能是0。

      注意:UIToggle中的Starting State如果勾选的话初始状态则为选择状态。

      

    单选功能是实现了,但是选择其中一个toggle后无法取消选择(比如点击第一次就是选择状态再点一次就是取消选择),不知道是不是我的使用方法不正确~在网上找了也没找到NGUI自带的实现方法,然后就自己写了

    代码如下:

     1 using UnityEngine;
     2 using System.Collections;
     3 
     4 public class toggle : MonoBehaviour
     5 {
     6     UIToggle[] toggles;
     7     int value = 0;  //单选框所代表的的值:1、2、3
     8 
     9     void Awake()
    10     {
    11         toggles = new UIToggle[3];
    12         for (int i = 0; i < 3; i++)
    13         {
    14             toggles[i] = this.transform.Find("Anchor/Panel/CheckBox/Toggle_" + (i+1)).gameObject.GetComponent<UIToggle>();
    15             print(toggles[i].name);
    16 
    17             toggles[i].gameObject.AddComponent<UIEventListener>();
    18             UIEventListener.Get(toggles[i].gameObject).onClick = ButtonClick;
    19         }
    20 
    21     }
    22 
    23     int click1 = 0;
    24     int click2 = 0;
    25     int click3 = 0;
    26 
    27     void ButtonClick(GameObject obj)
    28     {
    29         
    30         string name = obj.name;
    31         switch(name)
    32         {
    33             case "Toggle_1":
    34                 click1++;
    35                 click2 = 0;
    36                 click3 = 0;
    37                 if (click1 % 2 == 0)
    38                 {
    39                     value = 0;
    40                     toggles[0].value = false;
    41                     GameObject sp = toggles[0].transform.FindChild("Checkmark").gameObject;
    42                     sp.SetActive(false);
    43                 }
    44                 else 
    45                 {
    46                     value = 1;
    47                     GameObject sp = toggles[0].transform.FindChild("Checkmark").gameObject;
    48                     sp.SetActive(true);
    49                 }
    50                 break;
    51 
    52             case "Toggle_2":
    53                 click2++;
    54                 click1 = 0;
    55                 click3 = 0;
    56                 if (click2 % 2 == 0)
    57                 {
    58                     value = 0;
    59                     toggles[1].value = false;
    60                     GameObject sp = toggles[1].transform.FindChild("Checkmark").gameObject;
    61                     sp.SetActive(false);
    62                 }
    63                 else
    64                 {
    65                     value = 2;
    66                     GameObject sp = toggles[1].transform.FindChild("Checkmark").gameObject;
    67                     sp.SetActive(true);
    68                 }
    69                 break;
    70 
    71             case "Toggle_3":
    72                 click3++;
    73                 click1 = 0;
    74                 click2 = 0;
    75                 if (click3 % 2 == 0)
    76                 {
    77                     value = 0;
    78                     toggles[2].value = false;
    79                     GameObject sp = toggles[2].transform.FindChild("Checkmark").gameObject;
    80                     sp.SetActive(false);
    81                 }
    82                 else
    83                 {
    84                     value = 3;
    85                     GameObject sp = toggles[2].transform.FindChild("Checkmark").gameObject;
    86                     sp.SetActive(true);
    87                 }
    88                 break;
    89 
    90             default:
    91                 break;
    92         }
    93 
    94         print(value);
    95     }
    96 
    97 }
  • 相关阅读:
    三维偏序(陌上花开)
    【题解】洛谷P4735最大异或和
    【题解】CF#229 E-Gifts
    【题解】JXOI2017颜色
    【题解】SDOI2009Bill的挑战
    【题解】CF#960 H-Santa's Gift
    【题解】Atcoder ARC#85 E-MUL
    【题解】CF#1012 C-Hill
    【题解】CF#852 E-Casinos and travel
    【题解】Atcoder ARC#90 F-Number of Digits
  • 原文地址:https://www.cnblogs.com/AaronBlogs/p/6891418.html
Copyright © 2020-2023  润新知