Unity - метод запуска не работает - PullRequest
0 голосов
/ 01 ноября 2019

Я новичок в Unity, и я следую учебному пособию, чтобы немного ближе познакомиться с игровым движком. Я следую учебнику CodeMonkey. Я в игре на экране. это скрипт, который я прикрепил к своему GameOverWindow. но только Awake () вызывается. начало неиз-за этого мое событие не работает, поэтому окно «Игра окончена» не отображается.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using CodeMonkey.Utils;

public class GameOverWindow : MonoBehaviour
{
    private Text scoreText;
    // Start is called before the first frame update
    private void Start()
    {
        Bird.GetInstance().OnDied += Bird_OnDied;
    }

    private void Awake()
    {
        scoreText = transform.Find("scoreText").GetComponent<Text>();

        transform.Find("retryBtn").GetComponent<Button_UI>().ClickFunc = () => { UnityEngine.SceneManagement.SceneManager.LoadScene("GameScene"); };
        Hide();
    }

    private void Bird_OnDied(object sender, System.EventArgs e)
    {
        scoreText.text = Level.GetInstance().GetPipesPassedCount().ToString();
        Show();
    }

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

    }

    private void Hide()
    {
        gameObject.SetActive(false);
    }
    private void Show()
    {
        gameObject.SetActive(true);
    }
}

1 Ответ

2 голосов
/ 01 ноября 2019

Согласно Документациям Unity

Запуск вызывается ровно один раз за время существования скрипта. Однако Awake вызывается при инициализации объекта сценария, независимо от того, включен ли сценарий. Start не может быть вызван в том же кадре, что и Awake, если сценарий не включен во время инициализации.

Так что, если GameOverWindow отключен с самого начала, Start не будет выполнен, но будет Awake. Вы можете переместить инициализацию своего события в Awake, и оно должно работать (если проблема заключается в добавлении события, а не кода в событии).

...