2024/11 19

심화주차 진행상황 - 시간부족

심화주차 개인과제로 방치형 RPG를 선택하고, 현재 진행상황입니다. 현재 게임 자동진행, 재화 내용을 만들고, 마지막 스테이지를 클리어하면 스테이지가 재시작 되도록 설계한 상황입니다. 문제점생각해보니 마지막 스테이지가 종료되고 씬을 완전히 다시 불러오는것은 좋지 못한 선택이였던것 같다.씬을 다시 로드하게되면 팝업형태의 UI는 전부 사라질텐데 그러면 인벤토리를 열고있다가 스테이지가 종료되면 인벤토리가 닫히는 상태가 되버릴텐데....다시 생각해보니 방치형 게임은 보스를 잡고 나서 씬이 넘어가고 그 전까지는 계속 사냥을 반복하지 않나?보스사냥도 게이지가 전부 차면 보스 사냥 선택지가 나오고 or 보스 소환 여부를 선택하고 보스 사냥에 실패하면 스테이지로 돌아가는 기믹 이였을텐데사실 각 스테이지를 오브젝트 풀로..

개인프로젝트 - 맵 생성중 발생한 오류

맵을 생성한 뒤 특정 위치에 캐릭터 프리팹을 생성, NavMeshAgent 를 통해 이동을 시도할때 Agent 에서 오류가 발생 캐릭터를 생성한 뒤, navMeshOwner를 확인 할 경우 정의되지 않은 내용 참조 오류가 발생함 문제 원인 : 캐릭터 프리팹을 생성한 뒤, 생성한 프리팹의 스크립트에 이동 로직을 호출하지 않고 등록한 프리팹 객체의 스크립트를 호출하여 발생한 문제. 이를 해결하기 위해 프리팹 오브젝트를 생성한 뒤, 여기서 캐릭터 스크립트를 얻어서 별도로 등록등록한 스크립트를 호출하는 방식으로 문제 해결GameObject character = Instantiate(PlayerManager.Instance.ReturnEntryCharacterPrefab(i), StageManager.Instan..

특강 정리 - 직렬화 2차특강

플레이어 객체 → 여러 정보가 필요, 저장/불러어기가 가능해야함레벨경험치닉네임※ 묶어서 관리하기위해 직렬화 클래스로 관리public class Character : MonoBehaviour{ public UserData userData;}[System.Serializable]public class UserData{ public string nickname; public int lv; public float hp; public List friends = new List(); public Inventory inven;}이때 데이터 사용시에는 데이터를 저장한 클래스를 통해서 사용public Character character;public void CheckUserName(){ ..

특강 정리 - 객체지향, UGS

객체지향 특강 - 디자인 패턴개발을 할수록 코드가 쌓인다.작성한 코드는 레거시 코드라고 하며, 이를 개선하는 리팩토링 작업을 반복하게된다.개선을 반복하면서 일정한 패턴이 만들어지며, 이를 디자인 패턴이라고 한다.Unity 에서 자연스럽게 사용하는 디자인패턴들Prototype 패턴프립팹을 만들어 사용하는것 자체가 Prototype 패턴에 속함Composite 패턴오브젝트에 컴포넌트를 붙여서 사용하는 방식Flyweight 패턴ScriptableObject 사용이 이 패턴에 속함그 외 패턴들Facade 패턴Facade : 건물의 정면, 은행의 입구등을 생각하면 된다클래스에 큰 기능들을 묶어둔 뒤, 이에대한 접근 지점을 제공하는 패턴이 플레이어 클래스가 플레이어의 기능을 묶어두고, 접근지점을 제공하는 파사드 패..

숙련주차 개인프로젝트 - 버그 수정

팀 프로젝트 발표가 끝나고, 개인프로젝트 피드백 내용을 확인하는데 버프 시스템에 오류가 발생한다는 피드백을 받았습니다. 해당 버그를 확인하고, 수정하고자 프로젝트를 켜자마자 문제가 보였습니다.프리팹으로 빼두었던 버프시간 UI가 UI에 남아있던것을 확인하고 왜 오류가 발생하는지 알 수 있었습니다. 이 상태 그대로 실행하여 버프 아이템을 사용할경우, 이미 파괴된 게임오브젝트에 접근을 시도하였다는 내용의 오류가 발생합니다.제가 작성한 버프 UI는 플레이어의 버프가 추가될경우 변수로 등록한 게임오브젝트를 생성하고, 시간이 지나면 UI는 자체 스크립트로 인해 파괴되는방식이였습니다.public class BuffListUI : MonoBehaviour{ public GameObject buffInfoUI; ..

유니티 숙련주차 팀프로젝트 - 병합 완료

제출까지 2일남은 시점, 제작한 내용을 모두 병합하였습니다. 아이템 관련 내용을 당담하였기 때문에, 개인시연으로는 아이템 관련 부분만 진행하였습니다. Tab 키를 누르면 인벤토리가 열리고, 인벤토리에서 장비, 제작창을 열 수 있는 버튼을 만들어주었습니다.장비 탭에서는 현재 플레이어의 상태를 볼 수 있으며, 플레이어의 방어력, 추가 공격력등 장비의 스테이터스를 볼 수 있습니다. 단, 현재 장비의 스텟 변화가 실제 캐릭터에 적용된 상태는 아닙니다.장비, 소모품을 사용한 버프로 인한 스테이터스 변화는 별도의 스크립트가 저장하고 있으며, 이 내용을 캐릭터에 연결해주는 작업이 남았습니다.더보기public class CharacterBuffManager : MonoBehaviour{ private Equipm..

직렬화 특강 정리 - CSV, XML, Json 등

직렬화객체를 바이트 배열로 바꾸어 저장하는것프로그램의 기반유니티는 직렬화 데이터들의 집합 이라고 할 수 있음Scene,SO, meta, prefab 이 모두 직렬화 데이터메모장을 통해 prefab 등의 파일을 열어볼경우, YAML 형태로 직렬화 되어있는것을 확인할 수 있음역 직렬화저장한 데이터를 바이트 배열으로 바꾸어, 다시 객체로 변환하는것직렬화, 역직렬화의 과정코드들이 메모리에 산재됨재시작시 사용되는 메모리의 위치가 변경, 저장된 메모리는 이전 위치에 유지됨흩어져있는 내용을 정리해서 나열 → 직렬화나열된 값을 원래 자리에 되돌림 → 역직렬화직렬화를 한 뒤, 나중에 역직렬화가 가능함→ 직렬화를 통해 저장/통신 이 가능함 초기 직렬화0, 1 으로 데이터를 나열하여 사용 (바이트 배열)→ 컴퓨터는 이해하지..

유니티 숙련주차 팀 프로젝트 - 제작 시스템 추가

제작 시스템과 인벤토리 기반을 완성하였습니다.※ 아직 TMP에 한글폰트를 추가하지 않아서 글자가 모두 깨집니다. 제작에 필요한 아이템이 인벤토리에 있으면 제작 UI에 제작 가능한 아이템 목록이 나타나며, 이때 제작 가능한 아이템의 아이콘을 클릭하면 제작 재료 정보와 함께 제작 버튼이 활성화되도록 만들었습니다. 또한, 인벤토리에서 아이템 선택시, 상단에 아이템 정보를 출력하는 시스템을 제작하였습니다. 필요한 작업인벤토리는 플레이어파트를 당담한 팀원분에게 요청하여 파사드 패턴인 Player 클래스에서 접근 가능하도록 했습니다.단, 아직 제작시스템, 인벤토리 UI를 여는 입력이 완성되지 않았기 때문에 임시로 Update를 통해서 실시간으로 인벤토리를 확인하고, 제작 가능한 목록을 확인하고 있습니다.이 부분에서..