728x90

분류 전체보기 334

[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]..

C# & Unity Code Convention

Unity 에서 Microsoft와 Google의 C# Code Convention을 기반으로 Unity 권장 Coding 규칙을 정리해준 문서를 제공한다. Create a C# style guide: Write cleaner code that scales Get tips from industry experts on how to create a C# code style guide. A style guide can help your team develop a codebase to support the growth of your project to a commercial-scale production. resources.unity.com 아래 링크에서 번역중 ~ C# Coding Convention C# C..

🎮 Unity Study/C# 2023.08.29

[Unity] Json 로컬 데이터 불러오기

JSON 직렬화 - Unity 매뉴얼 JsonUtility 클래스를 사용하여 Unity 오브젝트를 JSON 포맷으로 상호 전환할 수 있습니다. 예를 들어 JSON 직렬화를 사용하여 웹 서비스와 상호작용하거나, 데이터를 텍스트 기반 포맷으로 쉽게 패킹 docs.unity3d.com json, xml 등 다양한 형태의 데이터 포맷이 있다. 그 중 보기도 처리도 편한 Json 데이터 포맷으로 데이터를 처리하는 법을 알아보자. Json 포맷을 지원하는 라이브러리는 Unity 에서 기본으로 제공하는 JsonUtility 클래스, Newtonsoft의 Newtowsoft.json, Asset Store에서 다운받을 수 있는 JSON.NET(현재 지원종료) 등이 있다. 라이브러리 별로 지원하는 기능이 다른데, 간단한..

[Tistory] 코드블록 테마, 폰트 변경

설정 > 플러그인 > 코드문법강조 플러그인을 적용해주면 기본 테마는 바뀐다. (Visual Studio 테마, Github 테마, Xcode 테마 등) 근데 폰트는 안바껴서 이거 말구 html/css 코드를 custom 했다. 1. 코드 문법 강조 플러그인 설정 취소 코드 문법 강조 설정을 취소해주자. 2. 테마명 가져오기 https://highlightjs.org/examples Examples - highlight.js Language CategoryAll (190)Assembler (5)Common (37)Config (15)CSS (4)Database (2)Enterprise (9)Functional (14)Graphics (5)Lisp (5)Markup (3)Misc (59)Protocols (..

카테고리 없음 2023.08.22

[Unity] 병목현상과 메모리 관리

메모리 최적화가 왜 필요한지 근본적인 원인을 알아보자. #PC의 경우 Storage(HDD, SSD, SD)에 있는 데이터를 CPU 메모리로 올라가고 그 중에 렌더링이 필요한(Texture, Shader 등) 데이터면 GPU 메모리에 올라가게 된다. 이 때 PC는 64bit, 32bit가 존재하는데 64bit = 2^64 = 16EB(엑사바이트) 32bit = 2^32 = 4GB 의 메모리를 말한다. 즉, 물리적 PC 기계의 메모리는 10GB인데 게임에서 메모리를 12GB를 쓴다면, Storage의 일부공간을 가상메모리로 쓰는 Swap Paging 이 일어난다. (더 많은 공간을 쓸 수 있도록 지원하는 것) 이 Swap Paging이 많이 일어나면 병목현상이 일어나는 것이다. GPU Memory에서도 모..

728x90