
Instant: 텍스트가 즉시 전체 표시
Typewriter: 한 글자씩 순차적으로 표시
Fade: 텍스트가 서서히 나타나는 효과 (다음 에피소드에서 구현 예정
TextArchitect는 TextMeshPro를 활용하여 텍스트를 다양한 효과로 화면에 표시하는 핵심 클래스입니다.
public enum BuildMethod
{
instant, // 즉시 출력
typewriter, // 타자기 효과
fade // 페이드 효과
}
// 새 텍스트 출력
public Coroutine Build(string text)
{
preText = "";
targetText = text;
Stop();
buildProcess = tmpro.StartCoroutine(Building());
return buildProcess;
}
// 기존 텍스트에 추가
public Coroutine Append(string text)
{
preText = tmpro.text;
targetText = text;
Stop();
buildProcess = tmpro.StartCoroutine(Building());
return buildProcess;
}
텍스트 파일에서 대화 내용을 읽고 파싱하는 시스템입니다.
[화자이름] "대화내용" [명령어]
public class DIALOGUE_LINE
{
public string speaker; // 화자
public string dialogue; //대화 내용
public string commands; // 명령어
public bool hasSpeaker => speaker != string.Empty;
public bool hasDialogue => dialogue != string.Empty;
public bool hasCommands => commands != string.Empty;
}
대화의 전체적인 흐름을 제어하는 시스템입니다.
public class DialogueSystem : MonoBehaviour
{
public DialogueContainer dialogueContainer = new DialogueContainer();
private ConversationManager conversationManager;
private TextArchitect architect;
public static DialogueSystem instance;
public delegate void DialogueSystemEvent();
public event DialogueSystemEvent onUserPrompt_Next;
}
public class ConversationManager
{
private DialogueSystem dialogueSystem => DialogueSystem.instance;
private Coroutine process = null;
private TextArchitect architect = null;
private bool userPrompt = false;
public bool isRunning => process != null;
}
public class PlayerInputManager : MonoBehaviour
{
void Update()
{
if(Input.GetKeyDown(KeyCode.Space) || Input.GetKeyDown(KeyCode.Return))
{
PromptAdvance();
}
}
public void PromptAdvance()
{
DialogueSystem.instance.OnUserPrompt_Next();
}
}
public static class FileManagers
{
public static List<string> ReadTextFile(string filePath, bool includeBlankLines = true)
{
if (filePath.StartsWith('/'))
filePath = FilePaths.root + filePath;
List<string> lines = new List<string>();
// 파일 읽기 로직...
return lines;
}
}
참고 영상
Make a Visual Novel in Unity 2023 - Episode 02 The Text Architect
Make a Visual Novel in Unity 2023 - Episode 02 (pt2) Text Architect Fading
Make a Visual Novel in Unity 2023 - Episode 03 (pt1) Reading Text Files
Make a Visual Novel in Unity 2023 - Episode 03 (pt2) Dialogue Parsing
Make a Visual Novel in Unity 2023 - Episode 03 (pt3) Starting Conversations