[Unity] UI 크기를 WorldSpace 기준으로 바꾸기
·
etc/Unity
* 2D Project라고 가정 유저가 폭격 스킬을 사용한다고 해보자 그러면 유저에게 폭격 지점과 범위를 정하는 UI를 제공하게 될 것인데 폭격 범위를 정하는 Circle모양의 UI와, 실제 폭격효과를 보여주는 Circle모양의 GameObject 간의 크기가 동일해야 합리적인 UI가 될 것이다 이때 폭격 효과를 보여주는 Circle은 GameObject의 Sprite이어서 WorldSpace에 존재하고 폭격 범위를 정하는 Circle은 UI의 Image여서 ScreenSpace에 존재하는데 이 둘의 크기를 어떻게 같게 할 수 있을까? 먼저 ScreenSpace는 카메라에 의해서 결정된다는것을 알아야 한다. 현재 프로젝트의 해상도가 1920x1080이라고 가정해보자. Debug.Log(Screen.Hei..
[Unity] 코루틴 일시정지시에 시점 복구하기
·
etc/Unity
엄청 오랜만에 포스팅 몬스터를 Spawn하는 코루틴을 이용하다가 Time.timeScale을 건드리지 않고 Spawn을 멈춰야 될 상황이 생겼다. IEnumerator SpawnEnemy() { while(enemyCount < 10) { Instantiate(~); enemyCount++; yield return new WaitForSeconds(2f); } } 코루틴은 이렇게 생겼었다 바로 드는 생각은 StopCoroutine("EnemySpawn"); 요거여서 그대로 했는데 Spawn이 잘 멈췄다. 그러고 다시 StartCoroutine("SpawnEnemy"); 실행! 하지만 문제가 하나 생겼는데 2초마다 일정 간격으로 줄지어서 이쁘게 나오던 몬스터들이 Spawn이 정지됐다가 재개되는 그 사이에 ..
[Unity] VS에서 Unity 메세지 띄우는 법
·
etc/Unity
제목이 조금 이상해 보일 수 있는데 이 창을 띄우고 싶어서 열심히 구글링을 해보았지만 부족한 나의 구글링 실력때문인지 해결하지 못했다. 그러다가 우연히 발견! 도구 - 옵션 - 텍스트 편집기 - 모든 언어 - Code Lens - Code Lens 사용에 체크하면 끝!
[Unity] 코루틴, Coroutine이란?
·
etc/Unity
C#과 JAVA의 차이점중에 하나인 코루틴, C#에는 코루틴이 있지만 JAVA에는 코루틴이 없는걸로 알고있다. 그럼 코루틴이란 정확히 무엇일까? 일반적으로 어떤 함수(루틴)를 구현할 때 return을 넣어 함수가 종료될 때를 정하게 된다. void Func() { print("A"); print("B"); return; } 위 함수를 호출하면 순차적으로 A를 출력하고 B를 출력할 것이다. return을 만나게 되면 제어권을 호출자에게 넘겨주게 되는데, 문제는 호출자는 Func()가 return 해주기를 하염없이 기다려야 한다는 것이다. 만약 Func()가 서버에서 데이터를 로드하는등 시간이 오래걸리는 작업이라면 사용자는 프로그램이 멈춘듯한 느낌을 받을 수 있다. 이것은 동기 프로그래밍의 단점인데, 이를 ..