카테고리 없음
본캠프_TIL_80일차 (스테이지 팝업 리팩토링)
티-히히
2025. 1. 7. 21:20
- 오전
- 오전회의
- 스테이지 팝업
- 리팩토링
- DoTween
- 오후
- 게임결과 UI DoTween
- 코드리뷰
스테이지 팝업 리팩토링
스테이지 팝업 - 코드 분리
StagePopup 에서 MonsterSelectedSlot 부분을 분리했습니다.
StagePopup
...
private void UpdateSelectedSlot(Sprite listSlotSprite)
{
var slotImg = monsterSelectedSlots[_crrSlotIdx].slotImg;
slotImg.sprite = listSlotSprite;
slotImg.color = new Color(1, 1, 1, 1);
}
...
MonsterSelectedSlot
public class MonsterSelectedSlot : MonoBehaviour
{
public Image slotImg;
public Image arrowImg;
public void UpdateSelectedSlot(Sprite listSlotSprite)
{
slotImg.sprite = listSlotSprite;
slotImg.color = new Color(1, 1, 1, 1);
}
}
스테이지 팝업 - GetComponent제거
전
private void LoadGameScene()
{
if (_selectedListData.Count != 4)
{
_warningTxt = "몬스터를 모두 선택하세요";
UIBase warningBox = PoolManager.Instance.SpawnFromPool<WarningBox>("WarningBox");
warningBox.transform.GetChild(0).GetComponent<TextMeshProUGUI>().text = _warningTxt;
return;
}
DataManager.Instance.selectedStageIdx = _stageIdx; //선택된 스테이지
DataManager.Instance.selectedMonsterData = _selectedListData; //선택된 몬스터
MySceneManager.Instance.ChangeScene("MainScene");
}
후
private void LoadGameScene()
{
if (_selectedListData.Count != 4)
{
_warningTxt = "몬스터를 모두 선택하세요";
WarningBox warningBox = PoolManager.Instance.SpawnFromPool<WarningBox>("WarningBox");
warningBox.SetText(_warningTxt);
return;
}
DataManager.Instance.selectedStageIdx = _stageIdx; //선택된 스테이지
DataManager.Instance.selectedMonsterData = _selectedListData; //선택된 몬스터
MySceneManager.Instance.ChangeScene("MainScene");
}
public class WarningBox : UIBase
{
...
[SerializeField] private TextMeshProUGUI _text;
...
public void SetText(string text)
{
_text.text = text;
}
}
Dotween오류
경고창을 다다다다 여러번 띄우면 나는 에러.
warning박스가 띄워지면서 콜백함수도 도달하기 전에 다시 창을 띄우려고할 때 이런 에러가뜬다.
만약 warningBox가 남아있는 시간이 길어진다면 그만큼 풀을 더 가져와주면 오류는 뜨지 않는다.
지금 페이드 인 페이드아웃까지 총 2f시간이 걸린다.
20개의 풀을 받아두면 오류는 뜨지않는다.
코드리뷰
MySceneManager
-클래스 이름 바꿔줄 것
- 코루틴 문자열말고 함수로 받을 것.,
WarningBox
-오브젝트 풀 말고 그냥 하나만 써도 될 것같다.
-canvasorder 또는 풀링되는 오브젝트위치를
UIManager
-UI오브젝트안에 Canvas넣어줄 것
-각각의 UI마다 canvas를 만들어주는 것이 아닌 UIManger을 넣어둔
monsterUI
-UIBase상속 안받아져있음.
-몬스터 스폰UI위치가 잘릴 수 있으니 화면크기에 따라 조절하도록... 스폰 위치를 조정하도록할지 의견 조율할 것.