전부 감상
RuntimeInitializeOnLoadMethod 실행순서
1. [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)] 2. [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterAssembliesLoaded)] 3. [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSplashScreen)] 4. [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] 5. Awake() 6. [RuntimeInitializeOnLoadMethod] 7. [RuntimeInitializeOnLo..
[RuntimeInitializeOnLoadMethod] 어트리뷰트의 함수가 여러개일때 실행순서
[RuntimeInitializeOnLoadMethod] static void AAA() { Debug.Log("AAA"); } [RuntimeInitializeOnLoadMethod] static void BBB() { Debug.Log("BBB"); } //출력 AAA BBB [RuntimeInitializeOnLoadMethod] 함수가 여러개일때는 함수명의 알파벳 순서대로 실행된다
Unity 새로운 버전 설치 후 빌드 에러
android sdk command-line tools component is not found. make sure "command-line tools (latest)" is installed in the sdk manager. Unity2020.3.24f1을 설치한 후 위와 같은 에러가 나면서 빌드가 되지 않았다. 2020.3.13f1의 c:\Program Files\Unity\Hub\Editor\2020.3.13f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\tools 폴더를 통째로 복사해서 2020.3.24f1 폴더에 넣었더니 정상적으로 빌드가 실행됐다.
Il2CppDumper와 ghidra로 유니티 il2cpp빌드 분석하기
준비물 Il2CppDumper - https://github.com/Perfare/Il2CppDumper dnspy - https://github.com/0xd4d/dnSpy GitHub - dnSpy/dnSpy: .NET debugger and assembly editor .NET debugger and assembly editor. Contribute to dnSpy/dnSpy development by creating an account on GitHub. github.com ghidra - https://ghidra-sre.org/ 분석과정 il2cpp로 apk빌드하여 apk 준비 apk를 압축해제 Il2CppDumper를 이용해서 압축해제한 폴더의 lib\arm64-v8a\libil2cpp.so..
SpriteAtlas의 Include in Build
Include in Build 체크 SpriteAtlas의 A스프라이트가 Image / SpriteRenderer에 바인딩되어 있다면 화면에 잘 나온다. 메모리에도 바로 할당된다. Include in Build 체크 해제 SpriteAtlas의 A스프라이트가 Image / SpriteRenderer에 바인딩되어 있어도 화면에 나오지 않는다. 메모리에도 할당되지 않는다. SpriteAtlas.GetSprite를 통해 늦은 바인딩을 해야한다. (이때 메모리에 할당하게 된다) docs.unity3d.com/kr/2018.4/Manual/LateBinding.html 참고 위 링크의 예시에는 public 필드에 할당해서 쓰라고 되어있지만, 그렇게 되면 메모리에 바로 할당된다. 그러므로 메모리 할당을 바로 하지 ..
Texture의 메모리 할당
1. SpriteAtlas가 Max Texture Size를 넘어가게 되면 자동으로 여러장으로 분리가 된다. 첫번째 문제는 Atlas를 유니티가 자동으로 묶기 때문에 드로우콜 관리가 안된다. 두번째 문제는 분리된 여러개의 Atlas중 1개의 이미지만 사용해도 모든 Atlas를 메모리에 올려버린다. 그러므로 Max Texture Size가 넘어가지 않게 잘 분리하는 것이 좋다. 2. 레퍼런스만 걸려있어도 Atlas가 메모리에 올라간다. 아래 그림처럼 Lobby 게임오브젝트에 New Prefab이 바인딩되어있고 New Prefab에는 107_a라는 Sprite가 바인딩 되어있다. New Prefab은 아직 Instantiate를 하지 않았지만 레퍼런스가 걸려있어도 107_a가 속한 Atlas가 메모리에 할당..
Android와 Unity Profiler연결 안될 때 수동으로 연결하기
1. cmd에서 다음과 같이 입력. adb forward tcp:34999 localabstract:Unity-{앱id} 2. AndroidPlayer 선택.