분류 전체보기
파이썬에서 알아두면 유용한 기능들
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에서는 LayerMask를 사용하여 Raycast를 할 때, 레이어를 직접 입력하여 사용할 수 있다. 하지만 이 방법은 레이어 번호가 변경될 경우 코드를 일일이 수정해야 하기 때문에 비효율적일 수 있다. 이번 글에서는 LayerMask를 사용할 때 레이어 번호를 직접 입력하는 방법과 함께, 레이어 이름으로 레이어 번호를 알아오는 방법을 살펴보자. 레이어 번호로 레이어 마스크 값 구하기 레이어를 지정하기 위해 32bit 비트 마스크를 사용하고 있고, 레이어를 지정하기 위해서는 각 레이어 순서의 플래그가 켜져 있는 이진 값을 넘겨 줘야한다. 각 레이어를 구분하기 위해 32bit 비트 마스크를 사용한다. 레이어는 0부터 시작하며 31이 마지막 레이어 번호다. 레이어 마스크를 인자로 받는 Raycast..
Unity : Ray, Raycast 및 RaycastHit
Unity의 Physics.Raycast는 직선을 씬에 투영하여 대상에 적중되면 true를 리턴하는 물리 함수입니다. Raycast 함수는 캐스팅 성공 실패에 따른 결과만 리턴하는 간단한 형태에서부터 대상과 Ray의 충돌에 관련된 자세한 정보를(직선과 객체의 교차 정보. 거리, 위치, 캐스팅에 검출 된 객체의 Transform에 대한 참조 등) 리턴하는 다양한 버전이 제공되고 있습니다. 이번 포스트에서는 Raycast 함수를 사용하기 위해 알아야할 필수적인 요소들을 살펴보도록 하겠습니다. Unity에서 Raycast를 사용하는 방법 Unity 2020.3 버전 기준으로 Physics.Raycast는 다양한 버전으로 오버로드되어 제공되고 있습니다. 파라미터가 많아 복잡해 보이지만 디폴트 파라미터들을 제외하..
Unity의 IL2CPP란?
소개 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 컴파일러보다 빠르고, 메모리 사..
C# 튜플 자료형
소개 C#에서 튜플(Tuple)은 여러 값을 변수 하나에 저장할 수 있는 자료형입니다. 튜플은 서로 다른 데이터 형식의 값을 저장할 수 있으며, 소괄호로 묶인 값의 목록으로 정의됩니다. 튜플은 코드의 가독성과 유지 보수성을 향상시키며, 메서드에서 여러 값을 반환해야 하는 경우에 특히 유용합니다. 구조 튜플은 소괄호로 묶인 값의 목록으로 정의됩니다. 각 값은 데이터 형식과 값으로 구성됩니다. 다음은 튜플의 구조를 보여주는 예제입니다. // 튜플 정의 Tuple person = (25, "John"); // 튜플의 구조 ( int age = 25, string name = "John" ) 위의 예제에서, Tuple은 int와 string 형식의 값을 가진 튜플을 정의합니다. 튜플은 다음과 같은 구조를 갖습니..
실수형 변수 decimal, float, double
소개 C#에서는 실수형 변수를 선언하여 부동 소수점 방식과 고정 소수점 방식으로 값을 저장할 수 있습니다. 이번 글에서는 C#에서 제공하는 실수형 변수 중 decimal, float(single), double에 대해 설명하고, 이들 변수가 사용하는 고정 소수점 방식과 부동 소수점 방식에 대해 자세히 살펴보겠습니다. decimal decimal은 C#에서 고정 소수점 방식을 사용하는 실수형 변수 중 하나입니다. decimal은 128비트 부호 있는 실수형 변수로, 28자리의 정밀도를 가집니다. 이는 매우 큰 수나 소수점 이하 자리수가 많은 수를 정확하게 표현할 수 있다는 것을 의미합니다. decimal 변수를 선언할 때는 다음과 같은 방법을 사용합니다. decimal myDecimal = 123.45m;..
Unity 확장형 함수
C# 3.0 이후 버전에서는 확장 메서드(Extension Method)라는 개념이 추가되어, C#에서 클래스의 기능을 확장시키는 기능을 제공합니다. 확장 메서드는 해당 클래스의 인스턴스에서 호출할 수 있는 메서드를 추가하는 것입니다. 이렇게 하면 해당 클래스의 인스턴스를 먼저 생성한 다음, 확장 메서드를 호출할 수 있습니다. Unity에서는 MonoBehaviour 클래스를 상속받는 클래스에서 확장 메서드를 정의할 수 있습니다. 확장 메서드란? C#에서는 기본적으로 정의된 클래스에 대해서만 메서드를 사용할 수 있습니다. 하지만, 우리가 작성한 클래스에 대해서도 기본적인 메서드를 사용할 수 있도록 C#에서는 확장 메서드를 제공합니다. 확장 메서드는 해당 클래스의 인스턴스에서 호출할 수 있는 메서드를 추가..
Perlin/Simplex Noise Algorithm
소개 Perlin Noise와 Simplex Noise는 프로시저럴 생성 알고리즘 중 가장 인기있는 알고리즘입니다. 이번 글에서는 Unity에서 Perlin/Simplex Noise를 생성하는 방법과 그 응용 예제를 살펴보겠습니다. Perlin Noise Perlin Noise는 1983년 Ken Perlin이 개발한 알고리즘으로, 자연스러운 잡음을 생성하는 데 사용됩니다. 이 알고리즘은 2차원 또는 3차원으로 구성된 그리드에서 각 좌표의 값에 대한 임의성을 추가하여 자연스러운 무작위 패턴을 만듭니다. Perlin Noise를 Unity에서 생성하려면 다음과 같은 코드를 사용합니다. public class PerlinNoise : MonoBehaviour { public float scale = 1f; ..