언더테일 스타일의 게임을 만들고 있어. 대화창 만들고 있는데, 텍스트는 CSV 파일로 읽어들이는 방식으로 했어. 


플레이어가 표지판에 다가가 z키를 누르면 대화창이 열리며 첫줄 텍스트가 출력 돼. 그런데 또 버튼을 누르면 두번째 줄이 나오는 게 아니라 대화창이 닫혀버려. ㅜ ㅜ 


ChatGPT한테 물어보니 두 번째 줄이 출력이 되긴 하는데 대화창이 아니라 콘솔에 출력되네. 대화창은 여전히 처음에만 열리고 바로 닫힘. 


CloseText()에 문제가 있는 걸까? ChatGPT도 문제를 못 찾아서 여기 고수형님들한테 도움 요청해 :


* 참고로 ShowText()는 플레이어 게임오브젝트의 스크립트에서 호출하도록 되어 있어.  


using TMPro;
using UnityEngine;
using UnityEngine.UI;

public class Interactables : MonoBehaviour
{
    [SerializeField] private GameObject textPanel;
    [SerializeField] private Image profileImage;
    [SerializeField] private TextMeshProUGUI dialogueTMP;
    [SerializeField] private ObjectData objectInfo; // ScriptableObject 데이터
    private CSVLoader csvLoader; // CSV 데이터를 불러올 CSVLoader
    private bool isDialogueActive = false;
    private int currentLine = 0; // 현재 출력 중인 텍스트 라인

    private void Start()
    {
        textPanel.SetActive(false); // 게임 시작 시 대화창 비활성화
        csvLoader = FindObjectOfType<CSVLoader>(); // CSVLoader 찾기
    }

    public void ShowText()
    {
        if (textPanel != null && objectInfo != null && csvLoader != null)
        {
            if (objectInfo.textIDs == null || objectInfo.textIDs.Length == 0)
            {
                Debug.LogError("⚠ textIDs가 비어 있습니다! ScriptableObject의 textIDs 값을 확인하세요.");
                return;
            }

            textPanel.SetActive(true);
            profileImage.sprite = objectInfo.profileImage;

            // 첫 번째 줄 표시
            currentLine = 0;
            dialogueTMP.text = csvLoader.GetText(objectInfo.textIDs[currentLine]);
            isDialogueActive = true;
        }
    }

    private void Update()
    {
    if (isDialogueActive && textPanel.activeSelf && (Input.GetKeyDown(KeyCode.Z) || Input.GetButtonDown("Submit")))
    {
        currentLine++;
        Debug.Log($"+ Z 키 입력 감지! 현재 줄: {currentLine}, 총 줄 수: {objectInfo.textIDs.Length}");

        if (currentLine < objectInfo.textIDs.Length)
        {
            string nextText = csvLoader.GetText(objectInfo.textIDs[currentLine]);
            Debug.Log($"+ 다음 출력할 텍스트: {nextText} (TextID: {objectInfo.textIDs[currentLine]})");

            // + UI에 반영되는지 확인하는 로그 추가
            dialogueTMP.text = nextText;
            Debug.Log($"? UI에 적용된 텍스트: {dialogueTMP.text}");
        }
        else
        {
            Debug.Log("? 마지막 줄 도달, 대화창 닫기.");
            CloseText();
        }
    }
    }


    public void CloseText()
    {
        textPanel.SetActive(false);
        isDialogueActive = false;
        currentLine = 0; // 대화가 끝나면 초기화
    }
}