//------NPC 관련 함수 ------
public void setText(TextAsset Content, TextAsset yes, TextAsset no)
{
//text.text = NpcName.text;
NpcContent = Content;
NpcYes = yes;
NpcNo = no;
if (!isYes)
StartCoroutine(talking());
}
private IEnumerator talking()
{
reader = new StringReader(NpcContent.text);
yield return readText();
yield return select();
}
private IEnumerator select()
{
reader = null;
while (null == reader)
{
if (Input.GetKeyDown("y"))
{
isYes = true;
reader = new StringReader(NpcYes.text);
}
else if (Input.GetKeyDown("n"))
{
reader = new StringReader(NpcNo.text);
}
yield return null;
}
yield return readText();
if (isYes) Yes?.Invoke();
else No?.Invoke();
}
// Invoke("함수이름",3f) 3초 뒤에 함수가 실행
private IEnumerator readText()
{
while (true)
{
Npctext = reader.ReadLine();
if (Npctext == null) break;
NPCTalk.text = Npctext;
yield return new WaitForSeconds(2f);
}
}
간단히 설명 하면
각 npc class 가 UIManager.instacne .setText() 로 각 npc가 들고 있는
text 내용 text , 수락시 text, 거절시 text를 넣어 주고
UIManager 에게 넣어주고
talking 코루틴 에서 내용 text를 한줄씩 보여줌 이후
(readtext 가 한줄씩 reader로 text에 2초 마다 넣어주고 null 이면 이면 break 하는함수임)
select 에서 y,n 선택 하고 유저가 어떤 선택을 했냐에 따라
y 면 set때 받아온 수락text 를 n이면 거절text를 하고
이후에 NPC class 마다 가상함수로 yes 면 yes 함수가 실행 되게
no면 no 함수가 실행 되게 해야 하는데
(NPC class 에는 yes, no 함수가 제작되어 있음 )
근데 같이 일하는 친구가 너무 코드가 비효율적이라는데
아직 빡대갈이라 나는 잘 모르겠음
제발 좀 도와주세요
워메 코루틴 범벅이네
이렇게까지 짜야되는거임??
비효율적이 뭔소리야 확장성이나 유지보수성이 낮다는거야? 저런부분에 수행시간이 중요하지는 않을거고.. 근데 무슨 종류의 게임임?
위에 글 처럼 코루틴이 너무 많은것 같다고 했었음 나도 근데 어떤 부분이 비효율적이라는 소리 인지 이해를 못하겠음
게임은 3D 핵앤슬래시류로 만들생각 이야
음 뭐.. 작업들 끝날때까지 대기하고 다음작업 하는 경우엔 코루틴 떡칠이 될수밖에 없긴 해