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