Re: [請益] Unity 遊戲使用了多少記憶體

作者: chowleft (什麼....)   2015-01-13 20:38:03
※ 引述《Euteamo (Euteamo)》之銘言:
: 嗨 各位先進大家好
: 小弟最近在研究Unity3D,想要在Unity得到系統資訊:
: 例如 : CPU資訊、顯卡資訊、作業系統版本、記憶體大小等等
: 這些都可以很容易可以利用Unity的SystemInfo得到,但是如標題,我想從Unity得到當前這個遊戲的記憶體使用量
: 有試過用.NET的System.Diagnostics.Process裡面的方法,利用PID去取記憶體大小,在Visual Studio的環境可以正確取得,但是在Unity下怎麼取都只會得到"0"
: 也有試過直接用Unity的profiler去取記憶體,只是跟我在工作管理員下看到的記憶體大小有點差距
: 不知道有沒有先進,可以提點一下,為什麼在Unity下取道的都是"0",或是有其他方法可以取到當前遊戲的記憶體使用量?
小弟試著寫了一下....大概像下面這樣子
http://imgur.com/WzJZ9yZ
扣掉Profiler用的記憶體,應該是有對應到實際用量
如果有錯歡迎各位大大指教
程式碼如下所示 (其實我不太喜歡用GUI, 不過隨便啦XD)
public class MemShow : MonoBehaviour
{
public float MonoMemUsage = 0f;
public float UnityMemUsage = 0f;
StringBuilder _str = new StringBuilder();
void Update ()
{
//! Calculate memory usage
MonoMemUsage = System.GC.GetTotalMemory(true) / 1048576f;
UnityMemUsage = Profiler.usedHeapSize / 1048576f;
}
void OnGUI()
{
_str.Length = 0;
_str.Append("Memory Usage : \n");
//! Mono memory allocation
_str.Append(" - Mono : ");
_str.Append(string.Format("{0:0.00}", MonoMemUsage));
_str.Append(" MB\n");
//! Unity memory allocation
_str.Append(" - Unity : ");
_str.Append(string.Format("{0:0.00}", UnityMemUsage));
_str.Append(" MB\n");
//! Draw GUI
GUI.Box(new Rect(10, 10, 160, 70), "");
GUI.Label(new Rect(15, 15, 150, 60), _str.ToString());
}
}
作者: Euteamo (向)   2015-01-14 08:32:00
謝謝你,這招我有試過,要用development build才看的到目前我是在c#中寫一個exe,去抓遊戲的pid抓他的記憶體量然後按一個按鈕,開啟EXE並回傳記憶體量 QQ

Links booklink

Contact Us: admin [ a t ] ucptt.com