오디오 작업은 어느정도 얼추 마무리 됐다.
단발, 점사, 연발 사운드 구성이 고민이다.
내일 얘기해봐야겠다.
대사창 만들기!
유니티에서 대사창을 구현하려면,
Json을 이용해 대사를 구현할 수 있다.
{
"dialogues": [
{
"name": "Sgt. Collins",
"dialogue": "반갑다 제군. \n훈련센터에 온 것을 환영한다."
},
{
"name": "Sgt. Collins",
"dialogue": "나는 콜린 중사다."
},
{
"name": "Sgt. Collins",
"dialogue": "제군은 이곳에서 사격 연습을 진행할 수 있다."
}
]
}
using System.Collections.Generic;
[System.Serializable]
public class Dialogue
{
public string name;
public string dialogue;
}
using System.Collections.Generic;
[System.Serializable]
public class Dialogue
{
public string name;
public string dialogue;
}
using UnityEngine;
using TMPro;
using System.IO;
public class DialogueManager : Singleton<DialogueManager>
{
public TextMeshProUGUI nameText;
public TextMeshProUGUI descriptsText;
private DialogueList dialogueList;
private int currentDialogueIndex = 0;
void Start()
{
// JSON 파일에서 대화 리스트 가져오기
string path = Application.dataPath + "/Dialogues/Dialogues.json";
string json = File.ReadAllText(path);
dialogueList = JsonUtility.FromJson<DialogueList>(json);
// 첫 번째 대사 표시하기
DisplayDialogue();
}
void Update()
{
// 엔터 버튼이 눌렸을 때 다음 대사 표시하기
if (Input.GetKeyDown(KeyCode.Return))
NextDialogue();
}
void DisplayDialogue()
{
if (currentDialogueIndex < dialogueList.dialogues.Count)
{
nameText.text = dialogueList.dialogues[currentDialogueIndex].name;
descriptsText.text = dialogueList.dialogues[currentDialogueIndex].dialogue;
}
else
{
Debug.Log("End of dialogues.");
// 모든 대사가 끝났을 때 처리 코드 추가...
}
}
void NextDialogue()
{
currentDialogueIndex++;
if (currentDialogueIndex >= dialogueList.dialogues.Count)
currentDialogueIndex = 0; //대화가 마지막까지 가면 처음으로 돌아간다.
DisplayDialogue();
}
}
총기 사운드 다듬기
대사창 사운드 추가하기, 완성하기.