#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;
}
}