2025/04 16

20250424 TIL 박싱 언박싱

박싱 언박싱C#은 값 형식(Value Type)과 참조 형식(Reference Type)이 명확히 구분되어있는 언어이다. 때문에 박싱과 언박싱은 중요한 개념이다.박싱(Boxing)박싱은 값 형식을 참조 형식으로 변환하는 과정주로 object 형식에 값을 할당할 때 발생한다.int number = 123;object boxed = number; // 박싱메모리 힙(Heap)에 값이 복사되고 참조로 접근할 수 있게 됨.오버헤드가 발생할 수 있으므로 주의해야함.언박싱(Unboxing)언박싱은 참조 형식을 다시 값 형식으로 변환하는 과정이다.object boxed = 123;int number = (int)boxed; // 언박싱언박싱 시에는 명시적 형변환(Casting)이 필요하다.잘못된 형변환 시 Inval..

카테고리 없음 2025.04.24

20250423 TIL 팩토리 패턴

TIL: 팩토리 패턴 (Factory Pattern) 팩토리 패턴이란?객체 생성을 new 키워드로 직접 하지 않고, 전용 클래스(Factory) 가 대신 생성해주는 디자인 패턴.생성 로직을 하나의 장소로 집중시켜서, 유지보수, 확장성, 유닛 테스트 등에 유리하다.상황문제팩토리 패턴으로 해결new가 여기저기 흩어져 있음결합도 증가Factory 하나로 통합생성 조건이 다양함코드 중복, 혼란내부에서 조건 분기 처리다양한 하위 클래스 필요타입 의존성 증가추상 클래스/인터페이스로 통일public enum EnemyType { Goblin, Orc }public class Enemy { }public class Goblin : Enemy { }public class Orc : Enemy { }public stat..

카테고리 없음 2025.04.23

20250421 TIL 애니메이터 오버라이드 컨트롤러

**AnimatorOverrideController**는공통된 Animator 상태(State)를 유지하면서,애니메이션 클립만 교체할 수 있도록 도와주는 Unity의 시스템이다.트랩, 몬스터, 무기처럼 동작 구조는 같지만 애니메이션만 다른 오브젝트를 관리할 때 매우 유용하다.사용하는 이유Animator Controller를 여러 개 만들 필요 없이,하나의 상태 머신(예: TrapAnimator)을 재사용하면서각 오브젝트마다 다른 연출이 가능하다.트랩마다 Activate 상태는 같지만,SpikeTrap.anim, PoisonTrap.anim처럼 다른 연출을 보여줄 수 있다. 사용 방법 1. Animator Controller 준비상태 이름 예: BaseActivate트리거 파라미터: Activate 2. ..

카테고리 없음 2025.04.21

20250416 TIL Vector2Int 좌표계에서 직선 긋기 Bresenham 알고리즘

격자형 턴제게임에서는 Vector2Int 좌표계를 사용하면 이를 기반으로 논리를 연산한다 이때 시야에 있는 적이나 타일을 확인하기 위해서 탐색을 하였는데첫번째로 DFS 깊이우선 탐색을 진행하였다 그러나 canSeethrough의 뒤편까지 탐색을 진행하여 시야를 가리는지 체크하지 못하였다두번째로 raycast를 통해 ray가 canSeethrough false인 tile을 지나는지 확인하여 시야를 체크하려했으나 보는 바와같이 과도하게 많은 타일 즉 사이에 있는 모든 타일을 체크하기에 오히려 부정확한 결과를 갖게 되었다.마지막으로 Bresenham 알고리즘을 사용하여 Vector2Int좌표계에 직선에 가까운 좌표 집합을 생성하고 이를 기반으로 시야체크를 진행하게 되었다.브레젠험은 레스터방식에서 직선이나 원..

카테고리 없음 2025.04.16

20250415 TIL 부동소수점 문제 1.1f -0.1f == 1.0f ?

10진수 체계를 컴퓨터에서 처리할때 2진수로 처리되는데float은 부동소수점을 사용하여 실수를 저장한다부동소수점은 다음과 같이 구성되는데부호, 지수, 가수부호 1비트 지수 7비트 가수 23비트로 처리된다. 10진수2진수 표현특징0.50.1정확하게 표현됨0.250.01정확하게 표현됨0.10.0001100110011...(반복)무한 반복됨1.11.0001100110011...(반복)무한 반복됨실수 = ± 1.M × 2^(E - Bias) M: 가수 (소수부를 2진수로 저장)E: 지수Bias: float일 경우 127어렸을때 배운 무한순환소수와 같이 10진수에서 무한순환소수가 아니더라도 2진수에서는 무한순환 소수인 경우가 존재한다.무한순환소수가 제대로 계산된다면 문제가 발생하지 않겠지만 가수는 23비트만 저장..

카테고리 없음 2025.04.15