본문 바로가기

유니티/3D RPG21

012 아이템 정보 요청/갱신 기능 아이템 정보의 은닉과 보안을 위해, 클라이언트에 데이터를 보관하지 않고 서버에 요청한다. ※ 참고 사항 1. 아이템 정보가 필요하면 클라이언트는 서버에게 [GetItem] [아이템 ID] 를 전송한다. 2. 서버는 아이템 Table의 [아이템 ID]에 해당하는 데이터를 검색한다. 3. 해당 클라이언트에게 [SetITem] [select * from Item where id = 아이템 ID]을 전송한다. 4. 클라이언트가 패킷을 받으면, 아이템 정보를 갱신한다. ! 주의 사항 코드 더보기 구현 영상 리펙토링 더보기 2019. 12. 27.
011 TCP/IP 환경의 서버 구축 기능 서버-클라이언트는 TCP/IP 환경으로 구축한다. 서버는 DB에 대한 권한을 가지고 있다. ※ 참고 사항 1. 클라이언트는 서버에게 요청하는 패킷(헤더+데이터)을 보낸다. 2. 패킷은 [ip] // [pid] [함수명] [파라메터...] 형식으로 구성된다. 헤더는 ';'로 구분하고, 데이터는 ','로 구분한다. 3. 서버는 함수명칭을 통해 요청된 행동을 수행한다. 수행되고 나온 데이터 값은 클라이언트로 패킷을 송신한다. 4. 패킷은 [함수명] [파라메터...] 방식으로 전송한다. 데이터는 ','로 구분한다. 5. 클라이언트는 SocketGameClient 클래스에서 수신한다. 패킷을 분해하여 함수를 실행한다. ! 주의 사항 코드 더보기 구현 영상 리펙토링 더보기 2019. 12. 24.
010 아이템 구매 및 수정 기능 아이템 상점을 통해 구매하거나 취소하는 시스템을 구현한다. ※ 참고 사항 1. 구매과정 : 상점 NPC와 대화 -> 아이템 상점 -> 아이템 클릭 -> 개수 선정 -> 구매 2. 구매시 Count는 화살표를 통해 개수를 지정한다. 3. 동일한 아이템은 최대 99개 까지 소유할 수 있다. 4. 아이템을 인벤토리에 넣기전, 동일한 아이템이 있다면 기존 공간에 개수를 추가한다. ! 주의 사항 코드 ※ Switch Select 클래스 더보기 ※ PurchaseUI 클래스 더보기 ※ Inventory 클래스 (수정) 더보기 구현 영상 리펙토링 더보기 2019. 12. 23.
09 내 정보 화면(스텟+인벤토리) 기능 한눈에 스텟과 인벤토리와 장착 아이템이 합쳐진, 내 정보 화면을 구현한다. ※ 참고 사항 1. 내 정보화면에서는 캐릭터의 Status, Inventory, Equipment 3가지 정보를 볼 수 있어야 한다. 2. 가방, 내정보 아이콘을 통해 진입한다. 3. 캐릭터 모습과, 장착 아이템은 코드가 구현되면 추가한다. ! 주의 사항 코드 더보기 구현 영상 리펙토링 더보기 2019. 12. 22.
008 플레이어 FSM 기능 Player 클래스를 기능별로 분할하고, FSM 문서에 따라 구현한다. ※ 참고 사항 1. Player -> PlayerInteract(물체와 상호작용), PlayerBehavior(FSM와 연계, 애니메이션 재생 유무 판단)로 분할한다. 2. 대기(Idle) : 초기상태로, 캐릭터가 가만히 있는 상태다. 3. 이동(Move) : 조이스틱이나 방향키를 통해 이동하고 있는 상태다. 4. 낙하(Fall) : 공중에서 떨어지고 있는 상태다. 5. 착지(Land) : 낙하 이후 지면과 부딪치면 발생되는 상태다. 6. 회피(Roll) : 몬스터의 공격을 회피하는 상태다. 7. 일반 공격(Normal Attack) : 플레이어가 공격 버튼을 통해 발동되는 상태다. 8. 재생 유무는 PlayerBehavior에.. 2019. 12. 22.
07 아이템 상점&툴팁 기능 NPC와 대화를 시도한 상태에서, 상점 버튼을 클릭하면 아이템 상점이 등장한다. ※ 참고 사항 1. 아이템은 NPC가 보유한 아이템을 판매한다. 2. 상점 버튼을 누르면 NPC 정보를 ItemStoreUI에 전송한다. 만약 npc 정보가 동일하면, 갱신하지 않는다. 3. 갱신은 판매 물품, 슬롯에서 표시되는 정보를 갱신한다. 4. 아이템 아이콘 위로 마우스나 손을 클릭하면, 설명에 관한 툴팁이 뜬다. 코드 ※ ItemStoreUI에 관한 코드 더보기 ※ 툴팁에 관한 코드 더보기 구현 영상 리펙토링 더보기 2019. 12. 16.
06 자동 테스트 구현 기능 유니티 TestRunner를 이용해, 자동으로 완성되었던 기능들을 테스트 해준다. ※ 참고 사항 1. TestRunner의 PlayMode를 이용한다. 2. 필요한 오브젝트들은 Instatiate를 활용하고, Rosurces 폴더에 보관한다. 3. 자주 사용하는 기능(생성, 제거 등등)들은 랩퍼로 만들어놓는다. 4. 테스트는 한가지 기능만 체크한다. 코드 더보기 구현 영상 리펙토링 더보기 2019. 12. 15.
05 대화 시스템 기능 플레이어와 NPC간의 대화 시스템을 구현한다. ※ 참고 사항 1. NpcInteract, DialogueUI, ItemStoreUI, QuestUI가 필요하다. 2. 유저가 NPC 근처에서 대화를 시도하면 UI가 출력된다. 3. NPC가 가지고 있는 값(Name, SaleItems, Message)들을 DialogueUI가 참조해서 사용한다. 4. DialogueUI에서는 ItemStore와 Quest로 넘어갈 수 있다. ! 주의 사항 코드 더보기 구현 영상 리펙토링 더보기 2019. 12. 14.
04 인벤토리 기능 플레이어의 인벤토리를 구현한다. ※ 현재 Scriptable형태로 Item을 작성하나, 이후에는 엑셀의 값을 받아서 사용한다. ※ 리펙토링은 코드 작성중에 틈틈히 수정한다. 1. Inventory의 공간은 40개로 작성한다. 2. Inventory와 InventoryUI, 그리고 InventorySlot이 필요하다. 3. 아이템 변화, 골드변화는 delegate를 활용한다. 즉 Add와 Remove시 활성화 시키고, InventoryUI에서 갱신시킨다. 4. InventorySlot에는 아이템, 아이콘, 버튼을 넣고 한번에 관리한다. ! 주의 사항 코드 더보기 구현 영상 리펙토링 더보기 2019. 12. 10.