특정폰에서 2MB가 잡히는데 문제는 유니티 에디터에서 똑같이 해도 프로파일러에 해당 텍스쳐가 2MB가 잡힙니다.
Unity3D/Problems 2016. 1. 8. 03:27일단 제 환경은, Windows 7 64bit, Unity 4.6.9f1이며, 문제는 이렇습니다.
512 X 512 png 텍스쳐를 생성하고 유니티 프로젝트에 임포트 한 후,
Generate mip map을 끄고 모든 옵션을 체크 해제하고 텍스쳐 압축을 Truecolor(RGBA 32 => 비압축)로 바꿉니다.
이 텍스쳐를 화면에 띄우는 간단한 스크립트를 작성하고 빌드후(굳이 띄우지 않아도 되긴합니다. 둘다 해봤습니다.)
1) 갤럭시 노트2에 설치합니다.
2) 갤럭시 노트4에 설치합니다.
1번과 2번의 텍스쳐 메모리가 다르게 잡힙니다.
둘다 실행 후 스마트폰의 '실행앱스'로 앱의 메모리를 살펴보면,
기본 유니티엔진 메모리 외에 1MB가 잡힙니다. 이게 텍스쳐 메모리.
2번은 2MB가 잡힙니다. 딱 2배 입니다.
이론상 512 X 512 X 4byte(32bit) => 1,048,576 byte => 1MB 입니다.
근데 특정폰에서 2MB가 잡히는데 문제는 유니티 에디터에서 똑같이 해도
프로파일러에 해당 텍스쳐가 2MB가 잡힙니다.
그럴리가 없다고, 뭔가 설정이나 테스트 방법이 문제가 있겠지라고 생각하시는 분은
빈 프로젝트를 생성하고
Texture2D m_cachedTex;
void Awake()
{
m_cachedTex = new Texture2D(512, 512, TextureFormat.RGBA32, false);
}
로 해놓고 프로파일러로 봐보시면 저와 똑같은 문제를 보실 수 있을 것입니다.
위 문제로 인해, 더 고성능인 갤럭시 노트4에서 메모리 사용량이 증가되어 구동이 되는 현상이 발생합니다.
혹시 이 문제에 대해 경험이 있으시거나, 해결방법을 아시는 분의 도움이 필요합니다.
도와주세요~~~
(포럼에도 질문은 많으나, 명쾌한 답변의 경우를 찾지 못했습니다.)
http://forum.unity3d.com/…/does-unity-always-use-double-me…/
http://answers.unity3d.com/…/double-texture-memory-usage-ev…
http://answers.unity3d.com/questions/152537/why-does-a-10241024-texture2d-use-so-much-memory.html
Why does a 1024*1024 ARGB32 Texture2D use more than 8MB total memory? I think the correct cost is 4MB (4MB = 1024 1024 32bit / 8 / 1024 / 1024).
I just did a test on Unity3.3 pro. Create an empty project only included a empty scene. Create bellow script:
using UnityEngine;
public class NewBehaviourScript : MonoBehaviour {
public Texture2D tt;
void OnGUI () {
if (GUILayout.Button("Create Texture2D")) {
tt = new Texture2D(1024, 1024, TextureFormat.ARGB32, false);
Resources.UnloadUnusedAssets();
}
}
}
Drag this script to scene.
When I click the button on run time. The profiler of unity display that Textures memory add 4MB but Total memory add more than 8MB.
Here are two screenshots:
Before Create a 1024*1024 ARGB32 Texture2D:
Total: 270.5 MB Delta: 0 B
Texture: 770 / 2.5 MB
Meshes: 26 / 74.9 KB
AnimationClips: 0 / 0 B
Total Object Count: 1134
After Create a 1024*1024 ARGB32 Texture2D:
Total: 279.3 MB Delta: 0 B
Texture: 771 / 6.5 MB
Meshes: 26 / 74.9 KB
AnimationClips: 0 / 0 B
Total Object Count: 1116
'Unity3D > Problems' 카테고리의 다른 글
SQLite3 db svn clean up 실패시... (0) | 2016.01.25 |
---|---|
JsonFX serialize/deserialize (0) | 2016.01.19 |
슬라이딩 도어를 이용하는 케릭터 구현 (0) | 2015.11.11 |
리스트를 전달하다가 값이 날라가는 경우... (0) | 2015.10.23 |
Capturing local variables from Coroutine's for-loop woes (0) | 2015.10.06 |