본문 바로가기

프로그래밍162

공간 분할 패턴_유니티(Unity)에서 C# 으로 사용해 보는 디자인 패턴 오브젝트가 많을 때 오브젝트 간의 충돌을 검사 한다고 하면 모든 오브젝트를 검사하는데 비용이 매우 많이 들어감 그래서 전체 영역을 n개로 쪼개서 쪼개진 부분과 동일한 곳에 있는 오브젝트끼리만 검사를 하는 패턴 using UnityEngine; public class KMS_SpacePartition : MonoBehaviour { public static KMS_Grid gridMap = new KMS_Grid(); GameObject obj = null; private void Start() { obj = Instantiate(Resources.Load("Cube") as GameObject); Camera.main.gameObject.transform.parent = obj.transform; } p.. 2020. 6. 13.
Singleton Pattern_싱글톤_유니티(Unity)에서 사용가능한 5가지 싱글톤_유니티(C#)로 사용해 보는 디자인 패턴 유니티에서 활용 가능한 5가지 싱글톤 패턴에 대해서 알아보자 1. 일반적인 싱글톤 2. 모노(MonoBehaviour)를 사용한 싱글톤 3. 프로퍼티(Property)를 사용한 싱글톤 4. 제네릭을 활용한 싱글톤 4-1. 모노(MonoBehaviour)를 사용 하지 않는 싱글톤 4-2. 모노(MonoBehaviour)를 사용 하는 싱글톤 1. 일반적인 싱글톤 using UnityEngine; public class SingletonPattern { private SingletonPattern() { } private static SingletonPattern instance = null; public static SingletonPattern GetInstance() { if (instance == nu.. 2020. 6. 6.
유니티(C#)로 사용해 보는 디자인 패턴_ProtoType Pattern_프로토타입 프로토 타입 이번 예제에서는 몬스터의 리스폰을 프로토 타입으로 구현해 보았습니다. Monster.cs public class KMS_Monster { public int health; public int speed; public int positionX; public int positionY; public virtual KMS_Monster Clone() { return new KMS_Monster(); } } 가상 함수인 Clon이 존재 Demon.cs public class KMS_Demon : KMS_Monster { public KMS_Demon(int hp, int spd, int x, int y) { health = hp; speed = spd; positionX = x; positionY =.. 2020. 5. 30.
유니티(C#)로 사용해 보는 디자인 패턴_Observer Pattern_관찰자 패턴 옵저버 패턴, UI뿐만 아니라 데이터를 일괄로 전달하기 위해 자주 사용하는 패턴 UI가 오픈 되어 있을 때에만 해당 UI에 데이터를 전달하는 예제를 작성 실행화면 ObserverPattern.cs using UnityEngine; // 옵저버 패턴의 원형 public class KMS_ObserverPattern : MonoBehaviour { public KMS_ObserverPattern nextOb = null; public UIType type; // 옵저버를 상속받는 클래스들은 다음 함수를 꼭 구현해야 한다 public virtual void Notify(Event type) { // 데이터가 전달 되었을 때 수행해야 하는 일들을 진행할 수 있다 } } 해당 클래스를 상속받은 UI들 Equipm.. 2020. 5. 24.
유니티(C#)로 사용해 보는 디자인 패턴_Flyweight Pattern_경량 패턴 경량 패턴, 동일한 내용을 묶어서 관리하는 패턴 using UnityEngine; public class KMS_FlyweightPattern : MonoBehaviour { // 16 x 16 짜리 랜덤맵을 만든다고 생각해보고 const int mapSizeX = 16; const int mapSizeY = 16; // 각 위치에 존재하는 지형,지물에 대해서 저장 한다고 했을 때 KMS_FieldObject[,] fieldObjectArray = new KMS_FieldObject[mapSizeX, mapSizeY]; // 동일한 정보는 묶어서 관리하고 다른 부분만 각자 처리하는 식의 패턴 // 예제에서는 이동 가능 여부와 이름만 넣었다 KMS_FieldObject fieldIsle = new KMS_.. 2020. 5. 24.
유니티(C#)로 사용해 보는 디자인 패턴_Command Pattern_커맨드 패턴 * 코딩 스터디 관련 내용은 매주 토요일 작성됩니다 * 유니티에 Command Pattern을 적용 시켜 보았습니다. 보통 커맨드 패턴은 유저의 입력하는 값과 실제 처리하는 과정을 나누어서 유저가 원하는 입력값과 실행값을 매칭 시켜 주는 용도로 많이 사용합니다. 실제 예제에서도 그렇구요. 물론 이 예제에서는 여러 입력값을 쓰고있지는 않아서 그 의미전달이 조금 부족할 수도있지만, 구조는 다음과 같습니다. * 결과 설명 및 화면 방향키, U key, D key를 누르면 오브젝트가 이동하거나 확대, 축소 Z key, R key를 통해 되돌리기, 다시 돌리기 기능이 실행 되는 예제 Unit.cs using System.Collections; using System.Collections.Generic; using.. 2020. 2. 23.