UI에 정보 저장은 어떻게 하나요?
471
작성한 질문수 17
part1부터 정주행 중입니다. 지금 UI까지 본 상태에요.
현재 UI를 호출할 때는 프리팹을 Instanciate로 생성하고, 끌 때는 Destroy로 파괴하는 방식을 사용하잖아요?
RPG에서 인벤토리 같은 UI는 대부분 아이템을 버리거나 옮기는 등의 동작이 가능한데, UI를 파괴했다가 다시 생성하면 항상 초기 값으로 호출됩니다. 혹시 씬에서 변경한 오브젝트나 변수 등이 씬에서 파괴된 후에도 남아 있도록 프로젝트 자체에 저장하는 방법은 없나요?
답변 2
1
우선 현재 방식을 100% 지켜야 할 필요는 없습니다.
리소스가 많아지고 반응성이 중요한 UI라면
끌 때 Destroy하지 않고 그대로 들고 있되 보이지만 않게 처리해줄 수도 있습니다.
그와는 별개로 코드 설계상 실제 데이터는
UI 로직과는 별도로 관리하는 것이 좋습니다.
인벤토리를 예로 들면, 인벤이란 곧 소지하고 있는 아이템 목록을 의미하고,
[인벤이 꽉 차면 아이템 더 이상 주을 수가 없다]
[플레이어가 죽으면 인벤에 있는 아이템 하나를 랜덤으로 떨군다] 는 등의 다양한 사양과 엮여 있을 수 있습니다.
반면 UI_Inven은 정말 인벤토리에 있는 정보를 화면 UI에 출력하기 의한 용도로도 사용되니,
실제 데이터를 여기에 들고 있는 것이 맞을지는 살짝 의문이 들겠죠.
인디 게임 수준의 작은 게임이라면 뭘 어디에 관리해도 사실 크~게 상관 없지만,
규모가 조금 커지면 코드가 꼬일 확률이 비약적으로 높아지게 됩니다.
따라서 대부분 데이터는 별도의 클래스 (ex. Inventory)를 파서
일종의 전역 매니저 (ex. MyPlayer나, Managers라거나)에 들고 있고,
UI_ 코드에는 정말 UI와 관련된 코드만 넣는 경우가 많습니다.
(UI_Inven에서 실제 인벤 정보를 조회하기 위해선 Inventory 클래스를 참조하는 방식이 되겠죠)
0
감사합니다. 개인적으로 클리커 게임을 만들고 있다보니 거의 UI 위주로 진행이 되어서 궁금했어요.
말씀하신대로 로직은 따로 관리하고 UI에는 로직에 따른 값만 적용시켜주는 방향으로 하면 생성/파괴를 반복해도 큰 문제는 없을 것 같네요!
UI 기능 관련 질문이 있습니다!
0
37
2
픽셀 좌표 스크린 좌표
0
33
0
전체적으로 코드 읽는게 굉장히 오래 걸리네요...
0
73
2
카메라 #2 수업 캐릭터 쓰러짐 해결
0
84
1
플레이어 움직임이 끝날때, 기울어짐 현상
0
83
1
Input 적용과 관련하여 질문 있습니다.
0
75
1
디버그 불가.. Unity에 연결 불가
0
82
1
달리기 애니메이션 에러
0
89
2
오랜만에 게임을 만들다가 사운드 관련해서 뭔가 궁금한게 있어서 봤습니다
0
66
1
GetKey 오류
0
109
2
에셋을 어디에 올려두신지 알 수 있나요?
0
107
1
재귀호출? 오류나는데 왜 이래요 ?
0
169
6
Animation blending 파라미터 계산
0
68
1
newPos와 to지점이 겹쳐져야 하는거 아닌가요?
0
97
3
오브젝트 복제하니까 자꾸 이런게 뜨면서 꺼집니다
0
88
2
질문있습니다
0
143
2
아 이거 소스코드 같은거 없나요?
0
142
3
질문 드립니다. string.IsNullOrEmpty(name)
0
87
2
@Managers 가 씬에 배치되어 있어도 문제가 되지 않나요?
0
136
2
유니티6 NavMesh 안되는분들
1
176
1
Unity6 Unity-Chan Material 마젠타 문제 해결법
7
527
1
GetComponent<Poolable> 질문드립니다.
0
102
2
UI 불러오지 못함
0
118
2
UI 자동화 #1 - Util.cs의 FindChild함수에서 component.name에 컴포넌트 이름이 뜹니다.
0
155
2





