2016-07-04 150 views
1

所以我已經問過這個問題上的統一論壇,但沒有幫助我很多:/。今天,我決定讓朋友試試我的遊戲,所以基本上我創建了一臺服務器,以便其他客戶/朋友可以連接到它。在玩了我的遊戲大約20分鐘後,我迅速檢查了任務管理器,並且我的遊戲使用了大約3.5 GB的RAM! PHOTO HERE當我看着日誌,說什麼這樣的:Unity-獨立籌建耗盡內存

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。遊戲運行時,每秒RAM大約需要3MB。我在Internet上發現了關於Resources.UnloadUnusedAssets的一些信息,但我不知道如何編寫這樣的腳本!我知道如何在C#中編寫,但只有像GUI,Newtorkinf,Physics等簡單的腳本。我也從kickasstorrent下載了統一的專業版,只能看到Profiler窗口,但這完全沒有幫助我

非常感謝任何回覆! 另外,如果你想查看遊戲並看看發生了什麼:http://gamejolt.com/games/thuglifealpha/61660

再次感謝! :)

+0

這個問題將很難解決,因爲它看起來像只有弄清楚發生了什麼事情是我們看到的源代碼。在您的代碼中查找數組。像'myclass = new Myclass [10];'在更新循環中。在「開始」功能中執行一次,然後重新使用它。你是從很多腳本做'myclass = new Myclass()'嗎?你是否通過附加腳本來實例化GameObjects?如果是這樣,停下來學習對象池。用'foreach'循環遍歷'List'?改爲使用'for'循環。還有許多其他可能的問題。沒有代碼,很難提供幫助。 – Programmer

+0

我真的不明白你的意思:myclass = new Myclass對不起,我很抱歉。但我只用了一年的統一,所以我還是初學者。但我發現,使用方法(已經提到)卸載紋理和資產一些人,但我無法找到任何腳本到,我不知道該怎麼做,你瞭解這寫這些類型的腳本?而且我也有一個腳本,大概有3500行,我試圖刪除這個腳本並構建遊戲,但RAM仍在增長。我將所有紋理的大小從1024更改爲256像素,但仍然沒有結果。老版本的遊戲工作正常。 –

+0

Unity 5免費版本的功能與Pro的所有功能非常相似,因此您可以免費使用分析器。添加探查內存選項卡的一些截圖(點擊需要的內存快照太) – mgear

回答

0

沒有看到你的代碼是很難找到確切的問題。但是我應該從查找實例化/銷燬新對象的代碼開始。它會導致GC收集未使用的對象並分配新的內存。很快你的空閒內存變得如此碎片化,以至於沒有合適的內存空間來分配新的對象。

我強烈建議閱讀有關優化文章團結