일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- ScriptableObject
- 인앱 결제
- design pattern
- Unity
- 포스트 프로세싱
- 최적화
- 플러그인
- Boxing
- ==
- 디자인 패턴
- 스프라이트 아틀라스
- Post Processing
- c#
- Abstract Factory Pattern
- 게임 개발
- Addressable System
- Unboxing
- UniRx
- Zenject
- addressable
- Strategy Pattern
- 1인 개발
- equals
- ReferenceEquals
- Reflection
- Android Plugin
- sprite atlas
- Today
- Total
목록c# (25)
One_KWS

Equality C#에는 두 가지 같음(Equality 또는 Identity)가 존재한다. Reference Equality 두 개의 객체가 동일한 인스턴스를 참조하는지 여부를 비교한다. 즉, 두 개의 참조 변수가 같은 객체를 가리키는지를 확인한다. Value Equality 두 개의 객체가 내부적으로 같은 값을 가지는지 여부를 비교한다. ==, Equals(), ReferenceEquals() 두 객체의 같음을 확인하기 위해서 아래 세 가지 방법을 사용할 수 있다. == == 연산자는 두 개의 객체의 참조를 비교하여 같은지 판단한다. == 연산자를 재정의하지 않은 경우에는 참조가 같은지 판단한다. (Value Type 비교에 사용할 경우 값을 비교한다.) ReferenceEquals() Refe..

박싱(Boxing) 값 타입(Value Type)을 참조 타입(Reference Type)으로 변환하는 것을 박싱이라고 한다. 값 타입은 스택에 저장되고 참조 타입은 힙에 저장이 된다. 박싱된 값은 힙 메모리에 저장되며, 이 때문에 메모리 오버헤드가 발생한다. int i = 123; // Boxing copies the value of i into object o. object o = i; 언박싱(Unboxing) 참조 타입을 값 타입으로 변환하는 것을 언박싱이라고 한다. 박싱된 값은 힙 메모리에서 스택 메모리로 복사된다. 이 때 복사가 발생하므로 성능에 영향을 줄 수 있다. int i = 123; // a value type object o = i; // boxing int j = (int)o; // ..

보스 공격 패턴 구현 애니메이션 이벤트 추가 공격 애니메이션의 특정 타이밍에 패턴 공격을 실행시켜 주기 위해 각 애니메이션에 이벤트를 추가하였다. IAttackPattern 보스 몬스터의 공격 패턴은 아래와 같은 구조로 구현했다. 각 공격 패턴은 IAttackPattern이라는 Interface를 구현하고 있고 BossCombat 클래스에서 이 Interface를 통해 제어해 준다. (스트래티지 패턴을 이용했다.) IAttackPattern 인터페이스에는 IsAvailable 프로퍼티와 Perform() 함수가 있다. IsAvailable은 해당 공격 패턴을 사용할 수 있는지를 판단하기 위한 프로퍼티이고 Perform() 함수는 해당 공격 패턴을 실행시키는 함수이다. public interface IA..

캐릭터 및 애니메이션 캐릭터 & 무기 보스 몬스터로 아래 캐릭터를 사용했고 무기도 캐릭터에 맞게 골라 넣어 주었다. 애니메이션 일단 공격 패턴 먼저 구현하기 위해 공격 관련 부분의 애니메이션만 추가하였다. 총 3개의 패턴을 넣기 위해 공격 애니메이션도 각각 다른 3개의 애니메이션을 넣어주었다. 코드 구조 보스 몬스터의 이동 및 공격에 대한 구조는 일반 몬스터와 같다. 각 행동은 IBehaviour를 상속받고 있으며 BossController를 이용하여 제어해준다. BossController BossController는 보스 몬스터의 이동과 공격을 제어한다. 코드는 EnemyController와 유사하다. 현재는 공격에 대한 코드만 구현되어 있다. public class BossController : M..

소개 스트래티지 패턴(Strategy Pattern)은 행위를 클래스로 캡슐화하여 동적으로 행위를 자유롭게 바꿀 수 있게 해주는 패턴이다. 같은 문제를 해결하는 여러 알고리즘이 클래스별로 캡슐화되어 있고 이들이 필요할 때 교체할 수 있도록 함으로써 동일한 문제를 다른 알고리즘으로 해결할 수 있다. 스트래티지 패턴을 이용하면 수정이 필요한 부분을 최소화할 수 있다. 스트래티지 패턴은 아래와 상황에서 사용할 수 있다. 비슷한 작업을 하는 알고리즘이 여러 개 존재할 경우 알고리즘을 사용하는 클라이언트 코드와 알고리즘의 구현 코드를 분리하고 싶을 경우 알고리즘을 쉽게 교체하거나 확장하고 싶을 경우 Strategy Strategy 인터페이스에서는 알고리즘을 정의하는 메서드를 포함한다. public interfac..

소개 커맨드 패턴을 이용하면 요구 사항을 객체로 캡슐화 할 수 있으며, 요청을 한 객체와 이 요청을 처리할 객체를 분리한다. 이를 통해, 요청을 수행하는 객체가 다양한 요청을 처리할 수 있으며, 실행 취소, 다시 실행과 같은 기능을 제공할 수 있다. Invoker Invoker는 명령 객체를 생성하고 실행될 메서드를 호출한다. 이 때, Command 인터페이스를 통해 ConcreteCommand 객체를 호출하기 때문에 실제 ConcreteCommand 객체의 타입을 알 필요가 없다. public class Invoker { private Command command; public void SetCommand(Command command) { this.command = command; } public vo..