1. 배경
- 플레이어가 NPC와 상호작용하는 키를 Spacebar로 설정해 놓았다. 하지만 NPC와 대화 중 스크립트를 넘기는 키를 클릭으로만 지정해 두어, 스크립트를 넘기는 또 다른 방법으로 Spacebar를 추가하려고 했다.
2. 발단
- NPC와의 상호작용키도 Spacebar이고, 스크립트를 넘어가는 키에 Spacebar를 추가함으로써, 상호작용을 시작할때, 첫번째 스크립트가 자동으로 한 번 넘어가는 문제가 발생하였다.
3. 전개
- 문제를 해결하기 위해 다음 방법을 시도하였다.
- 스크립트는 String[]으로 받고 있기 때문에, 모든 NPC의 스크립트에 아무것도 쓰여있지 않은 String[0]을 추가해서 NPC와 상호작용을 시작하면 자동으로 한 번 넘어가게 변경
4. 위기
- 위 방법으로 문제를 해결하긴 했지만, 방식이 아름답지 않음.
- 이유 1 : 앞으로 추가하는 모든 NPC의 Dialogue에 공백의 스크립트를 하나 추가해야함.
- 이유 2 : 스크립트를 넘어갈 때, Spacebar 이외의 방식을 추가하는 경우, 공백 스크립트가 한 번 출력.
- 이유 3: 대화창이 처음 열릴 때, 매우 빠르게 빈 스크립트가 넘어가는 것이 보일 수 있음. 플레이어 입장에서 뭔가 놓쳤다는 인식을 줄 가능성 존재.
5. 절정
- 문제를 해결하기 위해 다음과 같은 조치를 취함.
- bool 변수 isDialogueStart를 상태 플래그로 추가.
- NPC와 대화하기 전에 false로 있다가, 대화가 시작되면 스크립트를 불러오며 true로 바뀜.
- isDialogueStart가 true일 경우 정해진 입력이 들어올 시, 스크립트가 넘어감.
- 스크립트가 종료될 때, 플래그를 다시 false로 되돌림.
더보기
using System;
using UnityEngine;
using UnityEngine.UI;
public class DialogueManager : MonoBehaviour
{
public static DialogueManager Instance;
[SerializeField] private Text dialogueText;
private string[] dialogues;
private int currentIndex = 0;
private Action onFinish;
private bool isDialogueStart = false; // 플래그 추가
private void Awake()
{
Instance = this;
}
private void Update()
{
if (!UIManager.Instance.dialoguePanel.activeSelf) return;
if (isDialogueStart) // 첫 입력 무시 설정
{
isDialogueStart = false;
return;
}
// 스크립트를 넘어가는 키로 KeyCode.Space를 추가
if (Input.GetKeyDown(KeyCode.Space)|| Input.GetMouseButtonDown(0))
{
currentIndex++;
if (currentIndex < dialogues.Length)
{
dialogueText.text = dialogues[currentIndex];
}
else
{
UIManager.Instance.ChangePanel(PanelName.Main);
onFinish?.Invoke();
}
}
}
public void Show(string[] dialogues, Action onFinish)
{
this.dialogues = dialogues;
currentIndex = 0;
this.onFinish = onFinish;
UIManager.Instance.ChangePanel(PanelName.Dialogue);
dialogueText.text = dialogues[currentIndex];
isDialogueStart = true; // 첫 입력 무시 설정
}
}
6. 결말
- 수정 작업이 정상적으로 완료 됨.
- 더 이상 대사를 추가할 때, string[0]에 공백을 넣지 않아도 않게 변경.
'Unity 개발 일지 > 게임 기획' 카테고리의 다른 글
[팀 프로젝트] Text RPG 만들기 3 - Skill & Event (0) | 2025.04.29 |
---|---|
[팀 프로젝트] Text RPG 만들기 2 - 전투 시스템 (0) | 2025.04.25 |
[팀프로젝트] Text RPG 만들기 (0) | 2025.04.21 |
게임 속 상호작용 분석하기 2 (0) | 2025.04.14 |
오목 게임 기획(팀 프로젝트) (0) | 2025.03.27 |