몇 번째 수정인지 모르겠지만 또다시 갈아엎는 인벤토리....
인벤토리랑 장비창을 하나의 화면에 띄우려고 했는데 마비노기 모바일 영상을 다시 보니 인벤토리랑 장비창이 따로 존재했다. 이왕 따라 하기로 했던 거니까 최대한 똑같이 만들기 위해 다시 한번 인벤토리를 갈아엎었다.
인벤토리 기능 수정
직접 플레이를 할 수 있는 방법이 없어서 기능이 완전 동일하진 않겠지만 최대한 기능을 유추하면서 만들었다.

기존의 만들어진 기능에서 크게 달라진건 없지만 동작 방식이 변경됐다.
아이템 슬롯을 게임이 시작될 때 생성하는 방식을 버리고 미리 모든 슬롯을 만드는 방식으로 변경했다. 대신 확장 버튼 (상단의 + 버튼)을 누르면 잠겨있던 슬롯이 열리는 방식으로 변경했다.

아이템은 획득하는 순서대로 인벤토리에 들어가고, 아이템을 클릭하면 해당 아이템에 대한 설명이 나오는 팝업창을 활성화한다.

아이템을 사용하면 팝업창이 닫히면서 해당 아이템의 개수가 1개씩 줄어든다. 아이템은 소모품과 재료로 나뉠 예정이고 소모품은 사용이 가능하지만 재료는 사용하기 버튼을 비활성화할 예정이다.

장비창 기능 수정

장비창은 아이템을 획득했을 때 획득한 순서대로 인벤토리에 저장되는 것이 아니라 정렬이 되면서 저장되도록 만들고 싶었다. 무기 -> 방패 -> 투구 -> 갑옷 -> 신발의 순서대로 인벤토리에 저장된다. 만약 같은 타입의 장비라면 장비마다 부여된 id값이 작은 순서대로 정렬이 된다.

장비창 또한 해당 슬롯을 클릭하면 팝업창이 열리고 해당 장비에 대한 정보가 나타난다. 장착 버튼을 누르면 장비 타입에 맞는 위치로 아이템이 장착된다.

장비를 해제할 때는 왼쪽의 장비 슬롯을 클릭하면 팝업창이 나오고 해제 버튼을 누르면 인벤토리에 다시 추가된다.

텍스트 다국어 기능
출시 예정인 게임이 아니라 필요는 없는 기능이지만 연습을 위해 만들어뒀다.
글로벌 빌드를 만들거나 게임 내에서 한글 <-> 영어 or 다른 언어들로 변경을 할 때 사용할 기능이다. 게임 중에 실시간으로 변경이 되진 않고 게임을 시작할 때 어떤 언어를 선택했는지에 따라 모든 string 데이터를 번역한다.
단어나 문장들이 미리 번역이 되어 있어야 하기때문에 Json을 사용해서 게임 내에서 사용하는 모든 string 데이터를 저장해두었다.

UI 요소들은 json에 저장된 string 데이터의 key값에 따라 게임이 시작될 때 Text를 변경한다.
[RequireComponent(typeof(Text))]
public class TextLocalizer : MonoBehaviour
{
[SerializeField]
private string textNameKey;
private Text myText;
private void Awake()
{
myText = GetComponent<Text>();
myText.text = StringManager.GetLocalizedUIText(textNameKey);
}
}


'Unity > 개발연습' 카테고리의 다른 글
| [Unity] 포트폴리오 개발일지 - 11 (0) | 2022.08.15 |
|---|---|
| [Unity] 포트폴리오 개발일지 - 10 (0) | 2022.06.10 |
| [Unity] 포트폴리오 개발일지 - 8 (0) | 2022.05.21 |
| [Unity] 포트폴리오 개발일지 - 7 (0) | 2022.05.13 |
| [Unity] 포트폴리오 개발일지 - 6 (0) | 2022.05.12 |