- [ 카테고리 없음 ]유니티 게임개발 - 최종 프로젝트 #122023-11-08 21:30:49스테이지 언락 기능을 만들었고 이를 플레이어 데이터와 연결하였다. 우선 PlayerData 클래스에 bool 형식의 리스트를 선언하고 3개의 레벨의 언락 여부를 초기화하였다. 이 정보를 LevelSelector 클래스에서 접근하여 수정된 데이터에 따라 언락된 스테이지를 관리하는 메서드를 만들었다. 기존 UI를 처리하는 클래스에서 씬 전환을 호출하던 것을이 메서드로 넘겼다. 주의해야 했던 점은 Enum 형식인 Scene을 문자열 형식으로 형변환을 하고 인덱스 접근처리를 하는 것이었다. 다음으로 StageUnlockManager 클래스를 만들고 내부에서 클리어 여부를 조절하고 저장하는 역할을 하게 하였다. 이 메서드는 게임 매니저에서 스테이지가 클리어되었을 때 호출된다. 직관적인 테스트를 위해서 클래스를 새..
- [ 카테고리 없음 ]유니티 게임개발 - 최종 프로젝트 #112023-11-07 21:03:05전투 씬에서 활용되는 시스템에 대한 기능을 개발하였다. 일단 기본적인 인게임 로직을 다루는 게임매니저를 생성하였다. 게임 오버를 다루는 bool형식의 메서드를 선언하여 스테이지 클리어 혹은 실패를 나누었다. 이 메서드 내에서 상황에 따라 게임 결과창의 UI적인 요소들을 다루는 클래스의 메서드를 호출한다. 클리어 실패 시 고정된 수치의 등급과 보상이 주어진다. 다음으로 점수와 점수에 대한 등급과 보상을 계산하는 클래스를 만들었다. 딕셔너리를 등급과 해당 점수, 해당 보상을 매핑하였고 주어진 수치를 기반으로 계산을 수행한다. 이 메서드를 게임 매니저에서 호출하여 게임 종료 시 계산된 값을 보여준다. 스테이지 종료 후의 보상은 플레이어 데이터로 넘어가 해당 데이터에 저장된다. 기존 기획에서는 플레이어의 남은 ..
- [ 카테고리 없음 ]유니티 게임개발 - 최종 프로젝트 #102023-11-06 20:37:05주말 동안에 문제가 많았던 데이터 매니저를 없애고 새로 제작하였다. 필요한 기능을 위주로 전보다 직관적으로 만들었고 슬롯 저장까지 완성하였다. 세이브 파일 배열을 선언하여 각 슬롯에 파일이 저장되고 빈 슬롯을 호출하면 새 플레이어를 생성할 수 있다. 또한 슬롯 삭제에 대한 배열을 만들어 특정한 인덱스의 데이터를 삭제할 수 있다. 이 데이터들을 로비 씬의 플레이어 정보 패널에 UI 상으로 로드하는 것으로 테스트를 완료하였다. 다음으로 싱글톤을 사용하여 통합 사운드 매니저를 만들었다. 오디오 믹서를 사용하여 사운드의 타입에 맞는 메서드를 각자 만들었고 필요한 부분에서 호출하기만 하면 된다. BGM의 경우 배열의 비교를 통해 씬 이름과 동일한 음악이 나오게 설정하였다. 오디오 설정에서 오디오 믹서 파라미터에 ..
- [ 카테고리 없음 ]유니티 게임개발 - 최종 프로젝트 #102023-11-03 20:13:52원인 불명의 버그로 인해서 시간을 많이 썼다. 플레이어 스탯 관련 SO를 제작하여 데이터 저장 및 로드 시스템에 성공적으로 연결을 하였다. SO의 데이터의 저장을 스탯 저장 클래스에 전송을 하고 로드할 때는 반대로 전송을 한다. 그리고 다음과 같은 버그가 발생하였다. 데이터가 존재하고 있지만 게임을 껐다 키면 데이터를 불러오지 않는 버그가 발생했다. 디버깅 작업을 통해 함수 호출도 잘 되고 있다는 것을 확인했지만 계속 문제가 생겼다. 이전 커밋에는 잘 작동하는 것을 확인했기 때문에 이전 작업 내용으로 새 브랜치를 팠다. 하지만 정말 이상하게도 같은 버그가 계속 발생하였고 결국 해결하지 못했다. 처음부터 천천히 뜯어보고 관련된 자료를 찾을 계획이다. 그리고 오늘 문득 궁금한 점이 있어 공부해보는 시간을 가..
- [ 카테고리 없음 ]유니티 게임개발 - 최종 프로젝트 #92023-11-02 23:11:19UI 상에서 나타난 각종 버그들을 확인하고 해결하는 작업을 진행하였다. 일시정지 창을 띄우면 TimeScale이 0이 되는데 이로 인해 닷트윈 애니메이션 재생이 안된다는 것이다. 닷트윈 내 SetUpdate() 함수를 true로 호출하여 시간이 scaled 되지 않게하여 문제를 해결하였다. 저장/불러오기 기능을 업데이트하였다. 메인 메뉴에서 새 게임/계속하기 버튼으로 나누었고 이를 통해 데이터를 생성하거나 불러올 수 있다. XOR 암호와 알고리즘을 사용하여 JSON 파일 암호화도 적용하였다. FileDataHandler 클래스에 메서드를 생성하였고 이는 저장될 때 선택적으로 호출된다. 데이터의 각 문자를 문자열의 길이에 따라 XOR 연산을 적용하여 데이터를 변환하는 동작과정을 거친다. 마지막으로 슬롯 저..
- [ 카테고리 없음 ]유니티 게임개발 - 최종 프로젝트 #82023-11-01 20:12:23JSON 파일로 저장 및 로드하는 것을 관리하는 데이터 시스템을 만들었다. GameData 클래스에서 데이터를 저장하며 데이터는 이 클래스의 생성자에서 초기화된다. 그리고 데이터를 로드하고 저장하는 메서드를 정의하는 인터페이스 IData를 만들었다. DataManager 클래스는 싱글톤으로 구현되었으며 IData를 구현한 객체들을 저장하는 리스트를 선언하였다. 클래스 내에서 현재 씬에서 IData를 구현한 객체를 찾아 리스트로 반환한다. LoadGame() 메서드를 통해 IData를 구현한 객체들에게 전달한다. SaveGame() 메서드를 IData를 구현한 객체들에게 저장을 요청한다. FileDataHandler 클래스는 데이터를 파일에서 로드하고 파일로 저장하는 역할을 한다. Save() 메서드에서 ..
- [ 카테고리 없음 ]유니티 게임개발 - 최종 프로젝트 #72023-10-31 20:29:26UI 관련된 부분을 마무리하였다. 로비 씬에서 플레이어 정보 창을 제작하였고 플레이어 모델을 입력을 통해 회전하는 기능을 넣었다. 캔버스의 자식으로 3D 모델을 넣고 렌더 모드를 카메라뷰로 설정하여 만들었는데 문제가 생겼다. 닷트윈 애니메이션 페이드 아웃의 시간차로 인해 모델이 잠깐 남아있는 것이다. 스테이지 선택과 톤을 맞추기 위해서 모든 패널들을 월드 UI로 제작하여 카메라 이동을 하는 것이 나아보인다. 플레이어 정보에서 하위 카테고리로 기본 정보, 무기, 인벤토리, 몬스터 정보 등을 추가할 예정이다. 상점 창의 경우 UI적인 부분을 만들었고 추후에 아이템 데이터가 만들어지면 적용할 예정이다. 인게임 UI의 경우 일시정지 창을 제작하였고 안에는 게임 재개, 재시작, 메인으로 나가기, 옵션 등이 있다...
- [ 카테고리 없음 ]유니티 게임개발 - 최종 프로젝트 #62023-10-30 21:04:34주말에 만진 부분은 오디오 설정 및 그래픽 설정이다. 오디오의 경우 오디오 믹서를 통해 개별적인 오디오 조정이 가능한 매니저를 데모용으로 만들었다. UI 작업이 마무리되면 우선적으로 작업할 예정이다. 그래픽 설정 중 텍스쳐 품질은 유니티 에디터 내장된 QualitySettings에 접근하여 설정하였다. 안티에일리어싱과 그림자 품질의 경우 현재 프로젝트에서 사용되어지고 있는 URP에셋에 접근하여 사용하였다. 직접적으로 값들을 세팅하여 런타임에서 저장이 되어지기 때문에 옳바른 방법이 아니라고 느껴졌다. 그리고 internal 메서드인 ShadowQuality()를 세팅할 수 없는 부분도 해결을 하고싶다. 관련된 자료를 더 찾아보고 정확한 방법을 찾을 계획이다. 오늘은 로비 씬을 구성하였다. 3D UI와 레벨..