Unity(30)
-
당신의 유니티 앱이 무거운 진짜 이유: UPM 패키지 최적화 완벽 가이드 (빌드 용량 20MB 줄이기)
당신의 유니티 앱이 무거운 진짜 이유: UPM 패키지 최적화 완벽 가이드 (빌드 용량 20MB 줄이기)도입: "분명 간단한 앱인데, 왜 이렇게 용량이 크지?" Unity로 간단한 2D 정보 앱이나 캐주얼 게임을 만들고 첫 빌드를 했을 때, 생각보다 큰 앱 용량에 당황한 경험이 있으신가요? 코드는 몇 줄 없고, 사용한 이미지 리소스도 얼마 없는데 안드로이드 기준 30MB를 훌쩍 넘는 빌드 파일(.apk)을 보며 의문이 들었을 겁니다. 그 원인은 바로 우리가 무심코 지나쳤던 **UPM(Unity Package Manager)**에 숨어있을 가능성이 큽니다.이 글에서는 Unity 프로젝트의 빌드 용량을 결정하는 핵심 요소인 UPM의 패키지들을 이해하고, 불필요한 기능들을 덜어내어 프로젝트를 가볍게 만드는 '프..
2025.08.24 -
[Unity] 인스펙터 값이 저장해도 초기화될 때, 범인은 ExecuteAlways! (Application.isPlaying으로 완벽 해결)
[Unity] 인스펙터 값이 저장해도 초기화될 때, 범인은 ExecuteAlways! (Application.isPlaying으로 완벽 해결) 유니티(Unity)로 개발할 때 마주치는 가장 당혹스러운 문제 중 하나는, 분명히 인스펙터(Inspector)에서 값을 설정하고 씬을 저장했는데도 불구하고, 특정 조건 하에 그 값이 초기화되는 현상입니다. 마치 유령처럼 사라지는 이 값 때문에 원인을 찾느라 소중한 개발 시간을 허비하는 경우가 많습니다.이 문제는 단순히 플레이 버튼을 눌렀을 때뿐만 아니라, 에디터 상에서 게임 오브젝트를 비활성화했다가 다시 켜는 것만으로도 발생할 수 있어 개발자를 더욱 혼란에 빠뜨립니다. 이 글에서는 해당 문제의 근본적인 원인과, 아주 간단하고 명쾌한 해결책을 제시합니다. 현상 분..
2025.08.22 -
유니티 고수만 아는 싱글턴 관리 비법: '이 코드' 한 줄로 하이어라키(Hierarchy) 깔끔하게 정리하기
유니티 고수만 아는 싱글턴 관리 비법: '이 코드' 한 줄로 하이어라키(Hierarchy) 깔끔하게 정리하기 안녕하세요, 유니티 개발자 여러분!혹시 여러분의 유니티 프로젝트 하이어라키(Hierarchy) 창은 안녕하신가요? 프로젝트 규모가 조금만 커져도 GameManager, SoundManager, UIManager, DataManager 등... 온갖 매니저들이 최상단(루트)에 흩어져 지저분해 보이는 경험, 다들 한 번쯤은 있으실 겁니다."어쩔 수 없지. 싱글턴 매니저는 DontDestroyOnLoad를 써야 하고, 그건 루트 오브젝트에만 되니까..."라고 생각하며 스스로를 위로하셨나요? 오늘, 그 고정관념을 깨뜨릴 아주 우아하고 참신한 방법을 소개해 드리고자 합니다. 단 한 줄의 코드로 지저분했던..
2025.08.22 -
Unity 이벤트 값 전달이 안될 때? 99%는 이 문제입니다 (동적 vs 정적)
Unity 이벤트 값 전달이 안될 때? 99%는 이 문제입니다 (동적 vs 정적) 서론: 분명 호출되는데, 값은 왜 비어있을까?Unity 개발자라면 누구나 한 번쯤 UI 이벤트를 사용해 봤을 겁니다. 버튼의 OnClick, 입력 필드의 OnEndEdit 등은 가장 기본적인 상호작용의 시작점이죠. 그런데 분명히 함수를 연결했고, 콘솔에 로그도 찍히는데 정작 중요한 값(Parameter)이 전달되지 않는 이상한 경험을 해보신 적 없으신가요?"분명 OnEndEdit에 함수를 연결했는데, Debug.Log는 호출되지만 텍스트가 비어있어요. Unity 버그인가요?"결론부터 말씀드리면, 99%의 확률로 버그가 아닙니다. 이것은 Unity Inspector가 가진 강력하지만 때로는 헷갈리는 기능, 바로 동적(Dyn..
2025.08.21 -
Unity Input Field 이벤트 완벽 정복: On Value Changed, On End Edit, On Select, On Deselect 비교 분석 및 활용법
Unity Input Field 이벤트 완벽 정복: On Value Changed, On End Edit, On Select, On Deselect 비교 분석 및 활용법 서론: 모든 상호작용의 시작, 유저 입력게임이나 애플리케이션 개발에서 유저의 입력을 받는 UI(사용자 인터페이스)는 가장 기본적이면서도 핵심적인 기능입니다. Unity(유니티)에서는 이러한 텍스트 입력을 처리하기 위해 강력한 입력 필드(Input Field) 컴포넌트를 제공합니다. 대부분의 개발자가 입력 필드를 사용하는 것 자체는 어렵지 않게 생각하지만, 유저의 입력 시점에 따라 정교한 상호작용을 구현하려고 할 때 작은 혼란에 빠지곤 합니다. 바로 On Value Changed, On End Edit, On Select, On Desel..
2025.08.21 -
유니티 [FormerlySerializedAs] 완벽 가이드: 리팩토링 시 인스펙터 데이터 유실 막는 법
유니티 [FormerlySerializedAs] 완벽 가이드: 리팩토링 시 인스펙터 데이터 유실 막는 법안녕하세요, 유니티 개발자 여러분! 혹시 이런 경험 없으신가요? 스크립트에서 변수 이름의 오타를 발견하고 기분 좋게 수정했는데, 유니티 에디터로 돌아가 보니 인스펙터(Inspector)에 정성껏 설정해 둔 값들이 전부 초기화되어버린 허무한 경험 말입니다. 프리팹 수십 개에 연결된 값이었다면 아찔하기까지 하죠.이런 대참사를 막아주는 마법 같은 어트리뷰트가 바로 [FormerlySerializedAs]입니다. 오늘은 이 강력하면서도 간단한 기능에 대해, 왜 필요한지부터 언제 어떻게 사용해야 하는지까지 완벽하게 파헤쳐 보겠습니다.1. 문제의 시작: 왜 데이터는 사라지는가? - 유니티의 직렬화(Serializ..
2025.08.19