일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- 포스트 프로세싱
- Zenject
- 플러그인
- 인앱 결제
- UniRx
- Strategy Pattern
- Unity
- Boxing
- Abstract Factory Pattern
- design pattern
- Reflection
- Addressable System
- Android Plugin
- ReferenceEquals
- Unboxing
- 최적화
- 게임 개발
- ScriptableObject
- sprite atlas
- 스프라이트 아틀라스
- 디자인 패턴
- c#
- addressable
- ==
- equals
- 1인 개발
- Post Processing
- Today
- Total
목록전체 글 (40)
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; // ..
안드로이드 프로젝트 생성 안드로이드 플러그인을 만들기 위해 Android Studio 프로젝트를 생성한다. Empty Activity로 생성하고 Minimum SDK는 Unity Build Setting과 맞춰주었다. Module 생성 프로젝트를 만들었으면 File - New - New Module로 Module을 생성한다. classes.jar 추가 다음으로 아래 위치에서 classes.jar 파일을 복사한다. Window : C:\Program Files\Unity\Hub\Editor\(사용하고 있는 유니티 버전)\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\il2cpp/Release\Classes Mac : Applications/Unity/Play..
보스 공격 패턴 구현 애니메이션 이벤트 추가 공격 애니메이션의 특정 타이밍에 패턴 공격을 실행시켜 주기 위해 각 애니메이션에 이벤트를 추가하였다. IAttackPattern 보스 몬스터의 공격 패턴은 아래와 같은 구조로 구현했다. 각 공격 패턴은 IAttackPattern이라는 Interface를 구현하고 있고 BossCombat 클래스에서 이 Interface를 통해 제어해 준다. (스트래티지 패턴을 이용했다.) IAttackPattern 인터페이스에는 IsAvailable 프로퍼티와 Perform() 함수가 있다. IsAvailable은 해당 공격 패턴을 사용할 수 있는지를 판단하기 위한 프로퍼티이고 Perform() 함수는 해당 공격 패턴을 실행시키는 함수이다. public interface IA..
캐릭터 및 애니메이션 캐릭터 & 무기 보스 몬스터로 아래 캐릭터를 사용했고 무기도 캐릭터에 맞게 골라 넣어 주었다. 애니메이션 일단 공격 패턴 먼저 구현하기 위해 공격 관련 부분의 애니메이션만 추가하였다. 총 3개의 패턴을 넣기 위해 공격 애니메이션도 각각 다른 3개의 애니메이션을 넣어주었다. 코드 구조 보스 몬스터의 이동 및 공격에 대한 구조는 일반 몬스터와 같다. 각 행동은 IBehaviour를 상속받고 있으며 BossController를 이용하여 제어해준다. BossController BossController는 보스 몬스터의 이동과 공격을 제어한다. 코드는 EnemyController와 유사하다. 현재는 공격에 대한 코드만 구현되어 있다. public class BossController : M..
스프라이트 아틀라스(Sprite Atlas)를 사용하면 여러 개의 텍스처를 단일 텍스처로 합칠 수 있다. 여러 개의 텍스처를 호출할 경우 드로우 콜이 텍스처의 개수만큼 발생하게 되어 성능 저하가 일어날 수 있다. 스프라이트 아틀라스를 사용하면 드로우 콜을 줄일 수 있다. Sprite Atlas 설정 Edit - Project Settings - Editor에서 Sprite Packer - Mode를 Sprite Atlas V1 - Always Enabled로 변경한다. Sprite Atlas 만들기 Create → 2D → Sprite Atlas를 선택하여 Sprite Atlas를 생성한다. 생성된 스프라이트 아틀라스의 Inpector 창의 하단에 있는 Objects for Packing에 스프라이트를..