Как проверить, достигает ли мой обратный отсчет 0 в моей функции?

#c# #loops #unity3d #countdown

#c# #циклы #unity3d #обратный отсчет

Вопрос:

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

public enum BattleState { START, PLAYERTURN, PLAYER2TURN, WON, LOST }

public class BattleSystem : MonoBehaviour
{
    public GameObject playerPrefab;
    public GameObject player2Prefab;

    public Transform playerBattleStation;
    public Transform player2BattleStation;

    public Text dialogueText;

    public Health playerHealth;
    public Health player2Health;

    public BattleState state;

    public float currentTime = 0f;
    float startingTime = 15f;
    public Text countdownText;

    void Start()
    {
        state = BattleState.START;
        StartCoroutine(SetupBattle());
        currentTime = startingTime;
    }

    void Update() //countdown
    {
        currentTime -= 1 * Time.deltaTime;
        countdownText.text = currentTime.ToString("0");

        if (currentTime <= 0)
        {
            currentTime = 0;
            Debug.Log("countdown hits 0");
        }
    }

    IEnumerator SetupBattle()
    {
        dialogueText.text = "Get ready "   playerUnit.unitName   "!";

        yield return new WaitForSeconds(5f);

        state = BattleState.PLAYERTURN;
        PlayerTurn(); //player 1's turn
    }

    void PlayerTurn()
    {
        dialogueText.text = playerUnit.unitName   "'s turn.";
    }
}

 

Ссылка на мою игру

Я хочу закодировать его так, чтобы при вызове PlayerTurn() функция проверяла, достигает ли обратный отсчет 0. Когда он достигает 0, это уменьшает количество сердец, которые есть у игрока 1.

Однако я могу поместить это условие только в свой метод Void Update(), поскольку я не могу поместить условие внутри моего Void PlayerTurn() , где я хочу, чтобы оно было.

Например…

void PlayerTurn()

dialogueText.text = «Ход игрока 1»

если текущее время равно 0, уменьшите количество сердец игрока 1, состояние = battlestate.player2turn и Player2Turn()

Затем, если у игрока 2 закончится время, он переключится обратно на игрока 1, а затем обратно на игрока 2 и так далее (цикл).

Ответ №1:

Изменено обновление Void ()…

     void Update() //countdown
    {
        currentTime -= 1 * Time.deltaTime;
        countdownText.text = currentTime.ToString("0");

        if (currentTime <= 0 amp;amp; state == BattleState.PLAYERTURN)
        {
            currentTime = 0;
            playerHealth.numOfHearts = playerHealth.numOfHearts - 1;
            state = BattleState.PLAYER2TURN;
            Player2Turn();
            currentTime = 10;
        }
        else if (currentTime <= 0 amp;amp; state == BattleState.PLAYER2TURN)
        {
            currentTime = 0;
            player2Health.numOfHearts = player2Health.numOfHearts - 1;
            state = BattleState.PLAYERTURN;
            PlayerTurn();
            currentTime = 10;
        }
    }