전체 글 61

C# 박싱 / 언박싱 (Boxing/Unboxing), ArrayList

C#에서 모든 데이터 형식은 object를 상속 받는다. 1. Boxing Boxing은 Value Type(int, float, char, bool, struct, ...)의 데이터를 Reference Type(object, string, class, ...)으로 변환하는 프로세스이다. int i = 1; object o = i; // 암시적 Boxing 값 형식의 데이터는 메모리의 스택 영역에 할당되는데, Boxing을 통해 참조 타입인 object로 변환되면서 힙 영역에 복사된다. # Boxing.cs public class Boxing : MonoBehaviour { void Start() { int i = 1; object o = i; i = 2; Debug.Log("i : " + i); Deb..

Unity & C# 2020.08.29

IAP Restore Purchase (구매복구)

iOS의 경우 In App Purchase 항목에 Non-Consumable(비소모) 상품이 있을 경우, 필수로 수동 구매복구 기능을 지원해야 한다. (Google Play와 Universal Windows Applications와 같이 자동 복구를 지원하는 플랫폼에선 IStoreListener의 초기화 시점에 자동으로 복구된다.) public void OnInitialized(IStoreController controller, IExtensionProvider extensions) { extensions.GetExtension ().RestoreTransactions (result => { if (result) { // This does not mean anything was restored, // m..

C# Extension Method(확장 메서드)

https://docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/classes-and-structs/extension-methods 확장 메서드 - C# 프로그래밍 가이드 C#에서 확장명 메서드를 사용하면 새 파생 형식을 만들거나 다시 컴파일하거나 원래 형식을 수정하지 않고도 기존 형식에 메서드를 추가할 수 있습니다. docs.microsoft.com 확장명 메서드를 사용하면 새 파생 형식을 만들거나 다시 컴파일하거나 원래 형식을 수정하지 않고도 기존 형식에 메서드를 "추가"할 수 있습니다. 확장 메서드는 정적 메서드이지만 확장 형식의 인스턴스 메서드인 것처럼 호출됩니다. 확장 메서드를 사용하면 상속을 받거나 원래 클래스를 복잡하게 수정하는 것 없이 간..

2D Shader Graph - 디졸브 효과

다음과 같은 효과를 만들어 보자 먼저 Package Manager에서 Universal RP를 설치한다. Project Window에서 Create > Rendering > Universal Render Pipeline > Pipe Line Asset을 생성한다. PipelineAsset과 PipelineAsset_Render이 생성된다. PipelineAsset을 눌러보면 Renderer List에 PipelineAsset_Render가 ForwardRendererData로 들어가 있다. 3D Grahpics에 사용되는 Renderer이기 때문에 지워주고 2D Renderer를 생성하자 Create > Rendering > Universal Render Pipeline > 2D Renderer 이렇게 ..

Unity & C#/Graphics 2020.08.14

두 번째 30Day Challenges - 기록 (24일)

Day24 2020.8.7 - 종료 Day23 2020.8.6 - 완료 Day22 2020.8.5 - 완료 Day21 2020.8.4 - 완료 Day20 2020.8.3 - 완료 Day20 2020.8.2 - 완료 Day19 2020.8.1 - 외출 Day18 2020.7.31 - 외출 Day17 2020.7.30 - 완료 Day16 2020.7.29 - 완료 Day15 2020.7.28 - 완료 Day14 2020.7.27 - 완료 Day13 2020.7.26 - 완료 Day12 2020.7.25 - 완료 Day11 2020.7.24 - 완료 Day10 2020.7.23 - 완료 Day9 2020.7.22 - 완료 Day8 2020.7.21 - 완료 Day7 2020.7.20 - 완료 Day6 2020..

30Day Challenges 2020.08.14

[Unity Crash] Developer Tools Access

현상 Editor Play 중 자꾸만 무한루프에 빠진 것처럼 유니티가 멈춰버리거나 크래쉬가 발생한다. 종종 아래와 같은 팝업이 뜨며 작동을 멈춘다. 환경 OS - macOS Catalina 10.15.4 Unity - 2019.3.8f1 Target Platform - Android IDE - JetBrains Rider 2018.3.1 해결 Terminal에서 아래 명령을 입력한다. $ sudo /usr/sbin/DevToolsSecurity --enable Developer Tools Access는 설치된 프로그램이 디버깅 기능을 사용하기 위해 사용자에게 권한을 요청하는 것이다. 그런데 위 팝업창에서 제대로 작동하지 않아 수동으로 활성화한다. 참고 macOS Catalina 10.15.x와 Unity..

1003번: 피보나치 함수 - 동적계획법

https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 2020/07/11 - [Unity & C#] - 2748번: 피보나치 수 2 - 동적계획법 2748번과 비슷한 피보나치 문제고, 동적계획법으로 분류되어 있다. 아래와 같은 기본적인 피보나치 함수로 피보나치 수를 구할 때, 호출되는 Fibonacci(0)과 Fibonacci(1)의 횟수를 구해야 한다. def Fibonacci(n): if n == 0: print ("0") return 0 elif n == 1: print ("1") return 1 else: return Fibonacci(n..

프로토타입 (Prototype)

게임 프로그래밍 패턴 5장 프로토타입 프로토타입 패턴은 새로운 객체를 생성할 때 원형 객체를 복사하여 만드는 패턴이다. 복사할 원형 객체가 있고, 새로운 객체를 생성할 때 발생하는 비용이 매우 클 때 유용하다. Unity에서 Prefab을 사용한 객체 생성 형식이 대표적인 프로토타입 패턴이다. 패턴은 clone() 메서드를 선언하는 추상 베이스 클래스와 이를 상속받아 다형적으로 clone()을 구현하는 하위 클래스로 이루어진다. 예를 들어 던전을 만드는데 층을 올라갈수록 등장 몬스터가 조금씩 바뀌는 상황이라고 해보자. 기본적인 데이터는 DB에서 가져온다. 이때 바뀌는 몬스터 목록을 얻기 위해 매번 DB에 접속하는 것은 앞서 얘기한 비용 낭비가 심한 방법이다. 처음 가져온 데이터를 원형으로 새로운 객체를 ..

Design Pattern 2020.07.19

첫 번째 30Day Challenges - 정리

2020/07/13 - [30Day Challenges] - 30Day Challenges 기록2020.6.8 ~ 2020.7.12첫 번째 30Day Challenge를 완료했다.휴가 4일을 제외하면 딱 한 달을 진행했고, 과정에서 느낀 것들을 생각나는대로 적어본다. - 일주일을 채우기가 가장 어려웠다.- 일주일이 지나자 해온 게 아까워서라도 하게 됐다.- 이주일이 지나자 부담감이 적어지고 자연스럽게 하게 됐다.- 삼주일이 지나자 보람을 느낄 만한 기록이 쌓이기 시작했다.- 한 달이 되자 습관이 되었다. 해보고 나니 챌린지의 궁극적인 목적은 '성실한 자기계발 습관 만들기'인 것 같다.'하루 30분 개발 공부'라는 주제로 시작한 챌린지는 자연스럽게 다른 자기 계발 루틴을 만들어냈다.하루 1시간 운동, 하루..

30Day Challenges 2020.07.14