본문 바로가기

Unity

(43)
IL2CPP 에셋번들이 안읽혀 질때에.. 구글 플레이 스토어가 64비트만을 지원하게 되면서 Unity Android빌드시 IL2CPP채크와 ARM64지원을 채크 하게 되는데 이때에 로드한 에셋번들을 Instantiate하면 터지는 이슈가 발생되는 경우가 있다. il2cpp관련해서 뭔가 문제가 있었을땐 strip engine code가 체크되어 있는 경우가 많다. 해당 옵션은 빌드 당시에 사용하지 않는 스크립트는 포함하지 않음인데... 에셋번들에서 사용한 스크립트가 빌드당시에 포함되지 않는 경우가 발생되기 때문이다.
이미지 캐싱 (캐싱파일만들기) 서버에 있는 이미지는 그때그때 다운받아 쓰면 당연히도 로딩시간이 발생된다. Assetbundle의 경우 캐시로 저장할 수 있지만 그 밖의 에셋들은 그러한 방식이 불가하다. 물론 모든 리소스들을 Assetbundle화 해도 되지만, 디바이스에 해당 Data를 저장하고, 불러와서 사용하도록 할 수 있다. 이때 쓸 수 있는 방식이 이미지캐싱이라는 방식이며, 몇가지 고려사항이 있다. 1. 다음을 Using해줘야 한다. 더보기 using System.IO; using System; 2. 이미 파일이 저장되어 있는지 확인을 해야 한다. 1) 파일저장은 해당 경로가 있는지 여부로 확인한다. 더보기 File.Exists함수로 파일의 존재 여부를 알 수 있다. File.Exists("경로/파일명.확장자") 반환은 Tru..
콘텐츠 초기화 콘텐츠를 제작하다보면, 하이어라키 구조로 콘텐츠의 단계를 구분하는 경우가 매우 많다. 현재 진행중인 단계에서 다른 단계로 이동시, 현재 단계의 상태를 유지 하는 것은 매우 쉽다. (그냥 놔두면 되니까) 문제는 다른 단계로 이동시, 초기화가 필요한 경우가 종종 있다. 해당 단계의 루트 게임오브젝트가 시작(Start)될 때에 Child게임오브젝트들의 모든 Active상태의 초기화 값을 별도로 저장해 놓는 두개의 구조체를 만들어 쓰는데 다음과 같다. [Serializable]public struct DefaultSetting{ public ObjectUnit[] UnitObjects; public void ResetAllUnitSetting() { foreach (var item in UnitObjects) ..
코루틴 : 유니티 게임 오브젝트가 사라질 경우 유니티에서 코루틴은 StartCoroutine(코루틴)으로 시작하는데, 이때 StartCoroutine은 MonoBehaviour에서 상속 받는다. 그리고, 해당 MonoBehaviour가 사라지거나 꺼져서 작동하지 않게 될 경우에는, 해당 인스턴스가 사라져서, 코루틴은 중도에 터지게 된다. 이러한 부분을 해결할 수 있는 방법이 하나 있는데 바로 다른 MonoBehaviour에서 코루틴을 실행해 주는 방법이다. 이렇게 될 경우, 코루틴을 실행해주는 MonoBehaviour에 해당 코루틴이 인스턴스되어(참조가 아니라 인스턴스 된다. 그렇기에 코루틴이 돌고 있는 게임오브젝트가 destory되더라도 코루틴은) 정상 작동된다. 추천하는 방법은 : ContentManager.instance.StartCorouti..
Unity Android 빌드 오류 : Manifast error Error: [Temp\StagingArea\AndroidManifest-main.xml:23, E:\NewDayX\WatchRemember_flip\UnityProject\Final\Temp\StagingArea\android-libraries\unityads\AndroidManifest.xml:10] Trying to merge incompatible /manifest/uses-permission[@name=android.permission.WRITE_EXTERNAL_STORAGE] element: 유니티에서 빌드할때 위와 같은 메세지가 나타날때는 매니페스트 파일을 모두 확인해야한다.권한 같은 부분이 동시에 다른곳에서 쓰여질때 다른값을 설정하면 충돌이 일어난다. 출처: http://bluwinter...
Everyplay manifast 셋팅 Vuforia를 녹화하기 위한 Everypaly 셋팅에서 Android enabled 를 체크할경우Vufoia Manifast와 Everyplay manifast의 충돌이 발생됩니다. 다음과 같이 Everyplay minifast 수정으로 해결할 수 있습니다.
유니티 실행시 인자 받아오기. public string[] arguments; private void Awake() { arguments = Environment.GetCommandLineArgs(); } public void Start() { debug.Log(arguments[1].ToString()); } 1번 배열부터 저장된다. 0번 배열은 실행된 파일명과 경로가 저장된다.
다른 응용프로그램 실행 및 종료 using System.Diagnostics; [실행]Process.Start("Program_Name"); [종료] foreach (Process Process in Process.GetProcesses()) { if (Process.ProcessName.StartsWith("Program_Name")) { Process.Kill(); } }