메이플스토리처럼 스텟창 아이템창 장비창 같은 ui관리하려는데 고민이 있습니다.
1. 특정 키를 눌러서 해당 ui가 나오면 stack에 담아주고 esc누르면 pop으로 빼려하는데
만약에 stack 중간에 인벤토리 창이 있는데 i키를 누르면 stack 중간의 인벤토리를 빼는 방법?
1-1. stack이 아니라면 stack말고 좋은 방법이 있는지...
2. 순서대로 아이템창, 장비창, 스텟창을 켰는데
아이템창을 누르면 아이템창 UI가 맨위로 나오고 esc누르면 켜진 순서의 마지막인
스텟창이 아닌 아이템 창이 먼저 꺼지게 하는방법? (이걸 생각하면 stack을 사용하면 안될꺼같은데...)
포커스같은 느낌으로 구현하시면 좋지 않을까요! 각각 독립적으로 끄고 켜고 하되 현재 포커스되어있는 ui오브젝트를 따로 관리하는 방법으로요!
포커스되어있다는게 해당 ui창이 켜져있다는 뜻인가요?
아뇨 현재 선택되어있는거요! 클릭하거나 새롭게 창을 키면 해당 ui오브젝트에 포커스를 맞춰주면 esc눌러서 끄는거는 포커스 되어있는거만 고정적으로 끄면 되지 않을까요?!!
오 좋은 방법인거 같아요! 아래에 댓글 달아주신분꺼랑 같이 해볼께요!
퇴근해야해서 나중에 봐야징
둘다 list나 dictionary 사용하면 쉽게 해결 할 수 있는 문제임. ui 최상위에 uimanager 같은 스크립트 만들어놓고 판넬로 ui 나눠서 해당 컬렉션에 집어넣은뒤에 오브젝트 컨트롤 하면 될듯
최상위 UI창에 컨트롤하는 스크립트 넣어놓고 그 아래에 있는 UI들은 Image로 되어있는데 판넬로 바꾸나요??
판넬로 바꾸는게 아니라 판넬이라는 그룹안에 그 ui들을 포함하면 되지... inventory(panel)->UI1,UI2,UI3 같은식으로 자식오브젝트로 지정하면 판넬만 컨트롤해도 인벤토리에 해당하는 ui들 관리 가능하고 그룹안의 UI들을 스크립트로 관리할때도 편해지자너
아 Stat, Equipment, Inventory 이렇게 UI별로 나눈다음에 관리하라는 뜻이군요! dictionary는 사용해보지 않아서 잘모르는데 해시같은 건가요?
ㅇㅇ 해시테이블로 구현된 컬렉션임 그냥 map라고 생각해도 무방. 그리고 이런방법은 객체끼리간에 의존성이 좀 강하게 주입되는데 이걸 피하게 짜고 싶으면 event driven을 알아보고 적용해보는 것도 좋은 방법임. 근데 난 엄청 규모가 큰 게임 만들거 아니면 이렇게 짜는게 직관적이고 편하다고 생각함. 괜히 규모도 작은 게임에 설계가 거창할 필요가 없으니..
그럼 1번은 dictionary에 UI들 다 넣어 주고 해당 키 누르면 그 키에 해당하는 UI를 키값으로 찾아서 bool형식으로 true, false하면 될까요? 이 방법말곤 다른게 생각이 안나네요... 그리고 2번은 어떤방식으로 해결해야되는건가용... 위에 댓글다신분 의견처럼 누른 UI창을 포커싱준다는 느낌으로 하면 될까요??
event driven은 처음들어보는거라서 공부를 더 해봐야 할꺼같아요!
당장 생각나는건 1번 경우엔 enum으로 state를 줘서 dictionary를 쓸거면 dictionary 형으로만들어서 state에 해당하는 enum값을 int형식으로 캐스트해서 key, value를 넣고 찾고 해서 니가 원하는 ui를 껏다 켰다 하면 되고 2번은 열어놓은 Ui들을 list로 저장해놓고 해당하는 ui를 한번 더 누르면 우선순위를 주는 플래그를 지정해서 특정하고 정렬한뒤에 esc키를 누르면 끄게 한다 뭐 이정도있겠는데 그냥 요리조리 만져보셈.. 답 다알려주면 발전을 못함
이제 확인했습니당 우선 여러가지 해보면서 맨땅에 해딩식으로 해보겠습니다 감사합니다!