Unity 최종 프로젝트 - 3

이준호·2024년 1월 15일
0

📌 Unity 최종 프로젝트



📌 수정사항

➔ Behaviour Tree Base

Enemy의 AI를 구현하기 위해 Behavior Tree의 기본 틀을 만들었다.

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)과 같은 레이블 추가
      • 결국 어드레서블 매니저는 로드할 때
      • 다운로드가 아닌 레이블을 잘 나누어 로드해야한다는 것을 명심
      • 그룹은 물리적인 부분이기 때문

📌 진행 상황

profile
No Easy Day

0개의 댓글