0 支持
48 閲覧

 Toggleのオンオフによって、オブジェクトのsetactiveをそれぞれtrue,falseに変更するスクリプトを作成したいです

現状、以下のような方法で実装することができなかったため、困っています。

疑問点として以下のものがあります。

・toggleにアタッチしたスクリプトから、ほかのオブジェクトのsetactiveを直接変更できないのか

・Toggleonで制御するのは煩わしいので、もっといい方法がないのか

・以下のスクリプトがうまくいかない原因

public class VArrowToggleManager : MonoBehaviour

{

    private Toggle toggle;

    public int Toggleon = 2;

    

    // Start is called before the first frame update

    void Start()

    {

        toggle = GetComponent<Toggle>();

        toggle.onValueChanged.AddListener(OnToggleValueChanged);

    }

    private void OnToggleValueChanged(bool isOn)

    {

        if(isOn)

        {

            Toggleon = 1;

        }

        else

        {

            Toggleon = 0;

        }

    }

}

public class TrueToggleOnOffManager : MonoBehaviour

{

    public GameObject gameobject1; //toggleを取得

    // Start is called before the first frame update

    void Start()

    {

        

    }

    // Update is called once per frame

    void Update()

    {

        float ToggleOn = gameobject1.GetComponent<VArrowToggleManager>().Toggleon;

        if (ToggleOn == 1)

        {

            this.gameObject.SetActive (true);

        }

        else if (ToggleOn == 0)

        {

            this.gameObject.SetActive (false);

        }

    }

}

toggleから、オブジェクトのオンオフを制御するのは、もっと効率の良い方法がありそうなので、改善点や、よりよい方法があれば教えていただきたいです。 

閉鎖
初心者 (400 ポイント)
閉鎖 | 48 閲覧

回答 1

+1 支持
ベストアンサー
トグルにつける方のスクリプトに、onoffさせたいオブジェクトをシリアライズさせれば
できるのではないでしょうか。

    [SerializeField] GameObject target;

    private void OnToggleValueChanged(bool isOn) {
        target.gameObject.SetActive(isOn);
    }
達人回答者 (6.2k ポイント)
選択
0
シリアライズの使い方がわかり、toggleによって、オブジェクトのオンオフが可能になりました。
ご回答ありがとうございました。

関連する質問

0 支持
1 回答
0 支持
1 回答
0 支持
0 回答
ポテトおもち 初心者 (120 ポイント) 1/12 質問 | 26 閲覧
2021-02-08 質問・回答をMarkdownで入力できるようにしました。
2020-09-03 新たなスパム対策を導入しました。

103 質問

107 回答

117 コメント

130 ユーザー