Unity脚本获取内存和FPS
using System;
using System.Collections.Generic;
using UnityEngine;
public class Debugger : MonoBehaviour
{
void Start()
{
timeleft = updateInterval;
}
void Update()
{
UpdateUsed();
UpdateFPS();
}
//Memory
private string sUserMemory;
private string s;
public bool OnMemoryGUI;
private uint MonoUsedM;
private uint AllMemory;
[Range(0, 100)]
public int MaxMonoUsedM = 50;
[Range(0, 400)]
public int MaxAllMemory = 200;
void UpdateUsed()
{
sUserMemory = "";
MonoUsedM = Profiler.GetMonoUsedSize() / 1000000;
AllMemory = Profiler.GetTotalAllocatedMemory() / 1000000;
sUserMemory += "MonoUsed:" + MonoUsedM + "M" + "\n";
sUserMemory += "AllMemory:" + AllMemory + "M" + "\n";
sUserMemory += "UnUsedReserved:" + Profiler.GetTotalUnusedReservedMemory() / 1000000 + "M" + "\n";
s = "";
s += " MonoHeap:" + Profiler.GetMonoHeapSize() / 1000 + "k";
s += " MonoUsed:" + Profiler.GetMonoUsedSize() / 1000 + "k";
s += " Allocated:" + Profiler.GetTotalAllocatedMemory() / 1000 + "k";
s += " Reserved:" + Profiler.GetTotalReservedMemory() / 1000 + "k";
s += " UnusedReserved:" + Profiler.GetTotalUnusedReservedMemory() / 1000 + "k";
s += " UsedHeap:" + Profiler.usedHeapSize / 1000 + "k";
}
//FPS
float updateInterval = 0.5f;
private float accum = 0.0f;
private float frames = 0;
private float timeleft;
private float fps;
private string FPSAAA;
[Range(0, 150)]
public int MaxFPS;
void UpdateFPS()
{
timeleft -= Time.deltaTime;
accum += Time.timeScale / Time.deltaTime;
++frames;
if (timeleft <= 0.0)
{
fps = accum / frames;
FPSAAA = "FPS: " + fps.ToString("f2");
timeleft = updateInterval;
accum = 0.0f;
frames = 0;
}
}
void OnGUI()
{
if (OnMemoryGUI)
{
GUI.color = new Color(1, 0, 0);
GUI.Label(new Rect(10, 10, 200, 60), sUserMemory);
GUI.Label(new Rect(10, 60, 100, 30), FPSAAA);
if (MonoUsedM > MaxMonoUsedM)
{
GUI.backgroundColor = new Color(1, 0, 0);
GUI.Button(new Rect(0, 0, 1024, 1024), "MonoUsedM Waming!!内存不足");
}
if (AllMemory > MaxAllMemory)
{
GUI.backgroundColor = new Color(1, 0, 1);
GUI.Button(new Rect(0, 0, 1024, 1024), "AllMemory Waming!!内存堪忧");
}
if (fps > MaxFPS)
{
GUI.backgroundColor = new Color(1, 0.4f, 0.5f);
GUI.Button(new Rect(0, 0, 1024, 1024), "FPS Waming!!");
}
}
}
}
Unity脚本获取内存和FPS的更多相关文章
- linux通过脚本获取内存信息
1 原理 脚本中通过执行free获取内存信息,然后将文本信息通过“空格”分隔符分割成字符串数组将不同信息提取出来,最后通过bc计算出百分比 2 脚本 #!/bin/shHOSTNAME=`hostna ...
- Unity中的内存泄漏
在对内存泄漏有一个基本印象之后,我们再来看一下在特定环境——Unity下的内存泄漏.大家都知道,游戏程序由代码和资源两部分组成,Unity下的内存泄漏也主要分为代码侧的泄漏和资源侧的泄漏,当然,资源侧 ...
- 记录特殊情况的Python脚本的内存异常与处理
问题 Python 脚本使用 requests 模块做 HTTP 请求,验证代理 IP 的可用性,速度等. 设定 HTTP 请求的 connect timeout 与 read response ti ...
- 5. Unity脚本的执行顺序
Unity是不支持多线程的,也就是说我们必须要在主线程中操作它,可是Unity可以同时创建很多脚本,并且可以分别绑定在不同的游戏对象身上,他们各自都在执行自己的生命周期感觉像是多线程,并行执行脚本的, ...
- shell脚本实例-内存磁盘使用警告
1,磁盘使用警告并发送邮件 #!usr/bin/bash #df -Th|grep '/$' 这个是获取内存使用的那一条记录 #后面两句是获取内存的使用率 disk=`df -Th|grep '/$' ...
- (转)MOMO的Unity3D研究院之深入理解Unity脚本的执行顺序(六十二)
http://www.xuanyusong.com/archives/2378 Unity是不支持多线程的,也就是说我们必须要在主线程中操作它,可是Unity可以同时创建很多脚本,并且可以分别绑定在不 ...
- 在 shell 脚本获取 ip、数字转换等网络操作
在 shell 脚本获取 ip.数字转换等网络操作 ip 和数字的相互转换 ip转换为数字 :: function ip2num() { local ip=$1 local a=$(echo $ip ...
- Unity 脚本的未来发展
新技术之IL2CPP 最近,我们谈到了Unity 的WebGL . 在那篇文中我们简要谈论到脚本在 WebGL 中的运行的新技术称为"IL2CPP" .然而IL2CPP 所代表的 ...
- Unity脚本在层级面板中的执行顺序测试3
断断续续的写了3篇,以后有时间可以做成一个系列了 前面2篇测试了GameObject的顺序,以及Awake和OnEnable的时机: Unity脚本在层级面板中的执行顺序测试1 http://www. ...
随机推荐
- 第1章 Python基础之字符编码
阅读目录 一.什么是字符编码 二.字符编码分类 三.字符编码转换关系 3.1 程序运行原理 3.2 终极揭秘 3.3 补充 总结 回到顶部 一.什么是字符编码 计算机要想工作必须通电,也就是说'电'驱 ...
- objective-c 加号 减号 - +
“加号代表static”是错误的说法,可能跟你那样表达的人其实意思是:“前置加号的方法相当于Java 里面的静态方法”. 在Oc中,方法分为类方法和实例方法. 前置加号(+)的方法为类方法,这类方法是 ...
- 再看C++引用类型
之前弃用博客园的原因是其不支持markdown语法.到今天偶然进来试了一下,发现Markdown toggle原来是能支持的(不知道是不是因为它升级了),遂重新启用. 在一年前学C++的时候就对引用, ...
- 三星笔记本R428安装xp win7双系统,切换系统重启才能进入系统解决办法。
三星笔记本 XP win7 双系统切换重启解决方法 三星笔记本有个奇怪的现象,就是装有XP和win7双系统 xp切换到win7.进系统是会重启一次,并且bios回复光驱为第一启动项,win7切换 ...
- 刨根问底:对于 self = [super init] 的思考
对象初始化有两种方式:[class new] 与 [[class alloc] init] 对于后者,有分配和初始化的过程,alloc 从应用程序的虚拟地址空间上为该对象分配足够的内存,并且将新对象的 ...
- CDOJ 92 – Journey 【LCA】
[题意]给出一棵树,有n个点(2≤N≤105),每条边有权值,现在打算新修一条路径,给出新路径u的起点v,终点和权值,下面给出Q(1≤Q≤105)个询问(a,b)问如果都按照最短路径走,从a到b节省了 ...
- Day2 - Python基础2 列表、字典、集合
Python之路,Day2 - Python基础2 本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一, ...
- C#—集合(Collection)
1.栈(stack<T>) using System; using System.Collections.Generic; using System.Linq; using System. ...
- Activity中setResult(int resultCode, Intent data)与onActivityResult(int requestCode, int resultCode, Intent data)方法的调用
关于Activity的生命周期 onCreate(Bundle savedInstanceState):可以进行一些初始化的工作在activity第一次被创建的时候调用.这里是你做所有初始化设置的地方 ...
- (多对象)Json转换成List
写的不好,请大家见谅. 1.Json 格式{"packages":[{“type”:”aaa”}],"zone_packages":[{"ticket ...