| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
| 31 |
- ==
- Post Processing
- 포스트 프로세싱
- Unity
- ScriptableObject
- Strategy Pattern
- 스프라이트 아틀라스
- Boxing
- c#
- sprite atlas
- 최적화
- design pattern
- Unboxing
- ReferenceEquals
- addressable
- 게임 개발
- 인앱 결제
- Android Plugin
- Addressable System
- 디자인 패턴
- 1인 개발
- Zenject
- UniRx
- equals
- Reflection
- Abstract Factory Pattern
- 플러그인
- Today
- Total
목록c# (13)
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; // ..
소개 스트래티지 패턴(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..
Mono Mono는 Unity에서 기본적으로 사용되는 스크립팅 런타임이다. .NET Framework의 경우 마이크로소프트에서 개발한 소프트웨어 프레임워크로 윈도우 외의 플랫폼은 지원하지 않는다. 반면에 Mono는 오픈소스 프로젝트로, 리눅스, macOS, iOS, 안드로이드 등 다양한 운영체제에서 실행될 수 있다. Mono는 .NET Framework과 유사한 구조를 가지고 있으며, C# 스크립트를 IL 코드로 변환하고, JIT(Just-In-Time) 컴파일러를 사용하여 IL 코드를 실행한다. Mono는 다양한 플랫폼에서 실행할 수 있고 빌드가 빠르다는 장점이 있지만 코드 난독화 및 보호 솔루션이 없을 경우 DLL 파일을 통해 쉽게 디컴파일이 가능하여 보안에 취약하다는 단점이 있다. IL2CPP IL..
CLR (Common Language Runtime) CLR은 NET Framework에서 실행되는 어플리케이션의 실행 환경을 제공하고 다양한 언어로 작성된 코드를 관리하고 실행할 수 있도록 한다. .NET 언어로 작성된 코드를 실행하기 위해 IL(Intermediate Language)로 컴파일하고 JIT(just-in-time) 컴파일러를 사용하여 IL을 기계어로 변환한다. CLR에는 여러가지 기능들이 있다. 메모리 관리: 객체의 메모리 할당과 해제를 자동으로 처리하기 때문에 개발자가 수동으로 메모리 관리를 하지 않아도 된다. 코드 실행: .NET 언어로 작성된 코드를 IL로 컴파일하여 실행 가능한 형태로 만든다. IL은 JIT 컴파일러에 의해 실행 코드로 변환된다. 예외 처리: 코드에서 발생하는 예..