유니티 URP란 Unity 2019.3버전부터 경량 렌더 파이프라인(Lightweight Render Pipeline, LWRP)이 유니버설 렌더 파이프라인(Universal Render Pipeline, URP)으로 변경되었습니다. URP는 아름다운 그래픽과 뛰어난 성능을 제공하는 강력한 솔루션으로 이제 더욱 다양한 플랫폼에서 사용 가능합니다. 또한 최신 아티스트 툴을 지원하고 2D, 3D, 가상 현실(VR) 및 증강 현실(AR) 프로젝트 모두에 적합합니다. LWRP는 모든 모바일 디바이스에서 고품질 그래픽스를 구현하는 빠르고 확장 가능한 파이프라인입니다. 지난 한 해 동안 이 스크립터블 렌더 파이프라인(Scriptable Render Pipeline)은 정식으로 제작에 사용할 수 있는 수준으로 성장했..
Unity 검색 결과
유니티에서 작업 중, 스크립트 에러를 클릭 해, 소스코드를 열었는데, 위와 같이 디버깅이 안되는 문제가 생겼다. 왼쪽 위 빨깐 박스 모양도 바껴있다. 정상적이라면, 아래와 같은 그림이어야 한다. 위와 같이 명확하게 [유니티에 연결] 이라고 표시 돼야 디버깅이 된다. 내 소스코드가 아니라, 엔진 내부에서 발생한 에러코드를 클릭 해, 여는 경우 발생하는데, 한번 이렇게 되면, 계속 디버깅이 안된다. 이 문제를 해결하기 위해, - 껐다 켜기 - 재부팅 - 유니티 디버깅 기능 껐다켜기 방법 등을 써봤으나 모두 실패 했다. 혹시나 해서, 다른 유니티 프로젝트를 켜봤는데, 그 프로젝트는 잘 연결되는 것으로 보아, 해당 프로젝트만 뭔가 꼬였구나라는 걸 직감했다. 스크립트 파일을 더블클릭 해, 파일을 여는 것이 아닌,..
Unity에서 SkeletonAnimation 또는 SkeletonGraphic(ui용)의 SkeletonDataAsset를 교체해야하는 경우가 있다. 보통 위 Inspector내에서 교체하는데, Runtime중에 Script로 교환 할 때는 아래와 같은 코드로 해야 한다. SkeletonGraphic m_animation; .... var skeletonDataAsset = Resources.Load("{your resource path}"); m_animation.skeletonDataAsset = skeletonDataAsset; m_animation.Initialize(true); 마지막에 Initialize(true)를 해줘야 하는게 핵심이다. 끝.
간혹 어떤 코드가 1프레임 혹은 몇 초 후에 실행됐으면 하는 때가 있다. 예를 들어, Ui를 초기화하고, 한프레임 후 구성요소의 위치나 크기를 가져와야 하는 경우가 그렇다. 초기화하고 바로 값을 읽으면, 원하는 값을 얻을 수 없다. 아마 Unity내부에서 렌더링 되지 않아서 인 것 같다. 이 경우 한프레임 후, 그 값을 읽으면 잘 읽힌다. 이때 한프레임 후 실행되게 할 때, 코루틴을 많이 사용하는데, 이게 은근 사용하기 귀찮게 돼 있다. 좀 더 간편하게 코루틴을 사용하기 위한 클래스들 만들어보자. 1. CoroutineManager 싱클톤 클래스 아래와 같이 싱글톤 클래스를 만들어보자. 2020/01/07 - [게임을 만들자/게임 서버(C#)] - c# 싱글톤 제네릭 클래스 using System; us..
Unity에서 런타임 중 스프인 오브젝트의 스킨을 바꿔야 하는 경우가 있다. SkeletonAnimation.Skeleton에 SetSkin이라는 함수가 있길래, 쉽게 변경이 가능한 줄 알았는데, 잘 변경 되지 않았다. Skeleton.Update()함수도 해봤는데 먹히지 않았다. 뭐가 문제지? 라고 생각하고 검색해 본 결과 SetSkin함수 호출 후, SetSlotsToSetupPose()라는 함수를 호출해야 한다고 한다. public void SetSkin(string skin_name) { m_animation.Skeleton.SetSkin(skin_name); m_animation.Skeleton.SetSlotsToSetupPose(); } 위 코드처럼 해보면 깔끔하게 잘 변경된다.
유저가 뒤로가기 버튼을 두번 연속으로 눌러 앱을 종료시키거나, 업데이트가 후, 재시작이 필요한 경우가 있다. 1. 앱 종료 public static void EndApp() { #if UNITY_EDITOR UnityEditor.EditorApplication.isPlaying = false; #else UnityEngine.Application.Quit(); #endif } 앱 종료는 에디터 상태인 경우와 앱 상태인 경우가 조금 다르다. 방법은 위와 같이, 에디터의 경우엔 UnityEditor클래스를 이용하고, 앱은 UnityEngine.Application클래스를 이용한다. 2. 앱 재시작(안드로이드) #if UNITY_ANDROID AndroidJavaObject unity_activity = ne..
최근댓글