Develop/유니티

[유니티 C#] 다음에 올 문장 미리 보여주기

레다솔 2023. 6. 5. 11:19
728x90
반응형

2023.06.02 - [유니티] - [유니티 C#] 문자열 종류 구분, 긴 글에서 현재 몇 번째 절? 문단?

 

[유니티 C#] 문자열 종류 구분, 긴 글에서 현재 몇 번째 절? 문단?

https://kimkitty.net/archives/1688 Kim Kitty's Blog 김키티의 아수라장 - C#,PC게임,이슈,트렌드 kimkitty.net 해당 포스트를 참조했습니다. 2023.06.01 - [유니티] - [유니티 C#] string 문자열에 여러 컬러 넣기, 자동으

redasol.tistory.com

이전 포스트에서 이어집니다.

 

여러 타자 연습 게임을 보면 작성하고 있는 문장말고 다음에 작성할 문장을 미리 보여주는 기능이 있어 만들어보았다.

 

정말 단순하게 제시 문장 밑에 다음 문장을 보여주도록 했다.

특수기호를 위치할 일반 텍스트 객체와 문장을 보여줄 TMP_Text를 합쳐서 이용했다.

이상하게 TMP_Text 로는 특수기호가 나오질 않는다.

사용한 특수기호는 윈도우 + . (쉼표)를 눌러 나오는 창에서 이모지 -> 기호 -> ⤴️ 를 사용했다. ( Color를 파란색으로 했다.)

▲ , ↑ <- 이거를 사용해도 상관이 없을 거 같다.

 

코드는 다음과 같다.

// TMP_Text 객체를 선언하고
public TMP_Text nextText;

void Start()
{
	// 중략...
    // 시작할 때 문제 리스트의 1번을 받는다.
    nextText.text = problemList[1];
	// 중략...    
}

/* 이후 CheckInputFiled 코루틴에서 */

    IEnumerator CheckInputField()
    {
        int num = 0;
        while(true)
        {
            yield return null;
            
            if(string.Equals(inputField.text, insideProblemText))
            {
                nowListNum++;
                if(nowListNum >= problemList.Count)
                {
                    UnityEditor.EditorApplication.isPlaying = false;
                    break;
                }
                else
                {
                    insideProblemText = problemList[nowListNum];
                    showingProblemText.text = insideProblemText;
                    
                    // 현재 문제 번호가 마지막에 가까운지 확인!
                    
                    // 다음에 보여줄 문제가 문제 리스트의 카운트보다 많거나 같다면
                    // 끝 임
                    if(nowListNum + 1 >= problemList.Count)
                    {
                        nextText.text = "끝! EndText";
                    }
                    else
                    {
                    	// 그렇지 않다면 다음 문장을 보여준다.
                        nextText.text = problemList[nowListNum+1];
                    }
                    inputField.text = "";
                    inputField.ActivateInputField();
                    if(titleType == 1 && (insideProblemText[0] < 58 && insideProblemText[0] > 47 ))
                    {
                        num++;
                        titleText.text = saveFirstTilteText;
                        titleText.text = titleText.text + "-" + num.ToString();
                    }
                }
            }
            if(nowListNum >= problemList.Count)
            {
                UnityEditor.EditorApplication.isPlaying = false;
                break;
            }
            
        }
    }

이렇게 설정하면 마지막 문장을 작성할 때 다음 문장을 보여주는 텍스트가 끝! 이라는 내용으로 작성되고

마지막 문장의 작성이 끝나면 에디터의 플레이를 끄게 했다.

728x90
반응형