일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- addressable
- 포스트 프로세싱
- 최적화
- ScriptableObject
- 플러그인
- Android Plugin
- Boxing
- Unity
- sprite atlas
- Strategy Pattern
- 게임 개발
- Reflection
- Abstract Factory Pattern
- 인앱 결제
- 스프라이트 아틀라스
- ==
- Zenject
- Post Processing
- equals
- ReferenceEquals
- UniRx
- 1인 개발
- design pattern
- Addressable System
- c#
- 디자인 패턴
- Unboxing
- Today
- Total
목록c# (25)
One_KWS
매주 만나서 성과 공유하는 스터디를 하고 있는데 나의 경우에는 현재 만들고 있는 게임을 어느 정도 개발했는지 공유하고 있다. (다른 분은 게임이 아닌 앱 서비스를 개발하고 있다.) 매주 스마트 폰에 빌드를 해서 플레이하고 피드백을 받고 있는데 (피드백을 매우 잘 주신다. 다만 조금 매울 뿐..) 이번 일지부터는 개선한 내용도 같이 기록하려고 한다. 조이스틱 개선 플레이를 하다보면 손가락이 금방 피로해진다는 피드백이 있었다. 모바일 게임을 하다보면 조이스틱이 고정으로 있지 않고 터치한 곳을 기준으로 조이스틱이 따라오는데 내가 구현한 조이스틱은 한 위치에 고정되어 있어서 그런 것 같다. 터치한 위치로 조이스틱이 따라오도록 수정했다. 터치 영역 수정 아래와 같이 빈 공간에 터치가 되었을 때도 인식할 수 있도록..
몬스터를 잡아 아이템을 획득하고 이후 아이템으로 교환할 수 있도록 구현하려고 한다. 이번 일지에는 아이템을 획득하는 것까지 구현한 내용을 정리했다. 아이템 루팅 아이템 Item GameObject를 생성하고 Collider와 Rigidbody를 붙여주었다. 아이템에 둥둥 떠있는 모션을 넣기 위해 애니메이션을 추가하여 y축으로 올라갔다가 내려왔다가 하도록 구현했다. Item 스크립트를 생성하여 붙여주고 아래와 같이 코드를 작성했다. Target을 정해주면 해당 타겟을 따라가는 코드이다. 부드럽게 따라가도록 Vector3.SmoothDamp를 사용했다. (목표까지 일정한 속도로 움직이는 것이 아니라 속도가 점점 변하면서 목표 지점까지 이동한다.) public Transform Target { get; set..
인앱 결제 유니티에서는 인앱 결제 기능 구현을 위해 Unity IAP를 지원하고 있다. Unity IAP를 이용하면 iOS, Mac, Google Play, Windows 등 여러 앱스토어에서 인앱 결제 기능을 쉽게 구현할 수 있다. 또한 'Codeless IAP'를 사용하여 코드 작성 없이 인앱 결제 기능을 구현할 수도 있다. Unity IAP 설정 IAP를 사용하기 위해 유니티에서 Window - Services 를 선택한다. 또는 오른쪽 상단에 구름 모양 버튼을 누른다. (Inspector 창 위쪽에 있다.) Services 또는 구름 아이콘을 클릭하면 Inspector 옆에 Services라는 탭이 생긴다. 'Select organization'을 클릭하여 유니티 계정 이름을 선택하주고 creat..
C#에서 다루는 Type에는 Value Type과 Reference Type으로 두 가지가 있으며 둘 중 하나로 반드시 분류된다. 구조체는 Value Type이고 클래스는 Reference Type이다. int, long, decimal, char, byte 등이 Value Type이고 object, string은 Reference Type이다. Value Type과 Reference Type 이 두가지 Type이 프로그래밍에 어떤 영향을 주는지 다음 코드를 보면 알 수 있다. struct MyPoint { public int X { get; set; } public int Y { get; set; } public MyPoint(int x, int y) { this.X = x; this.Y = y; } ..
Spawn Object 게임이 시작했을 때 또는 다음 층으로 넘어갔을 때 몬스터를 생성해주는 기능을 추가했다. 그냥 생성해주면 밋밋하니 몬스터 생성 효과를 넣기로 했다. 가지고 있던 이펙트 에셋을 조금 수정해서 아래와 같이 만들었다. EnemySpawn GameObject를 하나 생성하여 만든 이펙트를 자식으로 넣어주고 EnemySpawn 스크립트를 생성해서 붙여주었다. 스크립트에는 아래와 같이 구현했다. public class EnemySpawn : MonoBehaviour { public Action OnEnemyCreated; [SerializeField] private ParticleSystem spawnEffect; [SerializeField] private int spawnDelay = 50..
Reflection 리플렉션은 객체의 Type 정보를 들여다보는 기능이다. Reflection을 이용하면 런타임중 객체의 Type, 이름부터 프로퍼티, 메소드, 이벤트, 필드 목록까지 모두 확인할 수 있다. 또한 동적으로 인스턴스를 생성할 수도 있고 메소드를 호출할 수도 있다. 새로운 데이터 형식을 동적으로 생성하는 것도 가능하다. C#의 모든 데이터는 Object를 상속받고 있다. 즉, 모든 데이터 형식은 Object 형식이 갖고 있는 다음의 메소드를 물려받아 갖고 있다. Equals() GetHashCode() GetType() ReferenceEquals() ToString() 위의 다섯 개 메소드 중에 GetType() 메소는 객체의 Type 정보를 반환하는 기능을 한다. 모든 데이터 형식이 Ge..