📌 Unity 최종 프로젝트
📌 수정사항
➔ Behaviour Tree Base
Enemy의 AI를 구현하기 위해 Behavior Tree의 기본 틀을 만들었다.
![](https://velog.velcdn.com/images/ljun970/post/7c584675-2c14-49ef-aedd-96d22b05f165/image.png)
Decorator Node
- Inverter Node
- 자식 노드의 상태를 반전시킨다.
- 성공이면 실패를, 실패면 성공을
- Repeat Node
- 자식 노드의 상태에 상관없이 지정된 횟수만큼 Running을 반복하고 횟수가 완료되면 Success를 반환한다.
- 추후 적용하며 리팩토링 예정.
- Until Fail Node
- 자식 노드가 실패를 반환할 때까지 계속해서 재검사를 진행한다.
- 실패를 반환하면 성공을 반환한다.
- Succeed Node
- 자식의 상태에 상관없이 항상 성공을 반환.
- 고장이 예상되는 분기의 테스트 처리
- 반대는 Inverter를 이용
Composite Node
- Sequence Node
- 자식 노드의 상태가 Success라면 다음 자식노드 진행. (AND)
- Selector Node
- 자식 노드의 상태가 Failure라면 다음 자식노드 진행. (OR)
- RandomSelector Node
Action Node
- Func 델리게이트를 사용하여 실제 행동을 정의.
Behavior Tree Core
- Behavior Tree Runner
- Tree의 최상위 위치한 root노드가 있다.
- root노드를 실행시켜주는 Operate 메소드.
- 단지 처음 BT를 시작해주는 역할
- DataContext
- BT를 이용한 AI를 만들 때, 필요한 Component들의 저장소.
- 추후 만들때 더 필요한 데이터는 추가해서 사용.
- INode
- 노드의 통일성을 위한 interface
- 노드의 상태를 반환하는 Evaluate() 메소드
📌 팀원별 일일 수정사항
➔ 박정혁
- Manager_UI
- SetCanvas를 통해 Canvas에 기본 정보들을 셋팅합니다.
- ShowPopupUI는 리소스 매니저를 통해 Prefab을 전달하여 해당 프리펩의 부모를 지정해주고 GameScene에 생성합니다.
- ClosePopup을 통해 생성된 Pop_Up UI를 지울 수 있는 기능을 합니다.
- UI_Popup : UI_Base
- 해당 스크립트는 Pop_up UI를 만들때 기초이며 Close를 하기 위한 함수가 필요하며인벤토리와 또 어떤식의 팝업 UI를 사용할 것인지 의논을 통해 만들겠습니다.
- 주석 추가
- UI_Scene 스크립트
- UI_Scene추가 하여 각 신별로 기본으로 있어야 할 UI들을 만들때 상속 받아서만들면 됩니다.
- ##Extensions 스크립트
- GetorAddComponent를 GameObject이면 바로 사용가능하도록 해놨습니다.
- 이 함수를 통해 컴퍼넌트가 있으면 바로 가져와서 사용하고 없으면 AddComponent 를 통해 추가해서 사용할 수 있습니다.
➔ 장성규
- FSM Base
- 매번 할당해야 하는 부분 간소화
- Player.cs
- 플레이어가 가지고 있는 상태(_states ) 를 Dictionary 자료구조로 변경
- GameController.cs
- 에이전트를 생성하는, CreateEntities 메서드
- 희성님 피드백 - Player가 MonoBehaviour를 상속받고, 유일한 사용자라면 굳이 GameController가 필요 없다고 생각함.
- 추후, 불필요한 스크립트 삭제 + 리소스 매니저에서 오브젝트 로드하는 부분 수정
- 데이터 매니저
➔ 송희성
- 리소스 매니저
- 설계 구조 변경을 위한 초기화(Reset)
- 설계 구조를 Resources + Load/Unload가 아닌 네트워크 서비스에 맞춰야함
- 예상 설계
- 대부분에 리소스 (Meshes, Materials, Sounds, Textures)는 어드레서블에 등록 되야함
- 위를 토대로 에셋번들화(그룹화)를 시켜 클라우드 서버로부터 다운로드 받을 수 있게 구성
- 위 그룹을 어떻게 잘 적용할 것인지? 고민해야 함
- 그룹과 레이블을 잘 사용해서 나눠야함
레이블(Label)
은 로드 하기 위한 부분을 추가로 작성하면 될 것 같다.
- 즉, 어떤.prefab에 대해 (TitleScene)과 같은 레이블 추가
- 결국 어드레서블 매니저는 로드할 때
- 다운로드가 아닌 레이블을 잘 나누어 로드해야한다는 것을 명심
- 그룹은 물리적인 부분이기 때문
📌 진행 상황
![](https://velog.velcdn.com/images/ljun970/post/6e4733ec-751d-4baf-8603-2e3b884a2460/image.png)