2020/07 12

[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

첫 번째 30Day Challenges - 기록 (31일)

Day31 2020.7.12 - 싱글턴 패턴Day30 2020.7.11 - 프로토타입 패턴Day29 2020.7.10 - 2748번: 피보나치 수 2 정리Day28 2020.7.9 - 2748번: 피보나치 수 2Day27 2020.7.8 - UnityEvent, UnityActionDay26 2020.7.7 - C# Delegate 정리Day25 2020.7.6 - C# DelegateDay24 2020.7.5 - 관찰자 패턴 정리Day23 2020.7.4 - Project StudyDay22 2020.7.3 - 관찰자 패턴Day21 2020.7.2 - Unity Domain Reload, Scene ReloadDay20 2020.7.1 - Unity Enter Play ModeDay19 2020.6.3..

30Day Challenges 2020.07.13

2748번: 피보나치 수 2 - 동적계획법

https://www.acmicpc.net/problem/2748 2748번: 피보나치 수 2 문제 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n>=2)�� www.acmicpc.net 동적계획법(Dynamic Programmin)이란 복잡한 문제를 작은 단위로 분할하여 풀고 최종적으로 그것을 결합해 해겨하는 방법을 말한다. 동적계획법의 핵심은 메모이제이션(Memoization)이다. 동일한 계산이 중복되는 문제에서 한 번 계산한 결과는 저장해 둔다. 그리고 다음 번 동일한 계산이 필요할 때 연산하지 않고, 저장해둔 이전 결과에 접근해 사..

Delegate, Event (2) - UnityEvent

UnityEvent UnityEvent는 C# Delegate를 Unity에서 쓰기 좋게 랩핑해 놓은 기능이다. MonoBehaviour를 상속받는 모든 클래스에서 사용할 수 있고, UnityEvent 변수를 선언하면 인스펙터에 표시되고 영구적 콜백을 추가할 수 있다. - 영구적 콜백은 인스펙터에서 등록해준 콜백으로, 런타임에서는 수정(등록/제거)할 수 없다. 선언 # UnityEventTest.cs using UnityEngine; using UnityEngine.Events;// UnityEvent 사용을 위해 import public class UnityEventTest : MonoBehaviour { public UnityEvent unityEvent; } 등록/삭제 스크립트 상에서도 UnityE..

Delegate, Event (1) - C# Delegate

대리자 Delegate Microsoft Docs - 대리자 사용(C# 프로그래밍 가이드) 대리자는 C 및 C++의 함수 포인터처럼 메서드를 안전하게 캡슐화하는 형식입니다. 함수 포인터와는 달리 대리자는 개체 지향적이고 형식이 안전하며 보안이 유지됩니다. 대리자에 대한 호출은 대리자를 통해 해당 메서드로 전달된다. 매개변수가 있을 경우 호출자의 매개변수는 대리자에 의해 해당 메서드로 전달되고, 반대로 반환값이 있을 경우 대리자에서 호출자로 반환된다. # DelegateTest.cs string 매개변수를 받는 delegate를 선언하고, 동일하게 string 매개변수를 받는 메서드를 delegate 객체에 넣어줬다. public class DelegateTest : MonoBehaviour { priva..

관찰자 (Observer)

게임 프로그래밍 패턴 4장 관찰자 관찰자 패턴은 객체와 객체의 상태 변화를 관찰하는 관찰자를 일 대 다의 관계로 정의해두고, 해당 객체의 상태가 변할 때 등록된 다수의 관찰자에게 객체의 변화를 알리는 디자인 패턴이다. 예를 들어, 플레이어의 행동에 따라 다양한 업적을 달성하는 시스템이 있다고 하자. 이때 특정 행동을 하는 코드 부분 부분에 각 업적 달성 코드를 구현하게 되면 상당히 지저분해질 것이다. 스파게티처럼 이곳 저곳에 퍼진 코드는 작은 수정에도 매우 민감해진다. 관찰자 패턴을 적용한다면 플레이어가 특정 행동을 했을 때 관찰자 목록에 알림을 던져주기만 하면 된다. 업적 관찰자는 알림에 맞는 업적 달성 코드를 실행하면 된다. 관찰자(Observer) 관찰자는 객체를 관찰하다 객체의 상태 변화 메서드가..

Design Pattern 2020.07.05

Enter Play Mode, Domain Reload와 Scene Reload

Unity 2019.3 버전부터 'Enter Play Mode'라는 실험적 기능을 쓸 수 있다. 프로젝트가 커지다보면 Play Mode에 진입하는데 걸리는 시간이 어느 순간 확연히 늘어나기 마련이다. Enter Play Mode를 사용하면 이런 문제를 극단적으로 해결할 수 있다. Unity Blog 테스트 따르면 Play Mode 진입 시간이 최소 50%에서 최대 90%까지 단축된다고 한다. 사용 방법은 매우 간단하다. Project Settings > Editor > Enter Play Mode Settings에서 'Enter Play Mode Options'를 켜주면 된다. 두 가지 옵션(Reload Domain, Reload Scene)은 아래서 설명한다. 동작 방식 Unity Editor는 Pla..

Unity & C# 2020.07.02