미연시와 같은 대화중 대화 기록을 저장하는 기능을 개발한다
대화는 기본적으로 name, talk로 나누어져서 구성되어 있으며 이를 대화 박스가 받아들인다
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
public class backLogBar : MonoBehaviour
{
public TextMeshProUGUI nameText;
public TextMeshProUGUI talkLogText;
backLogBar(string name, string talkLog)
{
nameText.text = name;
talkLogText.text = talkLog;
}
}
이러한 구조로 되어 있으며, 생성자를 사용하여 생성 즉시 텍스트를 채워준다
근데 GPT가 생성자를 사용하지 말라고 조언한다
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
public class backLogBar : MonoBehaviour
{
public TextMeshProUGUI nameText;
public TextMeshProUGUI talkLogText;
public void Setup(string name, string talkLog)
{
nameText = transform.GetChild(0).GetComponent<TextMeshProUGUI>();
talkLogText = transform.GetChild(1).GetComponent<TextMeshProUGUI>();
nameText.text = name;
talkLogText.text = talkLog;
}
}
일단 따로 일반함수로 정리한다
public void DisplayNextSentence()
{
if (currentLine < rowSize)
{
StopAllCoroutines();
Name.text = Sentence[currentLine, 1];
StartCoroutine(TypeSentence(Sentence[currentLine, 2]));
string logEntry = Name.text + " - " + Sentence[currentLine, 2];
backlogQueue.Enqueue(logEntry);
if (backlogQueue.Count > backlogMaxCount)
{
backlogQueue.Dequeue();
}
}
if (currentLine + 1 < rowSize && Sentence[currentLine + 1, 2] != "end")
{
currentLine++;
}
}
그리고 이제 원래 있던 대화 코드에서 text를 건들던 부분을 instnace후 setup 호출로 수정 해준다
var backlog = Instantiate(backLogBar, backlogScroll.content.transform);
backlog.GetComponent<backLogBar>().Setup(Sentence[currentLine, 1], Sentence[currentLine, 2]);
이렇게 해서 자동으로 백로그 vertical layout group에 모아준다
자동으로 잘 쌓이는걸 볼 수 있다
'개발일지 > 게임개발' 카테고리의 다른 글
Unity effect maker 제작 (0) | 2025.04.29 |
---|---|
유니티 3D 게임 개발 - 체력, 총알 수 UI 제작 (1) | 2024.12.04 |
유니티 3D 게임 개발 - VFX 넣기 (1) | 2024.11.26 |
유니티 3D 게임 개발 - TPS 반동구현 (0) | 2024.11.26 |
유니티 3D 게임 개발 - TPS 조작 개발(Part 2 총기 조작 기능 구현, 장전 기능) (1) | 2024.11.24 |