유니티
Unity iOS Could not produce class with ID 에러 해결법
2018. 10. 19.회사에서 신규 슬롯을 제작하고 iOS로 빌드를 한 뒤 해당 게임을 들어갔는데 AssetBundle을 로드하다가 크래시가 나는 상황이 벌어졌다. Console App을 이용해 디바이스 로그를 확인해보니 다음과 같은 메시지가 찍혀있었다. 뒷 문장을 읽어보면, 플레이어 세팅에서 'Strip Engine Code'를 비활성화 시켜봐라 라는데... 일단 Strip Engine Code라는 기능이 무엇인지 몰랐기 때문에 찾아보니 IL2CPP를 사용하면서 iOS에서 빌드 사이즈를 줄이기 위한 기능이었다. (자세한 내용은 여기서 참고) 간단하게 설명하면, 유니티엔진 관련 코드 중 런타임에서는 사용되지 않을 코드들을 제외하고 빌드하는 옵션이다. 만약, 에셋 번들을 이용하여 다이나믹하게 컨텐츠를 다운받게될 경우 게임 빌드..
Script compilation and assembly definition files을 사용해보았다
2018. 8. 5.Unity 2017.3의 새로운 피쳐 중 스크립트 컴파일 및 어셈블리 정의 파일(Script compilation and assembly definition files 이하 SCADF)이라는 것이 생겼습니다. 이 시스템을 도입한 이유는 '유저에게 스크립트가 어셈블리로 컴파일되는 방법을 정의하게 하고, 컴파일 결과물을 분리할 수 있게 만들어 결과적으로 컴파일이 필요한 구획만 컴파일해 컴파일 시간을 줄이고 싶다!'라는 이유입니다. 일단 말로 들었을 때 정말 어썸한 기능입니다. 프로젝트가 커져서 많은 스크립트를 들고 있으면 자연스럽게 컴파일 타임이 늘어나게 됩니다. 이 시스템을 도입하면 컴파일 타임이 줄어들 것이라고 기대됩니다. 흔히 격는 코드 수정 후 유니티 하단에 동글뱅이가 돌아가는 시간이 줄어든다는 것이..
[번역] Unity 2018.2 2D관련 업데이트
2018. 7. 14.Unity 2018.2가 열렸습니다. 여기를 참고해보면 자세한 내용을 확인해 볼 수 있습니다. 지금 2D게임을 만들고 있고, 앞으로도 아마 혼자 개발할때는 2D 위주로 개발하게 될 것 같으니, 2D관련 업데이트 내용만 잠깐 훑어보도록합시다. Pixel Perfect Camera (Preview package) Pixel Perfect 카메라가 프리뷰 패키지로 추가되었습니다. 먼저 원문을 잠깐 읽어봅시다. Try the Pixel Perfect Preview package to stay true to your pixel art vision. The Pixel Perfect Camera component will help you get perfect, crisp pixels – regardless of th..
UniRx Operator 관련 정리
2018. 6. 19.Observable Operator Operator When Description Observable.Return 값을 하나만 발행 Observable.Repeat 값을 반복해서 발행 Observable.Range 지정한 범위의 수치들 발행 Observable.Empty 더미 스트림을 만들어 사용하고 싶을 때 OnCompleted를 즉시 발행하게됨 Observable.EveryUpdate Observable.EveryFixedUpdate (etc...) Life cycle에서 Update 부분의 로직을 작성하고 싶을 때 MainThreadDispatcher에서 코루틴이 돌기 때문에 Life cycle관리 주의! - UpdateAsObservable 을 사용 - 마지막에 AddTo(this.gameObje..
Unity할 때 외워두면 유용한 Mathf 함수들
2018. 6. 17.유니티를 사용하다 보면 숫자를 계산할 때가 많습니다. 이 숫자들을 다룰 때 자주 사용하는 클래스가 Mathf 클래스입니다. 레퍼런스가 잘 되어있다고 하더라도 자주 사용하는 함수들을 외워두면 코드를 작성하는 시간을 크게 줄일 수 있을 것입니다. (무엇보다 구글 켜서 검색하는게 귀찮음...) 그래서 이번에는 알아두면 좋고, 나의 삽질 시간을 줄여줄 수 있는 유용한 Mathf 함수들을 정리해보려고 합니다. 0. 절댓값 Mathf.Abs(float num) Abs은 num에 대한 절댓값을 반환해줍니다. 가끔 데이터의 부호를 때고 계산해야 할 때 편리하게 사용할 수 있습니다. 1. 최대/최솟값 Mathf.Clamp(float num, float min, float max)Mathf.Clamp01(float num..
UniRx 활용하기(1) - Where과 Select 사용하기
2017. 7. 3.저번 포스팅에서는 UniRx가 모든 것을 스트림으로 보는 프로그래밍 방식이고, 스트림을 어떻게 만들고 사용하는지에 대해서 공부했었다. UniRx는 이렇게 만든 스트림을 여러가지 오퍼레이터를 통해 필터링하여 원하는 데이터들만 가지고 원하는 타이밍에 원하는 작업을 수행할 수 있도록 만들 수 있다. 사실 얼마나 이 필터링 작업을 자유롭게 하는지에따라 UniRx를 다루는 실력이 나누어질거라고 생각한다. (물론 나는 초짜) 이번에는 스트림을 필터하는 친구들 중에서도 가장 기본이되는 Where과 Select에 대해서 알아보도록하자. Where조건에 맞는 메세지만 필터링하는 오퍼레이터 무작정 구독한 스트림에서 오는 모든 메세지를 원하는 것은 아닐 것이다. 만약 0~9까지의 숫자들이 넘어 오는 스트림에서 5 이상의 숫..
유니티 Monobehaviour 생명주기(Life cycle)
2017. 6. 28.저번 주에 소프트웨어 마에스트로에서 만난 사람들과 술자리를 가졌었다. 다들 오랜만에 보는 얼굴들이었는데 문득 1단계 때 옆자리였던 형을 보니 '유니티 생명주기'에 대해 알려주면서 트러뷸 슈팅을 도와주었던 기억이 났다. 생각도 다시 한번 정리해볼 겸 간단하게 포스팅해볼 생각이다. 유니티에서 생명주기?유니티에서 자신이 제작한 스크립트의 대부분은 'Monobehaviour'라는 친구를 상속받아 만들어진다. 스크립트를 만들면 자동으로 상속받는 형태이니 유니티의 기본 클래스 형태라고 봐도 좋을 것이다. 이 'Monobehaviour'가 Scene에서 살아가는 일정한 흐름이 있다. 엔진에서 자동으로 호출해주는 함수들인데 이 패턴의 흐름을 모아 '생명 주기(Life cycle)'라고 한다. 일단 그림으로 먼저 알아보..
유니티 Mono Editor대신 VS Code 사용하기
2016. 8. 4.Window에서 유니티(Unity)로 게임을 개발하는 분들은 신의 IDE라고 불리는 Visual Studio로 개발을 하게 되지만 Mac에서는 Visual Studio를 사용할 수 없다. 특히, Unity의 Mono Editor를 사용할 때면 정말 VS가 그리워지는데, 모노가 생각보다 좋은 개발 경험을 주지 않기 때문이다. 대략 단점을 정리해보자면 1. 느리다. 여러가지 기능이 재공되지만 기능에 비해 많이 느리다는 느낌을 준다.2. 잘 죽는다. 왜 크래시가 나는지 모르겠지만, 엄청 자주 죽는다. 이때 오토 세이브가 없었다면....3. UI 커스텀이 제한적이다. UI 테마 커스텀이 너무 제한적이다. (Xcode도 마찬가지...)4. 한글을 쓸 수 없다. 간단하게 주석을 달거나 유니코드 문자열을 간단하게 이..