Develop_Log 10

[내배캠 최종 프로젝트] 스테이지 및 캐릭터 데이터 구성

Json으로 기본 데이터 테이블을 구성하고, 이를 Info클래스로 받아서 사용한다.앞의 Json데이터는 서버가 붙을 경우 서버에서 받아올 수 있다.이 데이터로 유저가 사용하는 데이터 클래스로 감싸고, 이 묶음을 유저 데이터에서 관리해준다.그리고 그 유저데이터를 다시 Json으로 구성하여 저장하고 있다. 내가 구성하는 부분은 데이터 테이블 부터 InstanceClass와 로드까지하고, 뒤의 저장하는 부분은 다른 분이 맡아 주셨다. 위는 캐릭터 테이블이고, 아래는 스테이지 테이블이다. id로 조인하여 사용 할 수 있게 만들어놨다.이를 json와 info클래스로 변환해주는 프로그램을 사용하여 json과 infoclass로 만들었다.InstanceClass에서는 Info클래스와 여러 기타 정보를 갖고 있다. [..

Develop_Log 2024.12.11

[내배캠 최종 프로젝트] 공격 및 공격 범위 표시

캐릭터의 스킬구조를 뜯어 고치고 있다.스킬 버튼을 누르면 해당 스킬의 범위를 보여주고, 버튼을 뗄때 스킬이 발동된다. 스킬 범위 구현데칼을 활용해서 보여주도록 했다. 90도 부채꼴, 180도, 원형 세종류의 데칼을 준비하고, 이 데칼이 바닥에만 표시될 수 있도록 Rendering Layers를 LightLayer1을 지정해주고, 바닥도 LightLayer1을 지정해주었다.public virtual void OnInputDown(){ if (IsSkillAvailable) { if (stateMachine.Skill!=null && stateMachine.Skill != this) { stateMachine.Skill.areaIndicator.gameObject.SetActive(false); }..

Develop_Log 2024.12.06

[내배캠 최종 프로젝트] 캐릭터 구현

캐릭터 테이블엑셀로 캐릭터 및 스킬 테이블을 관리, 튜터님의 ExceltoJsonWizard를 사용해서 json으로 변환해서 사용.구현CharacterCharacterInfo 및 SkillInfo등 데이터를 Instance로 감싸서 갖고 있도록 함.~Instance클래스는 Info를 담고 있는 플레이어가 실제로 갖고 있는 정보의 클래스.캐릭터 강화 등을 확장이 있을 수 있어 Instance클래스로 관리하도록 함스킬에 강화가 가능하다고 하면.. 스킬Instance을 characterInstance에 넣어야할 것 같기도.스텟 및 hphandler등을 갖고 있어 캐릭터의 수치변화 상태를 갖고 있음.SkillBase를 상속받는 Skill들을 갖고 있음.Activator로 할당하고 있음. 리플랙션을 쓰는게 마음에..

Develop_Log 2024.12.04

[내배캠 최종 프로젝트] 맵 장애물 구현

쿠키런 : 모험의 탑을 레퍼런스로 개발중.정작 쿠키런 : 모험의 탑을 즐겨하는 팀원은 없다는게 웃음 벨구현 사항 본다고 내가 제일 많이 해본듯. 아니 기획한 사람은 왜 안하면서 왜 이걸 레퍼로 잡자고 한건데?문과 버튼 구현버튼쿠키런 플레이시 보면 밟으면 문이 열리는 기믹이 존재TriggerSource 클래스를 구현하여 트리거 되면 실행될 오브젝트를 받아서 실행시키는 기믹을 구현함버튼은 TriggerSource를 상속받아 OnTriggerEnter가 될때 실행되도록 함.니케 로스트 섹터를 보면 밟고 있어야 열리고 발을 떼면 닫히는 버튼이 존재함.Trigger될 오브젝트와 TriggerSource에 Cancle을 구현OnTriggerEnter일 때 Excute, OnTriggerExit일때 Cancle을 실..

Develop_Log 2024.12.03

[ScriptableObject Loader] Excel에서 SO로 만들기

엑셀에서 데이터를 불러와서 ScriptableObject를 만드는 프로젝트를 만들었다.1suyb/ScriptableObject-Maker:[GitHub - 1suyb/ScriptableObject-Maker: Csv로부터 scriptableObject를 만드는 기능Csv로부터 scriptableObject를 만드는 기능. Contribute to 1suyb/ScriptableObject-Maker development by creating an account on GitHub.github.com](https://github.com/1suyb/ScriptableObject-Maker)엑셀 데이터를 불러오는 것은 ExcelDataReader를 활용하였다.ExcelDataReader/ExcelDataReade..

Develop_Log 2024.11.24

[팀플젝 회고] 유니티 심화주차

진짜 미친듯이 최선을 다한...까지는 아니였지만 (동생 실기로 인해 주말에 불참 ㅠ)그래도 누가 아파서 통으로 빠지거나하지않고 처음으로 모든 구성원이 열심히 시간 맥스로 채워서 달린 프로젝트 였던 것 같다.이번에는 몬스터 전반 및 낮 과 밤 로직등을 맡아서 구현했다.오브젝트 풀링이나 스폰매니저, CSVtoSO등은 내가 이전에 쓰던 코드를 가져다가 사용했다.점점 프로젝트를 하다보니 다시 사용할 수 있는 코드들은 재사용하게 되니 1시간정도는....빨라진 것 같기도.몬스터 구현은 강의의 FSM을 사용하여 구현하였다.몬스터 상태가 몇가지 없어서 그냥 구현할까하다가 그래도 배운걸 적용해보고자 FSM을 사용하였다.처음에 chase랑 Attack 만 존재하는 상태라 아 이걸 왜 복잡하게 이렇게 한다고 했지... 싶었..

Develop_Log 2024.11.22

유닛 스텟에 빌더패턴 적용

유닛에 스텟이 자그마치 변수가 10개다.아이템은 이 스텟들 중에 6개만을 상승 시킬 수 있다.아이템이 아닌 다른 무언가가 이 6개 스텟말고 다른 스텟을 증가 시킬 경우의 수도 있다.이걸 디폴트 매개변수 생성자를 쓰자니 인생이 너무 힘들어질 것 같았다.해결방안으로 빌더 패턴을 적용했다.public enum StatsChangeType{ Add, Multiple, Override,}[Serializable]public class UnitStat{ [SerializeField] private StatsChangeType _type; public StatsChangeType Type => _type; [SerializeField] private int _health; [Se..

Develop_Log 2024.10.25

[TrobleShooting] ww로 달리기 구현

블레이드 소울처럼 ww키로 달리거나shift를 눌러 달릴 수 있도록 구현하고 싶었음.결과처음 시도W를 MultiTab / Tap Count 2로 실행함 - 안됨디버깅ww를 누를때 두번째 w를 빠르게 떼야 isRun이 true가 됨을 알게됨.제약사항ww 를 두번째 w를 꾹 눌러 계속 이동할 수 있게 해야 했음.leftshift도 누르고 있을 때 run, 떼면 다시 걷게 해야 함.InputAction.CallbackContext 에서 어떤 키가 눌린 건지는 감별 할 수 없음해결 방법InputAction.CallbackContext에서 지금 인터렉션이 어떤 인터렉션인지는 알 수 있음context.interaction is MultiTapInteraction이를 활용해서 multitab의 tap count를 1..

Develop_Log 2024.10.24

유니티 입문 주차 회고

아쉬운 점Scene을 두사람 이상이 건들면 충돌나기에 테스트는 각자 씬에서, 메인 씬들은 동적으로 생성하기로 함.그럼 Resources로 오브젝트들을 불러와서 생성해주는데, path를 string으로 입력하는게 맘에 안들긴 함. 극복은 하지 못했음.Resource 생성에 String을 대신할 방법?enum으로 만들자.이게 맞나? 엄청나게 큰 enum이 나오거나 여기저기 쪼개면 string이랑 무슨차이?csv파일을 만들자Scene에 생성될 오브젝트들의 이름은 가능하다고 생각UI에서 UI를 불러올때는? 이것도 일일히 테이블을 만드는가..?스포너를 대체 할 방법볼도 아이템도 뭐도 다 생성되는 것들에 대해 스포너를 만들고 싶다. 내 작업 영역이 아니라서 참았다.싱글톤을 줄이고 싶다.책에서 싱글톤을 줄이는 방법이..

Develop_Log 2024.10.22

아이템에 커맨드 패턴 적용

내배캠 유니티 입문 팀프로젝트를 하는 중, 아이템에 대한 구현내용이 있었다.팀원과 내가 아이템을 두가지 종류로 따로 만들어 합쳐야하는 상황이 왔다. 서로 구현 방향이 너무 달랐다.내 구현 방식아이템 abstract class를 만들고 이를 상속받는 각 아이템을 만들었다.팀원의 구현 방식아이템이 ItemType enum을 들고 있고, 플레이어에 부딪혔을 때 그에 맞춰서 효과를 적용하려고 했다.둘 다 문제점이 명확하다. 내 구현방식이면 아이템이 생성될 때마다 프리팹을 만들어줘야하고 풀도 계속 늘려야한다. 얘도 확장에 열린듯 닫힌듯 하다팀원의 구현방식이면 아이템을 만들 때마다 프리팹을 만들지 않아도되고, 풀도 늘려야하는 이유는 없지만, 아이템이 늘어날 때마다 swich 문에 케이스를 늘려줘야한다. 확장에 닫혀..

Develop_Log 2024.10.18