728x90
TurnDisplay.cs
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class TurnDisplay : MonoBehaviour
{
public Image currentTurnImage;
public TextMeshProUGUI currentTurnText;
public TextMeshProUGUI turnListText;
public void UpdateCurrentTurn(object currentCharacter)
{
if (currentCharacter is Player player)
{
currentTurnText.text = player.CharacterName;
}
else if (currentCharacter is Enemy enemy)
{
currentTurnText.text = enemy.CharacterName;
}
}
public void UpdateTurnList(List<object> turnOrder, int currentTurnIndex)
{
turnListText.text = "";
for (int i = 0; i < turnOrder.Count; i++)
{
string characterName = turnOrder[i] is Player
? (turnOrder[i] as Player).CharacterName
: (turnOrder[i] as Enemy).CharacterName;
if (i == currentTurnIndex)
{
turnListText.text += $"{characterName}\n\n";
}
else
{
turnListText.text += $"{characterName}\n\n";
}
}
}
}
이미지는 당장 안쓰고, TurnList, currentTurnText만 사용했습니다.
TurnManager의 NextTurn 메서드
public void NextTurn()
{
currentTurnIndex++;
if (currentTurnIndex >= turnOrder.Count)
{
currentTurnIndex = 0;
}
object currentCharacter = turnOrder[currentTurnIndex];
turnDisplay.UpdateCurrentTurn(currentCharacter);
turnDisplay.UpdateTurnList(turnOrder, currentTurnIndex);
Debug.Log($"{(currentCharacter is Player ? (currentCharacter as Player).CharacterName : (currentCharacter as Enemy).CharacterName)}의 턴입니다.");
if (currentCharacter is Enemy enemy)
{
enemy.AttackRandomPlayer();
StartCoroutine(WaitTime());
}
}
턴이 넘어가면 리스트도 넘어가고, 현재 턴인 플레이어, 적이 currentText에 뜨게 됩니다.
리스트가 있고 리스트 순서대로 행동하는 것을 볼 수 있습니다.
그리고 리스트 옆에 현재 턴인 애가 뜹니다.
728x90
'Unity' 카테고리의 다른 글
3D 테스트 프로젝트 12 (0) | 2025.03.05 |
---|---|
3D 테스트 프로젝트 11 (0) | 2025.03.04 |
3D 테스트 프로젝트 9 (0) | 2025.03.02 |
3D 테스트 프로젝트 8 (0) | 2025.03.01 |
3D 테스트 프로젝트 7 (0) | 2025.02.28 |