728x90

분류 전체보기 360

[Unity] Custom Unity Package in Git 맹들기

회사에서 프로젝트 개발시 필요한 공통모듈을 각각 다운받을 수 있는 Editor 화면을 하나 만들고 있다. 다행히 Unity 에서 Git 저장소 정보를 package.json 파일 안에 담아서 그 파일을 기반으로 정보를 가져오는 기능을 제공한다. (Unity Package Manager 에서 Github 에 있는 오픈 소스를 Git Url 로 다운받아본 적이 있을 것이다). Unity 에서 권장하는 Custom Package 모양은 다음과 같다. Unity - Manual: Package layout Adding tests to a package Package layout This is the package layout recommended for custom packages: ├── package.jso..

[Unity][디자인 패턴] Builder Pattern(빌더 패턴)

* Builder Pattern: 객체를 생성할 때 그 객체를 구성하는 부분 부분을 먼저 생성하고, 이를 조합함으로써 객체 전체를 생성한다. * Builder Pattern 과 Abstract Factroy Pattern 과의 차이점 1) Builder Pattern: 복잡한 객체의 단계별 생성에 중점을 두고 있는 패턴. 마지막 단계에서 생성한 제품반환. 2) Abstract Factroy Pattern: 제품의 유사군들이 존재하는 경우 유연한 설계에 중점을 두는 패턴. 단계마다 만드는 제품을 즉시 반환. Vehicle(Car, MotorCycle) 객체를 만드는 Builder 패턴을 구현해보자. 탈 것의 공통 변수와 기능을 갖고 있는 Vehicle 클래스와 Vehicle 을 직접 만드는 데 필요한 In..

🎮 Unity Study/C# 2023.09.21

[Unity][디자인 패턴] Simple Factory Pattern(심플 팩토리 패턴)

*Factory: 객체 생성을 처리하는 클래스를 팩토리라고 부른다. *Simple Factory: 객체를 생성하는 일을 전담하는 클래스. Simple Factory Pattern 에는 주어진 입력을 기반으로 다른 유형의 객체를 반환하는 메소드가 있는 팩토리 클래스가 있다. Simple Factory 는 객체지향 프로그래밍을 할 때 항상 사용하는 방법이라 패턴으로 취급하지는 않는다. 다만, 팩토리 메서드 패턴이나 추상 팩토리 패턴의 기본이 되기 때문에 알아두자. using UnityEngine; public abstract class Unit { public abstract void move(); } public class Marine : Unit { public Marine() { Debug.Log("M..

[Unity][디자인 패턴] Component Pattern

*Component Pattern: 로직을 기능별로 컴포넌트 하는 것. 클래스를 분리하고 가독성을 높이고 Decoupling(독자적인 흐름을 보이는 것) 시키는 것은 협업하여 개발을 많이 해본 사람들에게는 자연히 녹아 있는 습관이다. 이런 구조적인 개선 작업을 선배 개발자들이 이미 컴포넌트 패턴으로 명명해 두었다. 특히 Unity 의 GameObject 는 Component 패턴이 잘 반영되어 설계된 클래스이다. GetComponet Method 로 각각의 Decoupling 된 하위 컴포넌트들을 불러서 사용할 수 있다. 유니티는 새로운 행동을 추가하는 컴포지션(composition: 합성) 구조를 채용한다. 이 점은 상속(Inheritance)를 통해 확장되는 오브젝트 지향 클래스 계층과는 위상을 달리..

[C#] Boxing, Unboxing -> Generic

https://learn.microsoft.com/ko-kr/dotnet/csharp/programming-guide/types/boxing-and-unboxing Boxing 및 Unboxing - C# 프로그래밍 가이드 - C# C# 프로그래밍의 boxing 및 unboxing에 대해 알아봅니다. 코드 예제를 살펴보고 사용 가능한 추가 리소스를 확인합니다. learn.microsoft.com https://yeko90.tistory.com/entry/c-%EB%B0%95%EC%8B%B1-%EC%96%B8%EB%B0%95%EC%8B%B1-%EA%B0%9C%EB%85%90 [c#] 박싱(boxing), 언박싱(unboxing) 개념과 사용 이유 기존에 타입을 변환하는것을 형변환(type casting)이..

🎮 Unity Study/C# 2023.09.08

[C#][Unity][디자인 패턴] Strategy Pattern(전략 패턴)

*Strategy Pattern: 여러 알고리즘을 하나의 추상적인 접근점(인터페이스)을 만들어서 접근점에서 알고리즘이 서로 교환 가능하도록 하는 패턴 *사용 예: 워드 문서에서 프린터, 폰트 사용. 어떤 기종의 프린트더라도 'Print' 버튼만 누르면 똑같이 동작함. 게임 캐릭터의 무기(교체 후) 사용. 어떤 무기라도 '공격' 버튼만 누르면 공격 동작을 수행함. public class MyWeapon { //접근점 private IWeapon weapon; //무기 체인지 public void SetWeapon(IWeapon weapon) { this.weapon = weapon; } //무기사용 public void Shoot() { weapon.Shoot(); } } IWeapon 인터페이스를 연결하..

[C#][Unity][디자인 패턴] Command 패턴

* Commnad 패턴: 메서드 호출을 실체화, 즉 객체로 감싼 것. : 함수 호출을 객체로 만든 이유는 디커플링으로 코드가 유연해지기 때문. ex) 입력키 변경, 실행취소/재실행 등의 기능을 만들 때 사용. 1. Command 패턴없이 만든 GetKey 기능 using System.Collections; using UnityEngine; public class Player : MonoBehaviour { [SerializeField] private GameObject shield; [SerializeField] private GameObject cannon; [SerializeField] private Transform firePos; void Update() { if (Input.GetKeyDown(..

[Unity][디자인 패턴] Observer Pattern

한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에게 연락이 가고 자동으로 내용이 갱신되는 방식. 주제와 옵저버가 느슨하게 결합되어 있는 객체 디자인. Subject가 Observer에 대해서 아는 것은 Observer가 특정 인터페이스(Observer 인터페이스)를 구현한다는 것 뿐. Observer는 언제든지 새로 추가할 수 있음. 새로운 형태의 Observer를 추가하려 해도 Subject를 전혀 변경할 필요가 없음. 새로운 클래스에서 Observer 인터페이스만 구현해주면 됨. Subject나 Observer가 바뀌더라도 서로에게 전혀 영향을 주지 않음. 그래서 Subject와 Observer는 서로 독립적으로 재사용할 수 있음. 1. 기본 호출 //옵저버 추상클래스 //: 옵저버들이 구현..

[Unity] Url to Image (RawImage, UnityWebRequest, Couroutine, Action<Texture>)

이미지 Url 를 다운로드해서 이미지 Texture를 변경하는 법을 알아보자. using System; using System.Collections; using TMPro; using UnityEngine; using UnityEngine.Networking; using UnityEngine.UI; namespace Main { public class MainCard : MonoBehaviour { [SerializeField] private TextMeshProUGUI titleText; [SerializeField] private TextMeshProUGUI contentText; [SerializeField] private TextMeshProUGUI dateText; [SerializeField]..

728x90