본문 바로가기

개발/Unity

[Unity] 프로젝트 소스코드 관련 간단 검토자료

https://github.com/Merge-is-Mine/Merge-is-Mine

 

 

[리펙토링 관련 검토]

[유틸 관련]

- Dectector.cs => 개선완료

- EffectController.cs
그대로 사용예정

- CameraMovement.cs
우선 그대로 사용예정


[Entity 관련]
- Entity.cs
*public abstract void DamagedFun(Vector3 pos); 함수 protected로 변경필요 (Damage주는 것은 무조건 Entity의 Damage함수로만 주기)

* 이외 Entity상속받은 Class (Player, Enemy) 모두 우선 그대로 사용예정, 다만 forcedmove와 같은 연출관련 함수는 다른곳으로 빼는것이 나아보임

- FlyEnemyChase.cs
삭제후 새로 추적알고리즘 만드는것을 고려할 필요가 있음

- Movement.cs
State기반 이동하는 시스템으로 대대적인 수정 필요


[Skill 관련]
- Skill.cs
우선 그대로 사용예정
이외 상속클래스도 그대로 사용예정


[Interaction관련]
- InteractionObj.cs
우선 그대로 사용예정
다만 현재는 Player가 해당 obj들을 감지한 뒤 해당 obj내의 함수를 호출하는 수동적인 구조인 상태, InteractionObj 자체도 detector를 두어서 각 상호작용하는 obj에 따라 어떤 상태로 변하는지 등의 능동적인 기능을 넣을 필요가 있다.
따라서 player가 interactionObj의 함수를 호출해주는 것을 추가로 interactionObj가 다른 Obj들과 상호작용할 수 있는 기능을 추가로 넣어주어야 한다.




[Map 관련]

- RoomInfo.cs
많은 개선 필요
* 방 입장 판별 콜라이더 단순화
* RoomInfo에 등록되어있지 않은 기능들 단순화, 기능 등록


- RoomSequence.cs => 그대로 사용 예정 (오브젝트풀링 기능구현되어있음)

- MapController.cs
소폭 개선 필요
roominfo가 수정됨에 따라 짜잘한거 수정 필요
큰 로직은 그대로 갈 예정


- RoomHintInstantiate.cs
큰 로직들은 그대로 사용예정
추후 연출관련추가

- VariationPreview.cs (Debug)
프리뷰 생성, 편집방식 대대적 수정예정
오브젝트 직접 이동시키며 바리에이션 수정할 수 있도록 구성예정


- CheckObj.cs + variation관련 상속 class들
그대로 사용예정
* 설명을 위한 주석 추가 필요
* Preview관련 사용하지 않는 함수 정리 필요 -> (public abstract void EditorPreview();
    public abstract void ErasePreview();)



[이외 추가 검토사항]
*** LJH/Scripts 폴더아래 cs파일들 각 기능별로 폴더만들어서 구분 필요
*** 각 클래스의 함수들은 모두 Start, Awake등을 통해 시작하는 것이 아니라 따로 Init이라는 함수를 두어 시작을 진행할 것
*** 그 Init을 한대 모아 수행하는것이 전체 게임시스템을 다루는 PlatformController의 Start함수 내에서나 이외 작은 기능들의 상위Controller의 Init함수에서 호출을 진행해주어야한다.
*** class이름 컨벤션 왠만하면 지키자
*** 구현되어있는 스크립트들이 혼자서 구동되게끔 구현되어있어, 의존성좀 추가해줘야한다. Start로 시작하지말고, 누군가 상위 Controller에서 호출해주게끔

- BackgroundLooper.cs
mainCamera는 해당 사항을 받는 상위Controller class에서 받아 진행하도록 해야한다.
Start함수가 아닌 Init함수에서 시작하도록 바꾸기
배경 loop가 update문에서 foreach문을 돌려 해결하고 있고, 그 안에서 호출되는 void SpawnBGObject(GameObject prefab) 에서 Instantiate를 계속 진행하고있는데 성능낭비가 매우 심하다. 이를 오브젝트 풀링방식으로 바꾸어 구현할 필요가 있다.


- BGMPlayer.cs
삭제하고 추가한 SoundController함수 이용하자, LSM/Prefab내에 찾아보면 SoundController가 prefab화되어 있을것이다.

- 잔상관련(TimeSlowController)
저거 잔상 생성할때마다, 새로운 오브젝트를 생성해서 성능 문제가 좀 생길수 있음, 어쩐지 잔상 하면 렉이 가끔 걸리는 이유가있었음
이거 대대적으로 수정해야됨, 쉐이더를 쓰든해서수정예정임

- 이외 스크립트들
대부분 update나, ontriggerenter함수등에 다 때려넣어서 구현했다. 이거 다 삭제하고 다시 만들어야한다. 기존에 만들어두었던 유틸을 잘 활용하자
Detector 스크립트 이용해서 각 클래스가 하는 기능이 명확해야한다. 지금은 하나 클래스가 관련 기능하고 필요한 유틸까지 다 하니까 인터렉션이나 다른 공통사항을 적용하려면 하나하나 스크립트 다 찾아보면서 고쳐야한다.
특히 dragManager가 심한데 이건 날잡고함 대대적으로 수정해야한다.


[이외 추가되어야하는 기능]
- KeybindController => 각 키배치 설정에서 할 수 있도록 구현필요