获取切换组中的所有非活动切换
Getting all the non active toggles in a toggle Group
正如它所说,我想将所有切换按钮的图像更改回默认值,但活动按钮除外,因此我需要一种方法来获取所有非活动切换按钮。比 onClick()
切换按钮的方法随着图像的变化,我可以为每个人移动默认图像并为所选图像显示突出显示的图像。我不能用目标图形和图形来做,因为我不想要要更改完整图像,我有一张背景图像,只想将其更改为突出显示的图像。
ToggleGroup 在这种情况下没有任何帮助,但看看这个 soultion:
一个。创建自定义切换组件并使用它代替原始 Toggle
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);
}
}
}
乙。为 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);
}
}
}
正如它所说,我想将所有切换按钮的图像更改回默认值,但活动按钮除外,因此我需要一种方法来获取所有非活动切换按钮。比 onClick()
切换按钮的方法随着图像的变化,我可以为每个人移动默认图像并为所选图像显示突出显示的图像。我不能用目标图形和图形来做,因为我不想要要更改完整图像,我有一张背景图像,只想将其更改为突出显示的图像。
ToggleGroup 在这种情况下没有任何帮助,但看看这个 soultion:
一个。创建自定义切换组件并使用它代替原始 Toggle
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);
}
}
}
乙。为 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);
}
}
}