У меня есть объект в моей игре, подобный силовому объекту: когда мой плеер входит в силу, он должен активировать панель, которая указывает, что власть была схвачена, и за последние 3 секунды это панель должна исчезнуть. На данный момент моя панель появляется, когда я нажимаю на нее, но она не исчезает. Я использую сопрограмму так:Coroutine не выполняет setActive (false)
using UnityEngine;
using System.Collections;
public class shrink : MonoBehaviour {
public float value = 0.1f; //1 by default in inspector
private bool colided = false;
private float speed;
Manager gameManager;
public GameObject panel;
// Update is called once per frame
void Start(){
speed = 3.4f;
gameManager = GameObject.Find ("GameController").GetComponent<Manager>();
}
void OnTriggerEnter(Collider c)
{
if (c.gameObject.tag == "Player") {
colided = true;
gameManager.powerUp1 = true;
StartCoroutine(menuOp());
}
}
//This method is executed every frame
void Update(){
if (colided) {
Vector3 temp = transform.localScale;
//We change the values for this saved variable (not actual transform scale)
temp.x -= value * Time.time;
temp.y -= value * Time.time;
if (temp.x > 0) {
speed += 0.02f;
transform.Rotate (0f, 0f, Time.deltaTime * 90 * speed);
transform.localScale = temp;
} else {
Object.Destroy (this.gameObject);
}
}
}
IEnumerator menuOp(){
panel.SetActive (true);
yield return new WaitForSeconds (3f);
panel.SetActive (false);
}
}
Ps: что внутри обновление не зависит от того, что мне нужно сделать, так что я думаю, что это не INTERFER с моими потребностями.
"curoutine" вы имеете в виду "сопрограмму"? – Richard
Пожалуйста, сообщите нам, если наши ответы были/были неправильными, и если вам нужна дополнительная помощь. – Maakep