1. 오늘 학습 키워드
패널 잠금 및 팝업 제작
2. 오늘 학습 한 내용을 나만의 언어로 정리하기
제일 먼저 작업한건 해금이 된 엔딩만이 크레딧에서 볼 수 있기에, 이 부분을 짰다.
EndingSO에 bool 값과 이미지를 담아서 각각 bool과 이미지를 담당하도록 했고,
버튼 액션시에, 패널 즉 SO가 isLocked가 true라면, 잠김 팝업을 띄우도록 설정해주고,
SetText를 isLocked 여부에 따라 이름을 설정해주었다.
panel.SetText(panel.isLocked ? $"{capturedIdx}. ???" : $"{capturedIdx}. {so.EndingName}");
panel.SetButtonAction(() => {
if (panel.isLocked)
{
LockPopup();
}
else
{
onClick?.Invoke(capturedIdx);
}
});
그리고 1번 패널을 클릭했는데 막 7번 인덱스의 패널 텍스트가 열리고 이런 오류가 발생했다.
어제 맞췄다고 생각했는데 아니였어서,
이 부분을 수정하기 위해 패널을 제작하는 메서드랑 패널을 로드해주는 메서드를 계속 손봤지만 오류가 계속 진행되어서,
로그를 찍어보았더니, 로드는 잘 된다는 결과에 도달했다.
그래서 그럼 의심할 부분이 UI를 띄우는 부분에서 로드 값을 제대로 못받는 경우다 라고 생각해서
UI부분을 수정했다.
private IEnumerator LoadEnding(int endingIndex)
{
var handle = Addressables.LoadAssetsAsync<EndingSO>("Ending", null);
yield return handle;
if (handle.Status == AsyncOperationStatus.Succeeded)
{
foreach (var ending in handle.Result)
{
if (ending.Index == endingIndex)
{
UpdateUI(ending);
break;
}
}
}
Addressables.Release(handle);
}
그리고 텍스트 유틸리티 즉, 텍스트에 사용되는 효과들을 초기에는 StartUI에서만 사용을 했기에, 거기에 넣어두었지만
엔딩에서도 이 효과를 원하신다고 하셔서 TextUtility를 제작해서 텍스트에 관련된 효과를 전역으로 제작했다.
using System;
using System.Collections;
using System.Text;
using TMPro;
using UnityEngine;
public static class TextUtility
{
public static string CleanLineBreaks(string text)
{
return text.Replace("Wn", "\n").Replace("\\n", "\n").Replace(@"\n", "\n");
}
public static IEnumerator AnimatorText(TextMeshProUGUI target,string text, Action onComplete)
{
target.text = string.Empty;
StringBuilder stringBuilder = new();
for (int i = 0; i < text.Length; i++)
{
char currentChar = text[i];
if (currentChar == '\n') // 줄바꿈을 만났을 경우, 입력 대기
{
stringBuilder.Append(currentChar);
target.text = stringBuilder.ToString();
yield return new WaitUntil(() => Input.anyKeyDown);
}
else
{
stringBuilder.Append(text[i]);
target.text = stringBuilder.ToString();
yield return new WaitForSeconds(0.05f);
}
}
yield return new WaitUntil(() => Input.anyKeyDown);
onComplete?.Invoke();
}
}
이후 텍스트를 불러오는 와중 \n을 줄바꿈이 아니라 문자로 띄워주는 오류가 발생해서 CleanLineBreaks를 거쳐서 텍스트를 뽑아냈다.
public void UpdateUI(EndingSO ending)
{
string cleanedText = TextUtility.CleanLineBreaks(ending.EndingText);
StartCoroutine(TextUtility.AnimatorText(endingText, cleanedText ,ReturnToLobby));
endingText.text = ending.EndingText;
endingImage.sprite = ending.EndingImage;
}
private void ReturnToLobby()
{
//버튼으로 씬 로드
SceneBase.LoadScene("StartScene");
}
3. 학습하며 겪었던 문제점 & 에러
어드레서블을 여러 사람이 추가하고 이러다보니 오류가 생겼다. 이 부분은 씬 제작처럼 한 사람이 관리하는 것이 좋다고 되어있어서,
마지막에 오류 수정했어서 내가 담당하기로 했다.
그리고 위에서도 말했지만 엔딩 연결 오류 등이 있었다.
4. 내일 학습 할 것은 무엇인지
주말동안 모의 면접 예상 질문에 대해서 좀 작성을 해 둘 예정이고, 월요일엔 지금 사운드를 로드하는 부분에서 오류가 존재해서,
이 부분을 좀 고칠 것 같다.
'TIL' 카테고리의 다른 글
25.04.22 TIL (0) | 2025.04.22 |
---|---|
25.04.21 TIL (0) | 2025.04.21 |
25.04.17 TIL (0) | 2025.04.17 |
25.04.16 TIL (0) | 2025.04.16 |
25.04.15 TIL (0) | 2025.04.15 |