Я использую Unity 2D в своей игре, и у меня возникла странная проблема. У меня есть GameObject (изображение) в моей сцене с прикрепленной к нему кнопкой. Когда игрок находится вне экрана, появляется изображение, которое работает как панель GameOver, и в случае достаточного количества монет вы можете возобновить игру. Все работает нормально, но когда появляется изображение, и я нажимаю кнопку для возобновления, изображение не исчезает, пока работает функция уменьшения количества монет.
Вот мой сценарий, в котором di () предназначен для d ie и but () для кнопки:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using CodeStage.AntiCheat.ObscuredTypes;
using CodeStage.AntiCheat.Detectors;
public class UIManager2 : MonoBehaviour {
public static ObscuredInt coin_score = 0;
public Text coin_text;
public Slider slider;
public Slider slider1;
public Slider slider2;
public GameObject bul;
public bool reverse;
public float timer;
public int delay = 1;
public float speed=0.5f;
public GameObject pause;
public AudioSource[] aud=new AudioSource[3];
void Start () {
coin_score = ObscuredPrefs.GetInt ("Score");
StartCoroutine (elapsed ());
slider1.minValue = 0;
slider1.maxValue = 20;
bul = GameObject.FindGameObjectWithTag ("Player").GetComponent<Plane19> ().bullet;
}
void Update () {
timer += Time.deltaTime;
if (timer >= delay && reverse == false) {
timer = 0f;
slider2.value++;
}
if (timer >= delay && reverse == true) {
timer = 0f;
slider2.value -= speed;
}
coin_text.text = coin_score.ToString ();
ObscuredPrefs.SetInt ("Score", coin_score);
if (slider2.value == 10) {
bul.SetActive (false);
reverse = true;
}
if (slider2.value == 0) {
bul.SetActive (true);
reverse = false;
}
}
public void di(){
pause.SetActive(true);
GetComponent<AudioSource>().Pause();
Time.timeScale = 0;
aud[0].Play();
aud[1].Pause();
aud[2].Pause();
}
public void but(){
pause.SetActive(false);
Time.timeScale=1;
aud[0].Pause();
aud[1].UnPause();
aud[2].UnPause();
GetComponent<AudioSource>().UnPause();
UIManager2.coin_score-=2;
}
IEnumerator elapsed () {
yield return new WaitForSeconds (2f);
slider.value++;
StartCoroutine (elapsed ());
}
}