【问题标题】:Getting all the non active toggles in a toggle Group获取切换组中的所有非活动切换
【发布时间】:2016-08-26 23:30:31
【问题描述】:

正如它所说,我想将除活动按钮之外的所有切换按钮的图像更改回默认值,因此我需要一种方法来获取所有非活动切换按钮。与onClick() 切换按钮的方法相比,随着图像的变化,我可以为每个人移动默认图像并为选定的图像显示突出显示的图像。我不能用目标图形和图形来做,因为我不想改变完整的图像我有一个背景图像只是想将其更改为突出显示的图像。

【问题讨论】:

    标签: unity3d toggle


    【解决方案1】:

    ToggleGroup 在这种情况下没有任何帮助,但看看这个灵魂:

    A.创建自定义切换组件并使用它来代替原始切换

    public class MyToggle : Toggle 
    {
        public static Dictionary<ToggleGroup, List<Toggle>> allToggles = new Dictionary<ToggleGroup, List<Toggle>> ();
    
        protected override void Start()
        {
            base.Start();
    
            if (group != null)
            {
                if (!MyToggle.allToggles.ContainsKey(group))
                    MyToggle.allToggles.Add(group, new List<Toggle>());
    
                MyToggle.allToggles[group].Add(this);
            }
        }
    }
    

    B.为 ToggleGroup 创建扩展:

    namespace UIExtensionNS
    {
        public static class UIExtension
        {
            public static List<Toggle> GetAllInactiveToggles(this ToggleGroup group)
            {
                if (!MyToggle.allToggles.ContainsKey(group))
                    return null;
    
                List<Toggle> toReturn = new List<Toggle>();
    
                foreach (Toggle tgg in MyToggle.allToggles[group])
                {
                    if (tgg.isOn)
                        continue;
    
                    toReturn.Add(tgg);
                }
    
                return toReturn;
            }
        }
    }
    

    C.测试一下:)

    using UnityEngine;
    using System.Collections;
    using UnityEngine.UI;
    using UIExtensionNS;
    
    public class Test : MonoBehaviour 
    {
        public ToggleGroup toggleGroup;
    
        IEnumerator Start () 
        {
            // it is just to ensure it runs after all MyToggle.Start
            yield return null;
    
            var allInactive = toggleGroup.GetAllInactiveToggles();
    
            foreach (var tggl in allInactive)
            {
                Debug.Log(tggl.isOn);
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多