유니티로 인벤토리UI를 만들고 있습니다.
아이템UI을 드래드 드랍하기 위해서 아이템 오브젝트에 DragDrop 스크립트를 add component한 상태이고
인벤토리와 상호작용하기 위해 DragDrop 스크립트에서 인벤토리 스크립트를 참조한 상태입니다.
또 인벤토리에 장착한 아이템이 플레이어의 데이터에 접근해야 하기에 인벤토리 스크립트에서 플레이어의 데이터를 참조했습니다.
그런데 인벤토리에서 아이템UI이 밖으로 드랍되면 플레이어의 발 밑에 아이템(3D)을 생성하려고 했을 때
플레이어의 위치를 받아오기 위해서 아이템(DragDrop)->인벤토리->플레이어 위치 순으로 데이터에 접근하게 되더군요.
이런 형태의 접근 방식이 과연 괜찮은지 궁금해서 질문해봅니다... 아니라면 더 좋은 접근 방법이 있을까요?
불편하지않다면 문제될건 없지 플레이어가 하나라면 싱글톤으로 게임매니저에서 변수로 가지고있어도 되고 편한쪽으로하면 될듯
InventoryUI는 Inventory를 참조하고, Inventory는 Player를 참조. InventoryUI의 내부 ItemUI에서 Drag를 시작한 itemUI가 InventoryUI의 외부에서 DragEnd됐을 때 플레이어의 현재 위치에 Drag시도한 Item을 Instance하고 싶은 상황으로 이해했음. 그런데 ItemUI의 DragDrop->Inventory->Player 이렇게 '역순'으로 데이터를 접근하는 구조가 굉장히 마음에 걸려서 아마 이런 질문글을 했다고 보는데 나도 초보 개발자인 입장에서 최근에 알게 된 것은 책임 구조가 이렇게 역류하면 안된다는 거임. 즉, InventoryUIManager에서 MouseController에게 OnDragEnd됐을 때 저장해둔(Drag시작했던)
ItemUI의 데이터가 있다면, 해당 ItemUI의 주인 InventoryUI를 알아내어 Inventory의 ItemUI에 있던 Item을 Remove하도록 요청하고, PlayerCharacterManager(대충 관련된 애)한테 Player데이터를 달라고 하고 해당 위치에 아이템을 생성하는게 맞지 않을까 싶음. 나도 초보니까.. 이런식으로 생각한 놈도 있다 정도만 ㅋㅋ
모두 답변 감사합니다!