SetActive в Unity - PullRequest
       3

SetActive в Unity

0 голосов
/ 29 мая 2020

Я использую 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 ());
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...