我正在制作一份清单申请表。
操作非常简单。当我第一次点击切换时,它将被禁用。当我点击第二个Toggle时,它将被禁用,依此类推......
像这样:
现在,我知道了:
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class AtivaBotao : MonoBehaviour{
public Toggle checklits_toggle;
public bool playersReady;
public void Start(){
checklits_toggle = GameObject.Find("toggle1").GetComponent<Toggle>();
}
public void EnableDisable(){
if (checklits_toggle.interactable == true){
checklits_toggle.interactable = false;
}
}
}
此代码适用于唯一的切换,但我想扩展它。我希望将它缩放为3,10,50,100个Toggles!
我怎么做到的?
我想参考自己的Toggle,例如:“this.GetComponent();”。 因为当我点击Toggle时,代码将理解我只点击它。
我尝试使用“this”但没有成功。
恢复:
- &GT;当我首先点击进入谷歌时,它将被禁用 - &GT;当我点击第二个toogle时,它将被禁用 - &GT;等等...
任何人都可以帮助我吗?我如何更新我的代码才能成功?
----------------------------更新------------------ ------
解决
https://forum.unity3d.com/threads/creating-a-checklist-step-by-step.473398/#post-3088399
答案 0 :(得分:1)
将包含以下代码的脚本附加到每个切换:
private UnityEngine.UI.Toggle toggle;
void Start()
{
toggle = GetComponentInChildren<UnityEngine.UI.Toggle>();
if( toggle != null )
toggle.onValueChanged.addListener( OnToggleValueChanged ) ;
else
Debug.LogError("No toggle component in children!", this ) ;
}
private void OnToggleValueChanged( bool isOn )
{
if( isOn )
{
toggle.onValueChanged.removeListener( OnToggleValueChanged ) ;
toggle.interactable = false;
}
}
更有效的方法是将切换设置为公开,然后拖动&amp;通过检查器删除切换组件。但如果你有一百个切换,那将是乏味的。