作为开发人员,我们经常会遇到美术给的模型面数过多等情况。为了避免返工,可以先做一个简单的游戏性能测试用例。

具体功能如下:

1,生成测试盒子;2,得到游戏中的点面数;3,FPS实时监测

检测点面数的代码如下:

using UnityEngine;
using System.Collections;/// <summary>
/// 计算场景中的顶点与三角面
/// </summary>
public class CalculateVertsAndTris : MonoBehaviour
{public float f_UpdateInterval = 0.5F;  //刷新间隔private float f_LastInterval;      //上一次刷新的时间间隔public static int verts;public static int tris;// Use this for initializationvoid Start(){f_LastInterval = Time.realtimeSinceStartup;}/// <summary>/// 得到场景中所有的GameObject/// </summary>void GetAllObjects(){verts = 0;tris = 0;GameObject[] ob = FindObjectsOfType(typeof(GameObject)) as GameObject[];foreach (GameObject obj in ob){GetAllVertsAndTris(obj);}}//得到三角面和顶点数void GetAllVertsAndTris(GameObject obj){Component[] filters;filters = obj.GetComponentsInChildren<MeshFilter>();foreach (MeshFilter f in filters){tris += f.sharedMesh.triangles.Length / 3;verts += f.sharedMesh.vertexCount;}}void OnGUI(){string vertsdisplay = verts.ToString("#,##0 verts");GUIStyle fontStyle = new GUIStyle();fontStyle.normal.background = null;    //设置背景填充 fontStyle.normal.textColor = GUI.color;   //设置字体颜色  fontStyle.fontSize = 80;       //字体大小  GUI.Label(new Rect(0, 0, 200, 200), "顶点数:" + vertsdisplay, fontStyle);//GUILayout.Label(vertsdisplay);string trisdisplay = tris.ToString("#,##0 tris");GUIStyle fontStyle2 = new GUIStyle();fontStyle2.normal.background = null;    //设置背景填充 fontStyle2.normal.textColor = GUI.color;   //设置字体颜色  fontStyle2.fontSize = 80;       //字体大小  GUI.Label(new Rect(0, 200, 200, 200), "三角面数:" + trisdisplay, fontStyle2);//GUILayout.Label(trisdisplay);}// Update is called once per framevoid Update(){if (Time.realtimeSinceStartup > f_LastInterval + f_UpdateInterval){f_LastInterval = Time.realtimeSinceStartup;GetAllObjects();}}
}

这里引用了这篇博客的代码与思路。

FPS检测工具:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class FPSUtils : MonoBehaviour{public static float f_Fps;public float f_UpdateInterval = 0.5f; //每个0.5秒刷新一次  private float f_LastInterval; //游戏时间  private int i_Frames = 0;//帧数  void Awake(){//Application.targetFrameRate = 30;Application.targetFrameRate = 60;//Time.timeScale=0.2f;}void OnGUI(){if (f_Fps > 50){GUI.color = new Color(0, 1, 0);}else if (f_Fps > 40){GUI.color = new Color(1, 1, 0);}else{GUI.color = new Color(1.0f, 0, 0);}GUIStyle fontStyle = new GUIStyle();fontStyle.normal.background = null;    //设置背景填充 fontStyle.normal.textColor = GUI.color;   //设置字体颜色  fontStyle.fontSize = 80;       //字体大小      GUI.Label(new Rect(0, 600, 200, 200), "FPS:" + f_Fps.ToString("f2"),fontStyle);}void Update(){++i_Frames;if (Time.realtimeSinceStartup > f_LastInterval + f_UpdateInterval){f_Fps = i_Frames / (Time.realtimeSinceStartup - f_LastInterval);i_Frames = 0;f_LastInterval = Time.realtimeSinceStartup;}}
}

简单的AI逻辑与生成为自己写的,测试结果如下:

项目工程已上传到下载链接里面去了。

FPS50左右的真机测试结果:

低端机:29万顶点数,15万三角面

高端机:100万顶点数,50万三角面

补充:

如果用球进行测试的话,算出来的结果不太一样。我们以顶点数为准,这个最好取下中间值。

我们游戏用的是37万顶点,极限值在80万。

一个简单的游戏性能测试用例相关推荐

  1. rust如何在木板上上传图片_通过编写一个简单的游戏来学习 Rust | Linux 中国

    导读:你可以尝试以多种语言编程一个简单的游戏来开始编程之路. 本文字数:4068,阅读时长大约: 5分钟 https://linux.cn/article-12979-1.html 作者:Moshe ...

  2. python编程制作接金币游戏_pygame学习笔记(6):完成一个简单的游戏

    学了这么长时间的Pygame,一直想写个游戏实战一下.看起来很简单的游戏,写其来怎么这么难.最初想写个俄罗斯方块,想了很长时间如何实现,想来想去,也没写出来,于是干脆下载别人的代码来读.后来,要想写一 ...

  3. 本文将引导你使用XNA Game Studio Express一步一步地创建一个简单的游戏

    本文将引导你使用XNA Game Studio Express一步一步地创建一个简单的游戏 第1步: 安装软件 第2步: 创建新项目 第3步: 查看代码 第4步: 加入一个精灵 第5步: 使精灵可以移 ...

  4. 如何制作一个简单的游戏 Cocos2d x 2 0 4

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本文实践 ...

  5. 如何制作一个简单的游戏 Cocos2d-x 2.0.4

    本文实践自 Ray Wenderlich 的文章< How To Make A Simple iPhone Game with Cocos2D 2.X Tutorial>,文中使用Coco ...

  6. 用python 编写一个简单的游戏

    This blog will memory my work and process with the interesting skill. 用python 编写一个简单的游戏 这是一个非常简单的游戏, ...

  7. 游戏编程笔记-起步(一)一个简单的游戏-贪吃蛇

    二 游戏编程起步 1.一个简单的游戏-贪吃蛇 1.贪吃蛇游戏剖析 1)游戏的目标.在不被撞死的前提下,吃掉奖子增加自己的长度,来完成升级. 2)游戏中的物体.蛇,墙壁,奖子. 3)动作.蛇移动,蛇吃奖 ...

  8. 一个简单的游戏源代码

    一个简单的游戏源代码 作者:陈跃峰 出自: http://blog.csdn.net/mailbomb 实现一个简单的翻牌游戏,每次最多翻开两个数字,如果数字相同则消失,否则两个数字不显示,可以继续游 ...

  9. 用python做一个简单的游戏,用python写一个小游戏

    大家好,本文将围绕如何用python做一个简单的小游戏展开说明,python编写的入门简单小游戏是一个很多人都想弄明白的事情,想搞清楚用python做一个简单的游戏需要先了解以下几个事情. 1.Pyt ...

最新文章

  1. 澎思科技成立新加坡研究院,将与多家机构合作研发自动驾驶等项目
  2. php 为什么定义常量,php-将预定义常量定义为什么
  3. python两条曲线图片相似度_Python比较两个图片相似度的方法
  4. code1167 树网的核
  5. 外设驱动库开发笔记22:ADXL345三轴数字加速度计驱动
  6. Quartz Job
  7. 10的几次方 用计算机计算公式,在excel中如何计算10的几次方呢
  8. 运放放大倍数计算公式_运算放大器基本电路大全(转)
  9. 知群产品经理必修TOP班-31期学习笔记
  10. 百度url提交入口 百度网站收录提交入口网址
  11. vue中使用loadsh实现防抖功能及处理各种数据
  12. 美容院前台收银软件用什么好?
  13. php加密的是什么,看看下面这个php代码是使用什么加密的?
  14. python实现RGB转换HSV
  15. 组数(【问题描述】输入一行字符串(设字符数不大于80),提取该字符串中的数字字符并组成一个整数,输出该整数及其两倍的值。)
  16. leetcode剑指offer4
  17. K65 Flex_CAN 匹配过程
  18. 单片机烧录不进去怎么办?通用类!
  19. 开源众包and公安行业的联姻。大项目,久合作。只要你的技术符合。金矿等着你!...
  20. JS数据库:手机处理器列表

热门文章

  1. TextView字体,行距,html格式,超链接,最大长度的设定
  2. 产品读书《极简法则》
  3. 重装系统中涉及的电脑bios常见问题
  4. Autodesk Maya 2023 三维动画建模软件中文正式版安装说明
  5. python中文分词库_jieba分词-强大的Python 中文分词库
  6. 阿里巴巴之高段位程序员的学习之道
  7. 达达季报图解:营收20亿 京东增持交易已完成
  8. java虚拟机架构图,图解快速入门Java虚拟机JVM
  9. C++文件操作详解(ifstream、ofstream、fstream)
  10. Java开发手册七(设计规约)