Unity & C# 19

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

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

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

Grid System (3) - A* Pathfinding

2020/05/22 - [Unity & C#] - Grid System (2) - 미로 만들기 (Maze Algorithm) 지난 번 만든 미로에서 길을 찾는 A* 알고리즘을 구현해보자. A* 알고리즘 시작점에서 끝점까지 최단 경로를 찾는 알고리즘이다. 끝점까지 도달하는데 각 노드의 세 값 F, G, H를 계산하여 다음 경로를 정한다. G = 시작점에서 현재 노드까지 도달하는데 발생한 비용 H = 현재 노드에서 끝점까지 필요한 비용 F = G + H 2차원 Grid 형식의 맵에서 G, H, F 값을 계산할 때 수직, 수평 이동은 1.0의 비용이 발생하고, 대각선 이동은 1.4의 비용이 발생한다. (피타고라스의 정리에 의해 sqrt(2)값이 아닌가 싶다) 지난 번 생성한 미로에서는 대각선 이동이 없으므로,..

Unity & C# 2020.05.30

Grid System (2) - 미로 만들기 (Maze Algorithm)

2020/05/10 - [Unity & C#] - Grid System - (1) 격자 구조 만들기 Grid System - (1) 격자 구조 만들기 Unity에서 Grid System은 퍼즐, 보드 게임에서 많이 사용된다. 가로 길이(width)와 세로 길이(height)가 있는 2차원 좌표계의 게임 보드를 만들어보자. 1. 개념 구현 Grid class 1 2 3 4 5 6 7 8 9 10 11 12 13 1.. everycommit.tistory.com 지난 포스트에서 만든 Grid System과 Board로 미로를 만들어보자. 미로를 생성하는 알고리즘은 매우 다양하다. 간단히 시도해 볼 수 있는 Recursive Backtracking으로 해보려 한다. Recursive Backtracking 말..

Unity & C# 2020.05.22

Grid System (1) - 격자 구조 만들기

Unity에서 Grid System은 퍼즐, 보드 게임에서 많이 사용된다. 가로 길이(width)와 세로 길이(height)가 있는 2차원 좌표계의 게임 보드를 만들어보자. 1. 개념 구현 Grid class 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 public class TestGrid { private int _width; private int _height; private int _cellSize; private int[,] _gridArray; private TextMesh[,] _textMeshes; public Tes..

Unity & C# 2020.05.10

Gyroscope Input (Unity Remote)

Unity Play 모드에서 Touch 이외의 Input을 테스트하는 것에는 한계가 많다.예를 들어 Editor에서는 Gyroscope Input을 입력할 수 없다. 그렇다고 매번 기기로 빌드를 할 수도 없는 노릇.이때 사용할 수 있는 것이 Unity Remote 앱이다. Unity Remotehttps://docs.unity3d.com/kr/2018.4/Manual/UnityRemote5.htmlUnity 리모트 - Unity 매뉴얼Unity 리모트는 Android, iOS 및 tvOS 앱을 개발할 때 도움이 되도록 만든 다운로드 가능한 앱입니다. 이 앱은 Unity 에디터에서 프로젝트를 플레이 모드로 실행할 때 Unity와 연결됩니다. 에디터의 영상 출력은 기기의 화면으로 전송되고, 모든 입력은 Un..

Unity & C# 2020.05.10

IAP Sandbox 계정 설정

iOS의 IAP 테스트 단계는 TestFlight 등록 전과 후, 크게 두 가지 시점으로 나눌 수 있다. 앱을 올린 후에는 TestFlight에 내외부 테스터 계정을 등록하여 쉽게 테스트할 수 있다. 그러나 Xcode에서 Archive를 하기 전에는 시뮬레이터나 디바이스에 앱을 구동하여 테스트를 하게 되는데, 이때 Sandbox 계정이 필요하다. IAP Sandbox 계정 설정 인앱결제 시도시 아래와 같은 안내 창이 뜨게 된다. 이때 일반 상용앱이라면 내 단말에 로그인된 앱스토어 계정의 비밀번호를 입력하면 되겠지만, 현재는 [Environment: Sandbox]라는 메시지가 다른 환경임을 알려준다. 때문에 앱스토어 계정으로는 구입에 실패하고, Sandbox 계정의 비밀번호를 입력해야 한다. * 주의) ..