대화창이 안꺼지고 대사가 무한 반복됩니다...
325
cancancan11
2 câu hỏi đã được viết
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<string> listSentences;
private List<Sprite> listDialogWindows;
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 = 0; i < dialog.sentences.Length; i++)
{
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 = 0; i < listSentences[count].Length; i++)
{
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
Câu trả lời 0
클로드코드 + 유니티 컨텐츠만들기 응용에 대하여 질문드립니다.
0
14
1
매니저 관련 질문이 있습니다.
0
27
2
Instantiate
0
25
1
유니티 허브 다운로드
1
32
2
비쥬얼 스튜디오에서 unity연결이 없습니다.
0
50
2
UserDataManager 클래스 hasSaveError 처리
0
31
2
제공해주신 자료에 스크립트들이 빠져있습니다
0
27
2
플레이어를 왜 ECS로 만드는 건가요?
0
32
1
싱글턴패턴
0
32
2
코드 관련 질문
0
32
2
섹션7 수업자료 업로드 부탁드립니다.
0
38
2
Dictionary Key를 int에서 string으로 변경한 이유에 대한 문의
0
25
1
맵이 어두워지는 현상
0
212
1
맥 OS환경에서도 만들 수 있나요?
0
277
1
자료구조도 사용하시나요?
0
308
1
코딩소스는 있는곳은없나요??
0
383
0
tiled로 unity 적용 할떄 자꾸 에러가 뜹니다
0
754
0
명령어가 안먹혀요///
0
334
1
tilde2unity가 안불러와져요
1
607
3
대화창에서 첫번째 문장이 안뜹니다
0
424
0
질문
1
470
1
scene이동시 객체 투명(?)화 현상..
0
303
1
걷다가 멈추면 캐릭터가 한쪽방향만 쳐다봐요 ㅠ
0
479
1
snap set 사용 질문이요
0
307
0

