본문 바로가기

C#8

공간 분할 패턴_유니티(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#)로 사용해 보는 디자인 패턴_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.
Template Method Pattern Template Method Pattern 에 대해서 알아보도록 하겠습니다. 이 패턴을 설명하면 다음과 같습니다. 추상 클래스를 구현하고, 그 클래스를 사용하여 [기능]을 실행합니다. 하지만, 그 [기능]구현은 추상 클래스를 상속받은 구현 클래스에서 구현합니다. 설명만 들으면 아리송 한 관계로 예제를 보도록하겠습니다. namespace TemplatePattern { // 추상 클래스 public abstract class SportClass { // 구현 클래스에서 구현하게 될 부분 public abstract void role(); // play를 통해 role 사용. public void play() { role(); } } // 구현 클래스 public class BaseBallClass : Sp.. 2016. 6. 30.