Unity SetActive (true) не работает после установки его в false сначала?



Структура наследственности



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 (помните, что она прикреплена к кнопке), я установил ее в активное состояние, но она не работает.Может ли кто-нибудь помочь мне с этим?Спасибо.



EDIT: - этот скрипт прикреплен на "мяч". а шарик прикреплен на пуговицу.
"Сенсорная панель" - это дитя холста.

682   1  
c#

1 ответ:

Ваша проблема заключается в том, что когда вы отключаете Touch Panel , GameObject.Find не найдете его, так что вы не сможете включить его снова.

Из документации:

Эта функция возвращает только активные объекты GameObjects.

Вам нужно настроить свой Touch Panel как public GameObject myPanel и назначить его в инспекторе, после чего вы можете включить и отключить его.

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

Comments

    Ничего не найдено.