Heirarchy structure

using UnityEngine;
    using System.Collections;

    public class Ball : MonoBehaviour {
        private Rigidbody rigidbody;
        public Vector3 LaunchVelocity;
        private AudioSource audiosource;

        // Use this for initialization
        void Start ()
        {
            GameObject.Find("Touch Panel").SetActive(false);
            rigidbody = GetComponent<Rigidbody>();
            rigidbody.isKinematic = true;
            // disable touch control
            audiosource = GetComponent<AudioSource>();
        }



        // Update is called once per frame
        void Update()
        {
        }

        public void LaunchBall(Vector3 passedvelocity)
        {
            rigidbody.velocity = passedvelocity;
        }

        public void DropBall()  // This is attached to a button
        {
            rigidbody.isKinematic = false;
            GameObject.Find("Touch Panel").SetActive(true);

        }
    }

正如您在上面看到的,我在启动功能时禁用了“触摸面板”。但是在 DropBall 功能上(记住它附加到一个按钮上),我已将其设置为事件但它不起作用。谁能帮我解决这个问题。谢谢。

编辑:- 此脚本附加在“球”上。球附在按钮上。
“触摸面板”是 Canvas 的子项。

最佳答案

您的问题是,当您禁用 Touch Panel 时, GameObject.Find 将找不到它,因此您将无法再次启用它。

From the documentation:



您需要将 Touch Panel 设置为 public GameObject myPanel 并在检查器中分配它,然后您可以启用和禁用它。

myPanel.SetActive(false);
myPanel.SetActive(true);

关于c# - Unity SetActive(true) 最初将其设置为 false 后不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43236205/

10-14 17:48