분류 전체보기
Unity로 이해하는 상태 패턴 (State Pattern)
상태 패턴란 ?? 상태 패턴은 개체가 클래스를 변경한 것처럼 내부 상태가 변경될 때 개체가 동작을 변경하도록 하는 동작 디자인 패턴입니다. 게임을 위한 적 AI를 만든다고 상상해 보십시오. 적은 순찰, 플레이어 추격, 공격과 같은 여러 상태를 가질 수 있습니다. 이러한 동작은 상당히 다르며 상태 패턴을 사용하지 않으면 코드가 여러 'if' 또는 'switch' 문으로 빠르게 복잡해질 수 있습니다. 상태 패턴이 빛나는 곳입니다. 이를 통해 서로 다른 동작을 별도의 클래스로 캡슐화하고 런타임에 전환할 수 있습니다. Unity에서 상태 패턴 구현 플레이어를 순찰하거나 추격할 수 있는 간단한 적 AI로 상태 패턴을 설명하겠습니다. 첫째, 적 상태에 대한 추상 기본 클래스가 필요합니다. csharpCopy cod..
Unity로 이해하는 옵저버 패턴 (Observer Pattern)
옵저버 패턴 관찰자 패턴은 일부 개체('관찰자'라고 함)가 다른 개체('주체')를 관찰하고 상태 변경에 대한 알림을 받을 수 있도록 하는 동작 디자인 패턴입니다. 이 패턴은 한 개체를 변경하려면 다른 개체도 변경해야 하고 얼마나 많은 개체를 변경해야 하는지 모를 때 특히 유용합니다. 뉴스레터 구독이라고 생각하면 됩니다. 뉴스레터를 구독하면(관찰자가 됨) 뉴스레터 서비스(제목)에서 새 콘텐츠가 있을 때마다 업데이트를 보냅니다. Unity에서 옵저버 패턴 구현하기 게임에서 플레이어의 체력이 있는 경우를 예로 들어 보겠습니다. 플레이어의 체력이 변경될 때마다 다른 UI 요소(예: 체력 표시줄 또는 체력 텍스트 필드)가 업데이트되어야 합니다. 다음은 PlayerHealth 클래스('Subject')입니다. cs..
Unity의 Rigidbody 구성 요소 이해
Unity를 깊이 탐구했다면 의심할 여지 없이 Unity의 기본 구성 요소 중 하나인 Rigidbody를 접했을 것입니다. 3D 게임을 개발하든 2D 게임을 개발하든 Rigidbody 구성 요소를 이해하는 것은 게임의 물리 기반 상호 작용에 필수적입니다. 이 필수 구성 요소의 속성을 자세히 살펴보고 분석해 보겠습니다. 1. Mass 'Mass' 속성은 물체의 무게를 나타냅니다. 질량이 클수록 물체가 움직이는 데 더 많은 힘이 필요하고 충돌 시 더 많은 힘을 발휘합니다. 본질적으로 물체의 질량은 물체가 힘에 반응하는 방식과 충돌하는 동안 다른 물체에 미치는 영향에 영향을 미칩니다. 2. Drag 'Drag'는 물체의 움직임에 반대되는 공기 저항(또는 2D 물체의 경우 유체 저항)을 나타냅니다. 항력이 클..
Unity로 이해하는 팩토리 패턴 (Factory Pattern)
팩토리 패턴 팩토리 패턴은 슈퍼클래스에서 객체를 생성하기 위한 인터페이스를 제공하지만 서브클래스가 생성될 객체의 유형을 변경할 수 있도록 허용하는 생성 디자인 패턴입니다. 기본적으로 팩토리 클래스를 사용하여 개체 인스턴스를 생성함으로써 개체 생성 프로세스를 추상화합니다. 제품 생성 프로세스가 정의된 조립 라인으로 생각하면 정확한 제품이 필요에 따라 변경될 수 있습니다. Unity에서 팩토리 패턴 구현 공장 패턴의 작동 방식을 이해하려면 각기 다른 클래스로 표시되는 고블린, 좀비, 뱀파이어 등 다양한 유형의 적을 생성할 수 있는 게임을 상상해 보세요. 각 클래스의 인스턴스를 직접 만드는 대신 팩토리 클래스를 사용하여 이를 수행합니다. 다음은 Enemy 클래스의 초기 구조입니다. csharpCopy code..
Unity로 이해하는 어댑터 패턴 (Adapter Pattern)
어댑터 패턴 소개 래퍼 패턴이라고도 하는 어댑터 패턴은 호환되지 않는 두 인터페이스 간의 간격을 연결하여 기존 코드를 변경하지 않고 함께 작동할 수 있도록 합니다. 이 패턴은 소스 코드를 변경하지 않고 기존 클래스를 다른 클래스와 함께 작동시키려는 경우 매우 유용합니다. 어댑터 패턴에 대한 실제 비유는 전원 어댑터입니다. 소켓과 호환되지 않는 플러그가 있는 경우 플러그를 소켓에 원활하게 연결할 수 있는 어댑터를 사용합니다. 어댑터 패턴은 코드에서 호환되지 않는 클래스 또는 인터페이스에 대해 동일한 작업을 수행합니다. Unity의 어댑터 패턴 어댑터 패턴이 어떻게 작동하는지 설명하기 위해 Player 클래스와 Enemy 클래스가 있는 게임을 생각해 보십시오. 둘 다 공격할 수 있지만 다른 방법을 사용합니다..
오브젝트 자연스럽게 이동하기 : Mathf.PingPong
Mathf.PingPong이란? Mathf.PingPong은 값이 0과 지정된 최대값 사이에서 "핑퐁" 방식으로 앞뒤로 진동하게 만드는 Unity 함수입니다. 이 기능은 주로 부드러운 전환, 애니메이션 또는 특정 범위 내에서 숫자가 변동해야 하는 기타 사용 사례를 만드는 데 사용됩니다. Mathf.PingPong 구문 Mathf.PingPong의 구문은 매우 간단합니다. 여기있어: csharpCopy code Mathf.PingPong(t, length); 이 함수에서 't'는 진동시키고자 하는 값이고, '길이'는 진동의 최대값입니다. 이 함수는 0과 '길이' 사이에서 앞뒤로 핑퐁하는 값을 반환합니다. Mathf.PingPong의 실제 적용 Mathf.PingPong을 사용하는 실용적인 예를 살펴보겠습니..
텍스처 압축 포맷에서 사용하는 용어
안녕하세요, 여러분. 오늘은 다양한 플랫폼에서 사용되는 텍스처 압축 포맷에 대해 알아보려고 합니다. 텍스처 압축은 그래픽 성능 최적화를 위해 중요한 요소 중 하나입니다. 이 글에서는 플랫폼별로 권장되는 기본 및 지원되는 텍스처 압축 포맷에 대해 설명합니다. 먼저 텍스처 압축 포맷에 대한 몇 가지 용어를 이해해봅시다. 픽셀당 비트(bpp): 단일 텍스처 픽셀에 필요한 스토리지 용량입니다. bpp 값이 더 낮을수록 텍스처는 디스크와 메모리를 더 적게 차지하며, GPU가 캐시에 더 많은 픽셀을 저장할 수 있어 텍스처 액세스 속도가 향상됩니다. LDR(Low Dynamic Range): LDR은 0.0(검정) 값과 1.0(흰색) 값 사이에 있는 가장 일반적인 이미지를 나타냅니다. 대부분의 이미지 파일(PNG, ..
텍스처 압축 포맷 : ASTC와 ETC2
더보기 안녕하세요, 오늘은 유니티에서 사용되는 텍스처 압축 포맷 중에서 ASTC와 ETC2에 대해 자세히 알아보려 합니다. 이 두 포맷은 모두 텍스처의 저장과 렌더링을 최적화하는 데 사용되는 흔히 쓰이는 텍스처 압축 포맷입니다. 먼저 각 포맷에 대해 간단히 소개하겠습니다. ASTC (Adaptive Scalable Texture Compression)는 유니티에서 저장과 렌더링의 텍스처를 최적화하기 위해 일반적으로 사용되는 텍스처 압축 포맷입니다. ASTC는 고품질의 결과를 제공하며, 효율적인 메모리 사용을 보장하는 유연하고 다기능한 압축 알고리즘입니다. 유니티는 Android와 iOS 플랫폼 모두에서 ASTC 압축을 지원합니다. ASTC를 사용함으로써, 개발자들은 텍스처의 메모리 사용량을 줄이면서 시각..