Zenject Zenject(ExZenject)는 Unity에서 사용할 수 있는 무료 DI 프레임워크이다. 이 글에서는 DI가 무엇이며, 이를 왜 사용하는 것이고, 어떻게 활용할 수 있는지에 대해 정리했다. 의존 관계 역전 원칙(DIP, Dependency Inversion Principle) 프로그래머는 추상화에 의존해야 하고, 구체화에 의존하면 안 된다. 게임을 개발을 예시로 들어보자. 각 유닛은 무기를 가지고 있고, 무기는 각각의 대미지가 있다. 여기서 상대를 공격하는 코드를 작성하면 다음과 같다. public class Unit { private int _hp; private Normal_weapon; public void ReceiveDamage(int amount) { _hp -= amount..
Unity에는 C의 math.h 헤더의 fmod 함수에 대응하는 Mathf.Repeat 메서드가 있다. 게임메이커는 큐나 리스트같은 자료구조도 있었고 lerp나 삼각함수같은 연산들도 당연히 지원했기 때문에 fmod나 repeat 둘 중 하나는 지원할 것이라고 생각했고, 실제로 repeat 예약어가 존재했다. 하지만, 알고 보니 repeat는 반복문의 일종이였다. for이나 while같이 조건을 써야 하는 반복문은 요요게임즈가 초보들에게 힘들다고 생각했는지, repeat(5) ; // repeat(5) { } 처럼 사용하는 반복문을 만든 것이다. 아마 블럭 안의 코드를 몇 회 반복하는 액션이 있고, 그걸 코드로 옮긴 게 이 repeat라고 생각한다. 그러면 실수형 데이터의 나머지 연산은 어떻게 하냐고 하면..
DirectXMath 벡터 DirectXMath 라이브러리의 벡터 Direct3D 응용 프로그램을 위한 표준적인 3차원 수학 라이브러리이다. 헤더 파일 DirectXMath.h를 포함시켜야(#include 하며, 추가적인 자료 형식들을 위해 DirectXPackedVector.h도 포함시켜야 할 수 있다. DirectXMath.h의 코드는 DirectX 네임스페이스 안에 속하며, DirectXPackedVector.h의 코드는 DirectX::PackedVector 네임스페이스 안에 속한다. x86 플랫폼을 대상으로 할 때에는 SSE2를 활성화시켜야 한다(프로젝트 속성 > 구성 속성 > C/C++ > 코드 생성 > 고급 명령 집합 사용). x64 플랫폼에서는 모든 CPU가 SSE2를 지원하기 때문에 따로..