Nimble Riverside

· Unity/Tip
유니티로 게임을 제작하다 보면 게임이 시작되기 전에 특정 오브젝트가 씬에 로드되어 있으면 하는 순간들이 있습니. 그냥 Hierarchy창에서 미리 만들어두거나 싱글톤을 사용하는 방법도 있지만, 이 글에서는 유니티 어트리뷰트를 이용한 방법을 설명하겠습니다. 유니티는 "RuntimeInitializeOnLoadMethod" 라는 어트리뷰트를 지원하는데, 이 어트리뷰트를 가진 함수는 씬이 로드되기 전에 호출될 수 있습니다. using UnityEngine; public class BootStrapper { [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] public static void CreateNeededObjectsBe..
· Unity/Tip
🎈 해당 글은 URP를 사용할때를 기준으로 작성되었습니다. 카메라는 메인카메라와 UI카메라 두개가 필요합니다. 메인카메라는 UI를 제외한 모든 오브젝트를 그리고, UI카메라는 UI요소만을 그린다음 메인카메라화면에 UI카메라 화면을 덮어씌운다고 생각하시면 됩니다. 메인카메라 위에 UI카메라 화면을 그리기 때문에 항상 UI오브젝트가 가장 위에 그려지게 됩니다. 아래의 과정을 따라하시면 UI요소가 항상 카메라에 보이게 할 수 있습니다. 메인카메라의 카메라 컴포넌트의 Culling Mask값에서 UI레이어를 제외시켜준다. UI카메라의 Culling Mask값은 UI레임어만 체크해준다. (UI오브젝트에는 UI레이어가 할당되어있어야 합니다) UI카메라의 Render Type을 Overlay로 바꿔준다. 메인카메라의..
· Unity/Tip
유니티에서는 새로운 장면을 비동기로 로드하는 "LoadSceneAsync" 함수를 제공합니다. 이 함수는 반환값으로 "AsyncOperation" 이라는 비동기작업객체를 반환하는데 이 객체로 비동기 작업이 어디까지 진행되었는지 알 수 있습니다. 이 경우에는 새로운 장면이 얼마나 로드되었는지는 알 수 있겠죠. 필요한 코드만 하나하나 살펴봅시다. 먼저 스페이스바를 누르면 새로운 장면을 로드하는 로직을 만듭니다. private void Update() { if (Input.GetKeyUp(KeyCode.Space)) { StartCoroutine(LoadSceneCoroutine()); } } 다음은 새로운 장면을 로드하는 함수입니다. 여기서 눈 여겨볼 부분은 AsyncOperation 객채의 allowSce..
· Unity/Tip
유니티에서는 특정한 축을 기준으로 거리에따라 오브젝트를 정렬하는 기능을 제공합니다. 탑뷰형식 2D게임에서 유용하게 사용될 수 있습니다. 오브젝트를 정렬할 축을 설정하는방법은 Edit > Projecting Settings > Graphics > Transparency Sort Axis 에서 설정할 수 있습니다. Y축을 기준으로 정렬하고 싶다면 Y값에 1을 주면됩니다.
· Unity/Tip
게임이 정지된 경우에도 UI요소는 움직여야 하는 경우가 더러있습니다. 유니티에서 게임을 정지하기 위해 주로 아래의 코드를 사용합니다. Time.timeScale = 0.0f; 하지만 유니티의 애니메이션은 TimeScale의 영향을 받기 때문에 UI애니메이션 또한 멈추게됩니다. 이를 해결하기 위해선 애니메이터 컴포넌트에서 업데이트 모드를 UnscaledTime으로 바꾸어야합니다. 업데이트 모드를 UnscaledTime으로 바꾼다는것은 애니메이션을 TimeScale값과 상관없이 독립적으로 업데이트 하겠다는것을 의미합니다. 아래의 유니티 공식문서에서도 주로 게임이 정지되었을때 UI요소를 업데이트 하기위해서 쓰인다고 명시되어있습니다. Unity - Scripting API: AnimatorUpdateMode.U..
YMS Games
'분류 전체보기' 카테고리의 글 목록 (5 Page)