2017-02-20 6 views
1

백그라운드에서 사용자 위치를 추적하는 Unity iOS 애플리케이션을 작성하고 있습니다. 앱이 포 그라운드에서 작동하면 50-60MB의 메모리가 필요하며 백그라운드가되면 모든 데이터가 메모리에 남아 있습니다. 이 상황에서는 응용 프로그램이 몇 초 안에 메모리 문제로 종료됩니다. Resources.UnloadUnusedAssets(); 아무 것도 줄이지 않습니다.iOS 용 Unity는 백그라운드에서 많은 메모리를 사용합니다.

어떻게 백그라운드에서 차지하는 메모리를 줄일 수 있습니까?

답변

1

원하는 동작입니다. 앱이 BG에 들어가면 iOS가 메모리를 확보하기 시작하지 않습니다. 앱의 책임입니다.

메모리 문제에 접근하는 가장 좋은 방법은 앱에서 프로파일 링을 수행하고 메모리가 어디로 이동하는지 확인하는 것입니다. 대부분의 경우 텍스처는 많은 양의 메모리를 차지하므로 크기를 줄이거 나 압축을 사용할 수 있습니다. 당신이 할 수있는 또 다른 일은 텍스쳐를위한 밉 매핑을 끄는 것이지만 2D UI를 위해 텍스쳐를 사용한다면 좋은 시각적 인 결과를 줄 것입니다. 왜냐하면 3D는 좋은 생각이 아닙니다.

Resources.UnloadUnusedAssets()은 미사용 자산이있는 경우에만 작동하며, 아무 효과가없는 슬림 한 변경 사항이 없다면 아무 것도 작동하지 않습니다.

시도 할 수있는 해킹이 하나 있습니다. 빈 장면을 만들고 배경으로 이동할 때 그 장면으로 전환하는 것이 좋습니다. 화면에는 앱이 백그라운드 모드임을 나타내는 2D 텍스처가있을 수 있습니다. 그런 다음 Resources.UnloadUnusedAssets()으로 전화를 걸 수 있습니다. 물론 전경으로 돌아올 때 메인 장면으로 다시 전환 할 수 있습니다.

+0

답변 해 주셔서 감사합니다. 나는 이미 빈 장면을 만드는 것에 대해 생각해 봤는데,이 방법은 꽤 좋아 보인다. –