프로그래밍 농장

Starter Asset 스터디 정리 포스팅 [ 전처리기 지시어 (Preprocessor Directive) ] 본문

STARTERS

Starter Asset 스터디 정리 포스팅 [ 전처리기 지시어 (Preprocessor Directive) ]

Tennessee201 2022. 9. 16.
728x90

유니티 개발 중 아래와 같은 전처리기 지시어와 해당 내용들에 대해 알아보고자 한다.

 

전처리는 컴파일 전에 소스 파일을 정리하여, 정의 된 부분만 컴파일을 한다는 개념이다. 

모든 전처리기는 #지시어로 시작한다.


그렇다면 아래 코드의 경우에는 'ENABLE_INPUT_SYSTEM' ==1 && STARTERS_ASSETS_PACKAGES_CHECKED ==1

즉, ENABLE_INPUT_SYSTEM이 참이며 STARTERS_ASSETS_PACKAGES_CHECKED 가 참일경우에,PlayerInput 컴포넌트가 필수적으로 요구된다는 뜻이다. 

관련 세부사항은 아래 Unity Docs를 통하여 확인할수있다. 

 

Installation guide | Input System | 1.0.2

Installation guide This guide describes how to install and activate the Input System package for your Unity Project. Note: The new Input System requires Unity 2019.1+ and the .NET 4 runtime. It doesn't work in projects using the old .NET 3.5 runtime. Insta

docs.unity3d.com

 

 


- GetComponent  VS  TryGetComponent 

 

GetComponent() 메소드는 할당에 성공하거나 실패해도 언제나 GC Allocation이 발생한다.

하지만 TryGetComponent()를 이용하면 GC 걱정 없이 깔끔하게 사용할 수 있으며,

할당 성공 여부를 bool 타입으로 리턴받을 수 있다.

 

TryGetComponent() 메소드는 유니티 2019.2 버전부터 사용할 수 있다.

이전 버전까지는 그대로 GetComponent()를 사용하면 된다고 한다 .

아래 포스팅에서 속도차이와 메모리사용량을 상세히 분석해놓았다. 

 

Unity: 코드 블록 성능 측정 방법

효율적인 로직을 구현하기 위해 어떤 코드가 더 성능상 유리한지 시간을 재어 보고 싶을 때가 있습니다. 유니티에서는 GameObject.Find나 GetComponent와 같이 매 프레임 반복적으로 호출하지 말 것을

tistory.jeon.sh

 


- Update / FixedUpdate . . 

 

위의 GroundedCheck() 함수는 Update문에서 돌고있다. 해당 함수는 플레이어의 바닥착지여부를 판단해주는 기능을 하며, 위 코드 두줄을 보면된다 .

기본적으로 Update() 에서 Vector연산을 수행하고 FixedUpdate()에서 물리연산을 처리해주는것이 일반적이지만 위 코드에서는 그냥 Update()문안에서 전부처리하였다. 

이것에는 여러 이유가 있겠지만, 본인 생각으로는 메모리적이나 속도면에서 큰 차이가 없기때문에 코드의 가독성과 통일성을 위한 코딩이라고 생각한다. 


- 플레이어의 Grounded 체크 방식

단순히 LayerMask를 통한 판단이 아닌, CheckSphere의 크기와 같게 그려서 벽에는 닿지않도록 구현하였다. 

 


- Jump & Gravity 에 대한  정리 

 

아래와 같이 Jump 애니메이션을 구현하는 부분과 종단거리 (terminalVelocity)를 Mathf.sqrt(제곱근) 으로 도출하여 CharacterController.Move에 넣어주어 실제 캐릭터를 올려주는 방식으로 구현하였다. 

 

 

 

 

Terminal Velocity

An object which is falling through the atmosphere is subjected to two external forces. One force is the gravitational force, expressed as the weight of the object. The other force is the air resistance, or drag of the object. The motion of a falling object

www.grc.nasa.gov


 

 

 

 

 

728x90