2016-07-04 2 views
1

이미 유니티 포럼에서이 질문을했지만 그다지 도움이되지 않았습니다. /. 오늘은 친구들과 게임을하기로 결정 했으므로 다른 클라이언트/친구가 서버에 연결할 수 있도록 서버를 만들었습니다. 내 게임을 약 20 분간 실행 한 후 충돌이 발생했고 작업 관리자가 빠르게 확인되었고 게임에 약 3.5GB의 RAM이 사용되었습니다!유니티 - 메모리가 부족한 독립 실행 형 빌드

Unity Player [version: Unity 4.6.1f1_d1db7a1b5196] 

mono.dll caused an Access Violation (0xc0000005) 
    in module mono.dll at 0023:101071a1. 

Error occurred at 2016-07-04_163050. 
C:\Users\Cooler Master\Desktop\TL\TL.exe, run by Cooler Master. 
77% memory in use. 
0 MB physical memory [1814 MB free]. 
0 MB paging file [1039 MB free]. 
0 MB user address space [68 MB free]. 
Write to location 00000000 caused an access violation. 

그래서 내 게임에 내 RAM을 먹고 계속 무언가가 : 나는 로그 보았을 때 PHOTO HERE는이 같은 것이 말했다. 게임이 실행 중일 때 램당 초당 약 3MB가 필요합니다. Resources.UnloadUnusedAssets에 대한 인터넷 정보를 찾았지만 그런 스크립트 작성법을 모르겠습니다! 나는 C#을 작성하는 방법을 알고 있었지만 GUI, Newtorkinf, Physics 등의 쉬운 스크립트 만 작성했다. 또한 프로파일 러 창을보기 위해 kickasstorrent에서 단결 프로를 다운로드했으나 전혀 도움이되지 않았다.

대단히 감사합니다. 어떤 답장! 게임을 체크 아웃하고 무슨 일이 일어나고 있는지 확인하려는 경우 : http://gamejolt.com/games/thuglifealpha/61660

다시 한번 감사드립니다! :)

+0

에 대한 최적화에 대한 기사를 읽을 것을 권장합니다. 코드에서 배열을 찾습니다. 업데이트 루프에서'myclass = new Myclass [10];과 같은 것입니다. 'Start' 함수에서 한 번 실행 한 다음 다시 사용하십시오. 많은 스크립트에서'myclass = new Myclass()'를하고 있습니까? GameObjects에 스크립트가 첨부되어 인스턴스화하고 있습니까? 그렇다면 객체 풀링을 중지하고 배우십시오. 'foreach' 루프로'List'를 반복할까요? 대신'for '루프를 사용하십시오. 가능한 많은 다른 문제가 있습니다. 코드가 없으면 도움이되지 않습니다. – Programmer

+0

나는 당신이 의미하는 것을 정말로 얻지 못한다 : myclass = new Myclass 멍청한 것에 대해 유감스럽게 생각한다. 하지만 나는 1 년 동안 단결을 사용하고 있기 때문에 아직 초보자입니다. 하지만 일부 사람들은 메서드 (이미 언급 한) 언로드 텍스처 및 자산을 사용하지만 그 스크립트를 찾을 수 없다는 것을 알았습니다. 그리고 이런 종류의 스크립트를 작성하는 방법을 모릅니다. 이것에 대해 알고 있습니까? 또한 나는 약 3500 줄의 스크립트를 하나 가지고 있는데 그 스크립트를 지우고 게임을 만들려고했지만 RAM은 여전히 ​​올라 갔다. 모든 텍스처의 크기를 1024에서 256px로 변경했지만 여전히 결과가 없습니다. 이전 버전의 게임이 정상적으로 작동합니다. –

+0

Unity 5 무료 버전은 프로와 같은 모든 기능을 제공하므로 무료로 프로파일 러를 사용할 수 있습니다. 프로파일 러 메모리 탭의 일부 스크린 샷을 추가하십시오. (클릭하면 메모리 스냅 샷이 나타납니다.) – mgear

답변

0

코드를 보지 않으면 정확한 문제를 찾기가 어렵습니다. 하지만 새로운 객체가 인스턴스화되거나 파괴되는 코드를 찾는 것으로부터 시작해야합니다. GC는 사용하지 않는 객체를 수집하고 새로운 메모리를 할당합니다. 그리고 곧 여유 메모리가 조각 나게되어 새로운 객체를 할당하기위한 적절한 메모리 영역이 없게됩니다.

난 강력하게이 문제는 우리가 소스 코드를 볼 수 있도록 무슨 일인지 알아 내기 위해 유일한 모양 때문에 해결하기 힘들 것 유니티