본문 바로가기

유니티 & C#11

유니티 모바일 <가로모드 / 세로모드> 빌드, 런타임 시점에 코드로 컨트롤하기 유니티에서 가로모드와 세로모드를 컨트롤 하는 시점은 2가지 있다. 1. 빌드 시점에 Fix 하기 2. 런타임에 특정 상황에서 Edit 하기 PlayerSetting 에서 컨트롤 되는 부분은 다음과 같다. 직접 체크해도 되지만 코드로 접근해 보겠다. 먼저, 빌드 시점에 변경하는 방법이다. 이 방법은 애초에 빌드가 해당 옵션으로 뽑히게 된다. 즉, 앱 실행 시 자동으로 지정한 방향으로 플레이가 시작된다. 접근 방법은 다음과 같다. 가로모드는 일반적으로 Auto 로 설정한 후에 LandscapeLeft , Right 를 true 로 해준다. 가로로 돌아간 상태에서 휴대폰을 뒤집으면 해당 방향으로 자동회전 되는 것이 일반적으로 많이 쓰이는 방법이다. 특이하게 한쪽으로만 고정하고 싶다면 Left, Right 중 .. 2023. 11. 15.
유니티 Target API Level 코드로 수정하기 (API 31 이상 일 때) 안드로이드 빌드 중에 min 혹은 target API level 을 수정해야하는데, 빌드 자동화 스크립트 작성 중 해당 부분을 코드로 접근해야할 경우가 있다. 이 때, PlayerSettings.Android.minSdkVersion = AndroidSdkVersions.AndroidApiLevel22; PlayerSettings.Android.targetSdkVersion = AndroidSdkVersions.AndroidApiLevelAuto; 이런 식으로 Enum으로 접근할 수 있다. 하지만, 유니티 버전에 따라 API 레벨이 특정 구간을 넘어서면 Enum 이 정의되어 있지 않다. 따라서 이런 문제가 생긴다. 이럴 때는 그냥 int 로 입력 후 캐스팅하면 된다. 먹힐까 싶었는데 잘 된다. 단 해당 .. 2023. 11. 6.
유니티 - Isometric 2D 에 관하여.. 이 글에서는 앞으로 Isometric 프로젝트를 만들어보면서 발생했던 이슈나 알게된 점들을 공유하고자 한다. 2D는 어디까지나 3D 하위호환이라고 생각했지만, 생각보다 2D 도 머리 쓸 일이 많았다. 2023. 11. 1.
유니티 - 런타임에 이미지 로드하여 스프라이트 생성하기 프로젝트에 필요한 스프라이트가 포함되어 있어도 괜찮지만, 빌드된 프로그램이 재빌드 없이 내부 리소스가 교체되어야 할 때에는 지정된 폴더에서 리소스를 읽어 동적으로 로드해야한다. 이런 과정에서 동적으로 스프라이트를 생성하는 방법을 적어본다! private Sprite MakeSprite(string filePath, Vector2 pivot) { if (string.IsNullOrEmpty(filePath) == true) return null; // Get File Name FileInfo fileInfo = new FileInfo(filePath); // Read image byte[] bytes = File.ReadAllBytes(filePath); // Create Texture Texture2D .. 2023. 11. 1.
유니티 UI 이미지가 보이지 않을 때 Maskable 옵션 확인하기 하이어라키 상에 Image GameObject 는 켜져있고, 씬 뷰에서도 아웃라인이 보이지만 이미지가 보이지 않는다면 Image 컴포넌트 옵션에 Maskable 을 확인한다. (해제하면 보통 보임) Image 컴포넌트 두개가 부모-자식간의 관계로 설정되어 있을 때 Maskable 옵션에 따라 마스킹이 적용된다. 이것 때문에 하위 이미지가 안보이는 경우가 있어서 삽질하다가 적는다. 마찬가지로 하위에 있는 TextMeshProUGUI 컴포넌트도 Extra Settings 에 Maskable 옵션이 있다. 텍스트도 보이지 않는다면 꺼주면 된다. 2023. 11. 1.
유니티 - 씬 이름을 Enum 으로 관리하기 [InitializeOnLoadMethod] 사용 유니티에서 빌드 세팅에 추가된 씬들을 Enum 으로 관리하고 싶다는 Needs 가 생겼다. 유니티에서는 씬에 접근할 때, 씬의 이름 string 이나, 씬의 BuildIndex int 로 접근하는데, 해당 방식이 코드 상에서 명확하지 않다는 점이 존재한다. 그렇다고 씬이 많아지면 일일히 빌드 인덱스에 대치되는 Enum을 손수 작성하기는 귀찮다. 따라서, 씬을 빌드 세팅에 추가하면, 자동으로 Enum Class 를 생성해주는 스크립트를 작성해보았다. 필요한 분이 계시다면 도움이 되었으면 합니다. using System.Collections.Generic; using System.IO; using UnityEditor; public class SceneNameEnumCreator { [InitializeOn.. 2023. 10. 26.