본문 바로가기
개발일지/게임개발

유니티 Talk BackLogBar 개발

by 라이티아 2025. 4. 29.

미연시와 같은 대화중 대화 기록을 저장하는 기능을 개발한다

대화는 기본적으로 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에 모아준다

 

자동으로 잘 쌓이는걸 볼 수 있다