inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

유니티 강좌 [쯔꾸르풍 게임 제작하기]

이벤트 (2) - 대화 시스템

대화창이 안꺼지고 대사가 무한 반복됩니다...

324

cancancan11

작성한 질문수 2

0

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class DialogManager : MonoBehaviour
{
    public static DialogManager instance;

    #region Singleton
    private void Awake()
    {
        if(instance == null)
        {
            DontDestroyOnLoad(this.gameObject);
            instance = this;
        }
        else
        {
            Destroy(this.gameObject);
        }
    }
    #endregion Singleton

    public Text text;
    public SpriteRenderer rendererDialogWindow;

    private List<stringlistSentences;
    private List<SpritelistDialogWindows;

    private int count;

    public Animator animDialogWindow;

    public bool talking = false
    private bool keyActivated = false;

    public Canvas ConCanvas;

        void Start()
        {
            count = 0;
            text.text ="";
            listSentences = new List<string>();
            listDialogWindows = new List<Sprite>();
        }

        public void ShowDialog(Dialog dialog)
        {
            talking = true;

            for(int i = 0i < dialog.sentences.Lengthi++)
            {
                listSentences.Add(dialog.sentences[i]);
                listDialogWindows.Add(dialog.dialogWindows[i]);
            }
            animDialogWindow.SetBool("Appear"true);
            StartCoroutine(StartDialogueCoroutine());
        }

        public void ExitDialogue()
        {
            text.text ="";
            count = 0;
            listSentences.Clear();
            listDialogWindows.Clear();
            animDialogWindow.SetBool("Appear"false);
            talking = false;
        }

        IEnumerator StartDialogueCoroutine()
        {
            if(count > 0)
                {
                    if(listDialogWindows[count] != listDialogWindows[count-1])
                {
                    animDialogWindow.SetBool("Appear"false);
                    yield return new WaitForSeconds(0.2f);
                    rendererDialogWindow.GetComponent<SpriteRenderer>().sprite = listDialogWindows[count];
                    animDialogWindow.SetBool("Appear"true);
                }
            }
            else
            {
                yield return new WaitForSeconds(0.05f);
                rendererDialogWindow.GetComponent<SpriteRenderer>().sprite = listDialogWindows[count];
            }
            keyActivated = true;
            for(int i = 0i < listSentences[count].Lengthi++)
                {
                    text.text += listSentences[count][i];
                    yield return new WaitForSeconds(0.01f);
                }
        }

        void Update()
        {
            if(talking && keyActivated)
            {
                if(Input.GetKeyDown(KeyCode.Z))
                {
                    keyActivated = false;
                    count++;
                    text.text ="";

                    if(count == listSentences.Count)
                    {
                        StopAllCoroutines();
                        ExitDialogue();
                        ConCanvas.enabled = false;
                    }
                    else
                    {
                        StopAllCoroutines();
                        StartCoroutine(StartDialogueCoroutine());
                    }
                }
            }
        }
}
코드에 문제가 있는건가요??

unity

답변 0

섹션7 수업자료 업로드 부탁드립니다.

0

10

2

Dictionary Key를 int에서 string으로 변경한 이유에 대한 문의

0

14

1

UI 기능 관련 질문이 있습니다!

0

34

2

03-01 (16. CharacterController)

0

28

2

TLS 질문드립니다.

0

41

2

Task 구현 28:36 Equals 에서 잘 모르는 부분이 있습니다.

0

24

2

SpinLock과 컨텍스트스위칭에 대해 질문 남겨요.

0

46

2

픽셀 좌표 스크린 좌표

0

32

0

Locomotion랑 Turn 이 꼭 부모 자식 관계일 필요가 있나요?

0

23

1

LobbyUIController의 백키가 사라졌는데 왜그런건가요?

0

40

2

무조건 타이틀 씬부터 시작해야하나요?

0

38

1

BaseUI, UIManager

0

48

3

맵이 어두워지는 현상

0

210

1

맥 OS환경에서도 만들 수 있나요?

0

275

1

자료구조도 사용하시나요?

0

307

1

코딩소스는 있는곳은없나요??

0

382

0

tiled로 unity 적용 할떄 자꾸 에러가 뜹니다

0

752

0

명령어가 안먹혀요///

0

332

1

tilde2unity가 안불러와져요

1

604

3

대화창에서 첫번째 문장이 안뜹니다

0

422

0

질문

1

468

1

scene이동시 객체 투명(?)화 현상..

0

300

1

걷다가 멈추면 캐릭터가 한쪽방향만 쳐다봐요 ㅠ

0

475

1

snap set 사용 질문이요

0

306

0