Unity Animator의 Any State 기능이란?
·
Unity
Unity Animator 컴포넌트는 게임 오브젝트에 애니메이션을 적용하는 데 사용됩니다. Animator 컴포넌트는 매우 강력한 기능을 가지고 있으며, 애니메이션을 다루는 데 있어서 매우 중요한 역할을 합니다. 그 중 Any State는 Animator에서 매우 유용한 기능 중 하나입니다. 이번 글에서는 Unity Animator의 Any State 기능에 대해 자세하게 설명하겠습니다. Any State란? Any State는 Animator에서 사용할 수 있는 State 중 하나입니다. 이 State는 다른 State로의 전이(Transition)를 위한 조건을 검사하지 않고, 언제든지 전이가 가능하도록 합니다. 이 State는 다른 State와 연결되어 있지 않기 때문에, 어떤 State에서든 An..
파이썬 디스크립터란?
·
파이썬/Basic
파이썬에서 디스크립터는 클래스를 통해 속성(attribute) 접근을 제어하기 위한 프로토콜(Protocol)입니다. 디스크립터는 클래스 내에 get, set, delete 메소드를 구현하여, 속성의 값을 읽거나 쓰거나 삭제하기 전에 추가적인 로직을 수행할 수 있도록 합니다. 디스크립터의 종류 파이썬에서는 디스크립터를 세 가지 종류로 구분합니다. 각각은 다음과 같습니다. 데이터 디스크립터(Data Descriptor) 비데이터 디스크립터(Non-Data Descriptor) 클래스 디스크립터(Class Descriptor) 1. 데이터 디스크립터(Data Descriptor) 데이터 디스크립터는 __get__과 set 메소드를 모두 구현한 디스크립터입니다. 이 디스크립터를 사용하면 속성의 값을 읽거나 쓸..
파이썬 함수에 대한 4가지 고급 트릭
·
파이썬/Basic
파이썬은 조건문, 반복문, 예외처리를 이용하여 프로그래밍을 할 수 있습니다. 이 글에서는 파이썬에서 조건문, 반복문, 예외처리를 사용하는 방법에 대해 자세히 알아보겠습니다. 1. 키워드 아규먼트 강제하기 키워드 인수에는 인자를 순서에 따라 넘겨줘야 하는 불편함을 없애주고, 명명된 인수를 사용함으로써 가독성을 높이는 장점이 있습니다. 파이썬에서는 PEP 3202에서 설명하는 것처럼 키워드 아규먼트를 강제할 수 있습니다. 이에 대한 예시는 다음과 같습니다. def f(*, a, b): print(a, b) f(1, 2) # TypeError: f() takes 0 positional arguments but 2 were given f(a=1, b=2) # 1 2 2. 함수 언패킹을 위해 * 와 ** 사용하기..
C# Local Function
·
C#
소개 C# Local Function은 C# 7.0 이후로 추가된 기능 중 하나입니다. Local Function은 메서드 내에서 정의되는 함수로, 해당 메서드 내에서만 사용됩니다. 이번 글에서는 C# Local Function에 대해 자세히 알아보겠습니다. Local Function이란? Local Function은 메서드 내에서 정의되는 함수입니다. Local Function은 해당 메서드 내에서만 사용될 수 있으며, 외부에서는 접근할 수 없습니다. Local Function은 메서드 내에서 중복되는 코드를 줄이고, 메서드의 가독성을 높이는 데 매우 유용합니다. Local Function의 예 다음은 Local Function의 간단한 예입니다. public void PrintNames(List na..
파이썬에서 알아두면 유용한 기능들
·
파이썬/Basic
1. Function 속성(attribute) 클래스 및 개체의 속성을 설정하는 방법과 유사하게 함수에도 속성을 설정할 수 있습니다. def func(x): intermediate_var = x**2 + x + 1 if intermediate_var % 2: y = intermediate_var ** 3 else: y = intermediate_var **3 + 1 # setting attributes here func.optional_return = intermediate_var func.is_awesome = 'Yes, my function is awesome.' return y y = func(3) print('Final answer is', y) # Accessing function attribu..
Unity : LayerMask
·
Unity
Unity에서는 LayerMask를 사용하여 Raycast를 할 때, 레이어를 직접 입력하여 사용할 수 있다. 하지만 이 방법은 레이어 번호가 변경될 경우 코드를 일일이 수정해야 하기 때문에 비효율적일 수 있다. 이번 글에서는 LayerMask를 사용할 때 레이어 번호를 직접 입력하는 방법과 함께, 레이어 이름으로 레이어 번호를 알아오는 방법을 살펴보자. 레이어 번호로 레이어 마스크 값 구하기 레이어를 지정하기 위해 32bit 비트 마스크를 사용하고 있고, 레이어를 지정하기 위해서는 각 레이어 순서의 플래그가 켜져 있는 이진 값을 넘겨 줘야한다. 각 레이어를 구분하기 위해 32bit 비트 마스크를 사용한다. 레이어는 0부터 시작하며 31이 마지막 레이어 번호다. 레이어 마스크를 인자로 받는 Raycast..
Unity : Ray, Raycast 및 RaycastHit
·
Unity
Unity의 Physics.Raycast는 직선을 씬에 투영하여 대상에 적중되면 true를 리턴하는 물리 함수입니다. Raycast 함수는 캐스팅 성공 실패에 따른 결과만 리턴하는 간단한 형태에서부터 대상과 Ray의 충돌에 관련된 자세한 정보를(직선과 객체의 교차 정보. 거리, 위치, 캐스팅에 검출 된 객체의 Transform에 대한 참조 등) 리턴하는 다양한 버전이 제공되고 있습니다. 이번 포스트에서는 Raycast 함수를 사용하기 위해 알아야할 필수적인 요소들을 살펴보도록 하겠습니다. Unity에서 Raycast를 사용하는 방법 Unity 2020.3 버전 기준으로 Physics.Raycast는 다양한 버전으로 오버로드되어 제공되고 있습니다. 파라미터가 많아 복잡해 보이지만 디폴트 파라미터들을 제외하..
Unity의 IL2CPP란?
·
Unity
소개 Unity는 iOS와 Android와 같은 모바일 플랫폼에서 실행하기 위해 Mono를 사용합니다. 하지만, Mono는 IL(Intermediate Language)을 Native Code로 변환하는 Just-in-time(JIT) 컴파일러를 사용합니다. 이것은 모바일 기기에서 성능 문제를 일으키기 때문에 Unity는 AOT(Ahead-of-time) 컴파일러인 IL2CPP를 도입했습니다. 이 글에서는 Unity의 IL2CPP에 대해 자세히 설명하겠습니다. IL2CPP란 무엇인가요? IL2CPP는 Unity에서 사용하는 AOT 컴파일러입니다. 이 컴파일러는 C# 코드를 C++ 코드로 변환합니다. 이후 C++ 코드는 기기의 네이티브 코드로 컴파일됩니다. 이 방식은 JIT 컴파일러보다 빠르고, 메모리 사..