2017-05-30 11 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トグルのためにそれをスケールしたい!

どうすればできますか?

私は自分のトグルを参照すると思います。「this.GetComponent();」のようになります。 Toggleをクリックすると、コードは私がオンになっていることを理解しています。

"this"を使用しようとしましたが、成功しませんでした。

再開:

- 私が最初toogleをクリックすると>、それは無効にすることでしょう
- 私は二toogleをクリックすると>、それは無効にすることでしょう
- >のように...

誰でも手伝ってもらえますか?コードを更新する方法

----------------------------更新----------------- -------
は、すべてのトグルに内側に次のコードを使用してスクリプトを取り付け
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; 
    } 
} 

より効率的な方法、および&をドラッグして、トグルコンポーネントをインスペクタでドロップします。しかし、100回のトグルがあれば、面倒です。

+0

お返事ありがとうございます。私は別のコードスニペットで私の問題を解決することができます。私は自分の答えを更新しました。再度、感謝します! – Zkk

関連する問題