EditorWindow 안에 독립적인 SceneView 띄우기
·
Unity
에디터 툴을 만들다 보면 Prefab View와 같이 메인 SceneView와 별개로 특정 오브젝트만 보여주는 독립적인 씬 뷰가 있다면 좋겠다는 생각이 들 때가 있습니다. 하지만 기존 SceneView를 EditorWindow 안에 직접 임베드하기는 어렵습니다.이 글에서는 UI Toolkit 기반 EditorWindow에서 IMGUIContainer와 PreviewRenderUtility를 조합해 독립적인 SceneView를 구현하고, 오브젝트 스폰과 카메라 조작 이벤트 등록하는 방법을 단계별로 정리해 보겠습니다. 1. 구조 설계 및 각 요소 역할구현에 들어가기 전에 전체 구조를 먼저 잡아보겠습니다. 만들려고 하는 독립 SceneView는 아래와 같은 흐름으로 구성됩니다.EditorWindow: UI T..
추상클래스 vs 인터페이스
·
프로그래밍 일반
클래스를 설계하다 보면 추상클래스와 인터페이스 중 무엇을 써야 할지 막히는 순간이 옵니다. 이 글에서는 두 개념의 차이를 짚어보고, 어떤 상황에서 각각을 선택해야 하는지 알아보겠습니다.1. 추상클래스, 인터페이스란?추상클래스는 일반 클래스와 비슷하지만, 구현이 없는 abstract 메서드를 하나 이상 포함할 수 있습니다. 자식 클래스는 이 메서드를 반드시 구현해야 하며, 직접 인스턴스화할 수 없습니다.인터페이스는 메서드 시그니처만 정의하는 순수한 틀입니다. 구현은 전혀 없고, 이를 채택한 클래스가 모든 메서드를 구현할 책임을 집니다. 마찬가지로 직접 인스턴스화할 수 없습니다.2. 판단 기준 - 구현을 공유할 것인가?추상클래스와 인터페이스를 선택하는 가장 핵심적인 기준은 메서드 구현을 자식 클래스와 공유할..
Service Locator vs Dependency Injection
·
프로그래밍 일반
Service Locator 와 Dependency Injection 둘의 각 장단점을 정리하면서 비교해 보려고 합니다. 1. IoC (Inversion of Control)IoC는 클래스가 다른 클래스를 사용할 때 의존성이 강한 결합이 발생하는 것을 방지하기 위해 외부에서 인터페이스를 활용해 클래스를 제공해 줘 느슨한 결합을 만들어주는 개념입니다. 이 때문에 클래스 내에서 사용할 클래스 객체를 생성하면 안 되고, 외부에서 객체를 받아와서 사용해야 합니다.또한 싱글톤으로 클래스 객체를 받아와서 사용하는 건 해당 클래스에 강한 결합이 일어나는 방법이므로 사용하면 안됩니다. 이렇게 함으로써 테스트 환경을 구축하기 쉬워져 테스트가 용이해지고, 특정 환경에 종속되지 않아 유지보수성 및 재사용성이 좋은 코드를 짤..
6 Hidden C# Features Every Unity Developer Should Know 영상 내용 정리
·
Unity
git-amend 유튜버의 6 Hidden C# Features Every Unity Developer Should Know 영상을 보니 괜찮은 기능들이 있어 정리해 보려고 합니다. 해당 영상은 아래 링크를 통해 확인 가능합니다."> 1. Intelligent Logging호출자 정보 어트리뷰트 CallerFilePath, CallerLineNumber, CallerMemberName 을 사용하여 로그에서 바로 어떤 함수에서 로그를 남겼는지 보여줄 수 있습니다.호출자 어트리뷰트란 함수를 호출한 정보를 어트리뷰트에 알맞게 컴파일러가 알아서 넣어주는 기능입니다.CallerFilePath : 호출자의 소스 파일 경로CallerLineNumber: 호출자의 소스 파일 행 번호CallerMemberName: 호출..
Unity Awaitable 을 Coroutine, UniTask 와 비교
·
Unity
Unity6에서 비동기 프로그래밍을 지원하기 위해 Awaitable이 추가되었습니다. 이를 기존에 사용했던 Coroutine과 외부 라이브러리인 UniTask와 비교해 보면서 알아보려 합니다. 1. Coroutine이란?유니티에서 기존에 제공해 주었던 비동기 처리 방식입니다. IEnumerator와 yield return, yield break을 통해 구현합니다.public class CoroutineTest : MonoBehaviour{ private void Awake() { StartCoroutine(AsyncTest()); } private IEnumerator AsyncTest() { Debug.LogWarning("Halo 0"); ..
SOLID 원칙 정리
·
프로그래밍 일반
개발을 계속하다 보니 SOLID 원칙의 필요성을 체감함과 동시에, 내가 제대로 알고 있나라는 생각이 들어 정리하려고 합니다. Unity 엔진 환경에서 게임 개발을 하고 있어 해당 환경 기반으로 정리하겠습니다.그리고 각 원칙마다 제 경험도 같이 덧붙이려고 합니다.SOLID 원칙이란소프트웨어 설계의 5가지 핵심 기본 사항을 나타내는 약어입니다.각 사항은 객체지향설계를 견고하고 유지보수하기 쉽게 하기 위한 원칙이며 소프트웨어의 재사용성, 유연성, 확장성을 높이는 데 도움이 됩니다. 각 핵심 기본 사항들은 아래와 같습니다.SRP : 단일 책임 원칙 (Single Responsibility Principle)OCP : 개방 - 폐쇄 원칙 (Open / Closed Principle)LSP : 리스코프 치환 원칙 ..