C# 如何创建操作切换的订单
我正在做一个清单,它必须按照时间顺序 换句话说 检查表必须能够一次单击一个步骤。所有检查表都被禁用(Unity Inferface中的interactialbe:false),并且只有第一个元素处于活动状态(interactiable:on,Unity接口也是)。当我单击第一个切换时,它被禁用,下一个元素被激活(interactiable:false),如下所示: 开始: ->步骤1(活动)C# 如何创建操作切换的订单,c#,unity3d,C#,Unity3d,我正在做一个清单,它必须按照时间顺序 换句话说 检查表必须能够一次单击一个步骤。所有检查表都被禁用(Unity Inferface中的interactialbe:false),并且只有第一个元素处于活动状态(interactiable:on,Unity接口也是)。当我单击第一个切换时,它被禁用,下一个元素被激活(interactiable:false),如下所示: 开始: ->步骤1(活动) ->步骤2(解除激活) ->步骤3(解除激活) 单击(选中)步骤1. ->步骤1(解除激活) ->步骤2
->步骤2(解除激活)
->步骤3(解除激活)
单击(选中)步骤1. ->步骤1(解除激活)
->步骤2(活动)
->步骤3(解除激活)
单击(选中)第2步。 ->步骤1(解除激活)
->步骤2(停用)
->步骤3(活动)
等等 我找到了像GetComponentChildren、GetComponentnParent、GetComponents、GetComponentsInChildren、GetComponentsInParent这样的函数。我尝试在代码中插入,但没有成功 我认为有两种方式可以实现这一目标: 1-如果单击切换。。。“获取下一个元素->活动元素” 2-创建一个数组以获取my元素中所有切换的id,并且:如果切换被剪切。。。获取它的ID和ID中的+1 这是我的密码:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class AtivaBotao : MonoBehaviour {
public Toggle checklist_toggle;
public void Start(){
checklist_toggle = this.GetComponent<Toggle>();
}
public void EnableDisable(Toggle checklist_toggle){
if (checklist_toggle.interactable){
checklist_toggle.interactable = false;
}
}
}
使用UnityEngine;
使用系统集合;
使用UnityEngine.UI;
使用UnityEngine.EventSystems;
公共阶级:单一行为{
公共切换开关;
公开作废开始(){
checklist_toggle=this.GetComponent();
}
公共作废启用禁用(切换检查表\u切换){
if(可交互的检查表切换){
检查表\u toggle.interactiable=false;
}
}
}
实际上,它在单击时会激活和取消激活切换。正如我所说,我尝试插入不同的函数,但没有成功
最后,最好的方法是什么?以及如何更新代码以使其生效?创建一个脚本并将其附加到所有切换的父项:
private UnityEngine.UI.Toggle[] toggles;
void Start()
{
toggles = GetComponentsInChildren<UnityEngine.UI.Toggle>();
if( toggles.Length > 0 )
{
for( int i = 0 ; i < toggles.Length ; ++i )
{
int closureIndex = i ;
toggles[closureIndex].interactable = false ;
toggles[closureIndex].onValueChanged.addListener( (isOn) =>
if( isOn )
{
toggles[closureIndex].interactable = false;
if( closureIndex < toggles.Length - 1 )
toggles[closureIndex + 1].interactable = true ;
}
) ;
}
toggles[0].interactable = true ;
}
else
Debug.LogError("No toggle component in children!", this ) ;
}
private UnityEngine.UI.Toggle[]切换;
void Start()
{
toggles=GetComponentsInChildren();
如果(切换长度>0)
{
对于(int i=0;i
国际单项体育联合会
{
切换[closureIndex]。可交互=false;
if(closureIndex<切换.长度-1)
切换[closureIndex+1]。可交互=真;
}
) ;
}
切换[0]。可交互=真;
}
其他的
LogError(“子项中没有切换组件!”,这是);
}
在每个复选框中添加属性,如neighbrid,即下一个按钮的ID。因此,当单击某个复选框时,访问Neighbrid并激活该neighbor复选框并禁用当前复选框您一次只想选择一个切换?@DanHunex Yes。我仔细地想了想,但我很难将它转化为现实code@Programmer对一次一个,按顺序。1, 2, 3, 4... 就像在这个例子中,我想这就是OP想要解决的问题!这正是我想做的。谢谢!