전체 대화 기록을 출력해보자.
어제의 작업으로 모든 대화를 저장하는 AllChatLog를 만들었고, 전체 대화 Log를 출력하는 메서드를 만들어보자.
3가지 창으로 구성되어 있다.
대화를 가진 Target으로 구성된 최상단 패널, Target의 Quest를 Index별로 가지고 있는 중단 패널, 그리고 한개의 Quest 대화 Log를 띄워주는 하단 패널로 이루어져있다.
void test()
{
allchatlogpannel.SetActive(true);
List<string> keys = allChatLog.allChatlog.Keys.ToList();
keys.Sort();
foreach (string key in keys)
{
var obj = Instantiate(chatpannelPrefab, allchatlogpannel.transform);
if (obj.TryGetComponent(out AllChatLogSet allChatLogSet))
{
allChatLogSet.Setting(key);
}
}
}
최상단에서는 allchatLog의 Key값을 리스트로 변환하여, Sort를 거쳐 순서를 정렬하고, 그에 맞게 prefab에 세팅해준다.
void Click()
{
ChatLogManager.instance.allchatlogpannel.SetActive(false);
ChatLogManager.instance.singlechatlogpannel.SetActive(true);
foreach (var idx in ChatLogManager.instance.allChatLog.allChatlog[text.text].saveOneLog.Keys.ToArray())
{
var obj = Instantiate(ChatLogManager.instance.chatpannelPrefab2,
ChatLogManager.instance.singlechatlogpannel.transform);
if (obj.TryGetComponent(out SingleChatLogSet singleChatLogSet))
{
singleChatLogSet.set(idx,text.text);
}
}
}
중단 패널에서는 idx별로 대화를 정리하여 prefab을 세팅해준다.
void onclick()
{
ChatLogManager.instance._chatlogwindow2.SetActive(true);
foreach (chatlogData chat in ChatlogDatas)
{
var obj = Instantiate(ChatLogManager.instance._chatLogPrefab, ChatLogManager.instance._chatLogPosition2.transform);
if (obj.TryGetComponent(out ChatLogSet chatLogSet))
{
string a = chat.Name + " : ";
chatLogSet.LogSetting(a,chat.Log);
}
}
}
하단 패널에서는 선택된 대화의 전체 로그를 출력한다.
현재 기능의 초안만 구성해두고 정리가 되지 않은 상황이라 좀 지저분하지만, 기능은 다 동작하기에 이를 바탕으로 추후 추가될 UI에 맞춰 작업하면 되리라 생각한다.