Unity
Unity에서 스마트폰 화면 항상 켜지도록 설정하기
소개 스마트폰 게임을 개발할 때, 화면이 꺼지면 게임 플레이가 중단될 수 있습니다. 이를 방지하기 위해 Unity에서는 스마트폰 화면이 항상 켜지도록 설정할 수 있습니다. 이번 글에서는 Unity에서 스마트폰 화면을 항상 켜두는 방법을 알아보겠습니다. Screen.sleepTimeout Unity에서는 Screen.sleepTimeout 변수를 사용하여 스마트폰 화면이 꺼지는 시간을 조절할 수 있습니다. 이 변수의 값을 0으로 설정하면 화면이 항상 켜진 상태로 유지됩니다. void Start() { Screen.sleepTimeout = SleepTimeout.NeverSleep; } 위와 같이 Start() 함수에서 Screen.sleepTimeout 변수를 설정하면, 스마트폰 화면이 항상 켜진 상태로..
Unity Package-lock.json 파일이란 무엇인가?
Unity에서는 패키지 관리를 위해 Package Manager를 제공합니다. Unity Package Manager는 프로젝트에 필요한 패키지를 쉽게 추가하고 관리할 수 있도록 도와주는 도구입니다. 이 Package Manager를 사용하면 Unity에서 제공하는 공식 패키지 뿐만 아니라 유저가 만든 패키지들도 쉽게 추가하고 관리할 수 있습니다. 그러나 패키지 관리를 위해서는 Unity 프로젝트 내부에 package-lock.json 파일이 생성됩니다. 이 파일은 패키지의 버전, 의존성 등을 관리하는 파일입니다. 이번 글에서는 package-lock.json 파일에 대해 자세히 알아보고 패키지 관리에 대한 이해를 높여보도록 하겠습니다. 1. package-lock.json 파일이란 무엇인가? packa..
Unity Animator의 Any State 기능이란?
Unity Animator 컴포넌트는 게임 오브젝트에 애니메이션을 적용하는 데 사용됩니다. Animator 컴포넌트는 매우 강력한 기능을 가지고 있으며, 애니메이션을 다루는 데 있어서 매우 중요한 역할을 합니다. 그 중 Any State는 Animator에서 매우 유용한 기능 중 하나입니다. 이번 글에서는 Unity Animator의 Any State 기능에 대해 자세하게 설명하겠습니다. Any State란? Any State는 Animator에서 사용할 수 있는 State 중 하나입니다. 이 State는 다른 State로의 전이(Transition)를 위한 조건을 검사하지 않고, 언제든지 전이가 가능하도록 합니다. 이 State는 다른 State와 연결되어 있지 않기 때문에, 어떤 State에서든 An..

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 컴파일러보다 빠르고, 메모리 사..
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; ..