크래프톤 정글 TIL : 1018

lazyArtisan·2024년 10월 18일
0

정글 TIL

목록 보기
110/147

📝 배운 것들


🏷️ Unity에서의 Manifest 파일

Unity 프로젝트에서는 Packages/manifest.json 파일이 중요한 역할을 합니다. 이 파일은 Unity 프로젝트가 사용하는 패키지 매니저와 관련된 모든 패키지와 의존성 정보를 담고 있습니다.

역할: Unity 프로젝트가 어떤 패키지를 사용하는지 기록하고, 특정 패키지 버전 및 의존성 정보를 관리합니다.



👾 나만무


C#에서 인터페이스는 접근 제한자(예: private, public)를 명시하지 않으며, 기본적으로 모든 멤버는 public으로 간주됩니다. 이는 인터페이스가 클래스나 구조체에서 구현될 때 공개적으로 구현되어야 한다는 것을 의미합니다.

따라서, 인터페이스를 상속받는 클래스나 구조체는 인터페이스의 모든 멤버를 반드시 public으로 구현해야 합니다. private이나 protected로 구현할 수는 없습니다.

인터페이스에서는 프로퍼티, 메서드, 이벤트 등만 정의할 수 있으며, 필드는 정의할 수 없습니다.

전역 변수로 미리 초기화해두면 굳이 start에 넣을 필요 없지?

네, 전역 변수로 초기화했다면, Start() 메서드에서 다시 초기화할 필요가 없습니다. 코드에서 이미 필드 초기화를 하고 있기 때문에 Start() 메서드에서 다시 설정할 이유가 없습니다

필드 선언 시 초기화: 변수 선언과 동시에 값을 할당합니다. 이는 객체가 생성될 때 바로 적용됩니다.
Start()에서 초기화: Unity에서 게임 오브젝트가 활성화되고, 첫 프레임이 시작될 때 Start()가 호출됩니다. 이미 선언된 값에 덮어쓰는 형태로 값을 변경할 수 있습니다.

만약 고정된 기본값이 필요하다면 필드 선언 시 초기화하는 것이 간편하며, 동적으로 초기화할 필요가 있을 때만 Start() 메서드를 사용합니다.


그냥 Damaged라고 함수 명을 지으면 안된다.
OnDamaged, PostDamaged 등으로 지어야 함.

class 상속할 때 부모 클래스 함수에는 virtual 붙이고
자식 클래스 함수에는 override 붙인 다음에

    public override void OnDamaged()
    {
        base.OnDamaged();

        Debug.Log("MONSTER.C :: Monster Damaged");
    }

이렇게 하면 부모 함수 OnDamaged 실행된 다음에 자식 함수 OnDamaged 실행된다.

probuilder 사용하라고 했던 이유? 이거 그냥 3D 모델링 아님?
: 저번에는 scale 줄이지 말라고 했었는데 probuilder 쓰면 머테리얼 필요한 만큼만 잘라서 쓸 수 있고 프리팹으로 만들수도 있다 (아마도)

navmesh 창 뜬다
없어지면 우측 상단 overlay

navmesh는 무엇인가?
navmesh는 AI agent가 주변의 세상을 인지하게 할 수 있게 하는 유니티의 자료구조임

네 가지로 이루어진다
1. navmesh surface - data
2. navmesh agent - 움직이는 ai
3. navmesh obstacle - 특정 영역을 못 가게 함
4. navmesh link - 연결되지 않은 곳 사이를 캐릭터가 이동할 수 있게 해줌 (경사면, 단차, 사다리 등)

collider 달려있는 놈들은 알아서 윤곽선 그리면서 navmesh surface 채워짐
navmeshmodifier component 달고 mode를 remove object로 바꾸면 그 장애물은 없는 것처럼 꽉 채워짐

0개의 댓글