2017-05-30 148 views
0

我正在做一个清单应用程序。创建清单/“步骤分步与Unity3D

操作非常简单,当我在第一次切换点击,它就会被禁用。当我点击第二跳,它会被禁用,等等...

像这样:

Checklist Application

现在,我就把它:

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切换!

我怎么能做到的?

我想引用自己的Toggle,就像:“this.GetComponent();”。 当我点击切换时,代码会明白我只点击它。

我试过使用“this”但没有成功。

简历:

- >当我第一次的toogle点击,它就会被禁用
- >当我在第二的toogle点击,它就会被禁用
- >等等...

任何人都可以帮到我吗?我如何更新我的代码来实现它?

---------------------------- UPDATE ----------------- -------
解决
https://forum.unity3d.com/threads/creating-a-checklist-step-by-step.473398/#post-3088399

+0

在您的编辑中,只支持在打开时将其切换。 – Tvde1

+0

如果你找到了你的问题的答案,你应该将其作为答案发布,而不是作为对问题的编辑。 – Servy

回答

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; 
    } 
} 

一种更有效的方法是将切换设置为公开,然后,拖动&通过检查器删除切换组件。但是,如果你有一百个切换,这将是乏味的。

+0

感谢您回复@Hellium。我可以用另一个代码片段解决我的问题。我更新了我的答案。再次感谢! – Zkk