在做游戏开发时,场景中的三角面和顶点数影响着运行效率,尤其是在手机平台上,实时的知道场景中的各项指标,对性能优化来说至关重要,下面我们来实现一个小功能,来实时计算场景中的三角面和顶点数;

如果要知道场景中的三角面和顶点数,首先我们要得到场景中所有的物体,如下:

GameObject[] ob = FindObjectsOfType(typeof(GameObject)) as GameObject[];

其次,在我们得到的这些Gameobject中,有的含有MeshFilter 有的不含有,我们要得到这些物体中哪些包含MeshFilter,所以:

Component[] filters;filters = obj.GetComponentsInChildren<MeshFilter>();

然后我们再在这些filters中得到每个物体的三角面和顶点数,然后再把他们相加,就是我们所要的知道的场景中所有物体的三角面的顶点总数:

foreach (MeshFilter f in filters){tris += f.sharedMesh.triangles.Length / 3;verts += f.sharedMesh.vertexCount;}

接下来,我们需要把得到的数据显示在前端来供我们查看:

void OnGUI(){string vertsdisplay = verts.ToString("#,##0 verts");GUILayout.Label(vertsdisplay);jiexstring trisdisplay = tris.ToString("#,##0 tris");GUILayout.Label(trisdisplay);}

在场景中运行,如下所示:

源码如下:

using UnityEngine;
using System.Collections;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");GUILayout.Label(vertsdisplay);string trisdisplay = tris.ToString("#,##0 tris");GUILayout.Label(trisdisplay);}// Update is called once per framevoid Update(){if (Time.realtimeSinceStartup > f_LastInterval + f_UpdateInterval){f_LastInterval = Time.realtimeSinceStartup;GetAllObjects();}}
}

好了,这一章就写到这,欢迎大家加入QQ群:280993838  或者关注我的公众号:

转载于:https://www.cnblogs.com/Zander-1349547081/p/6347069.html

Unity3D中如何计算场景中的三角面和顶点数相关推荐

  1. 3D场景中选取场景中的物体。

    杨航最近在学Unity3D 在一些经典的游戏中,需要玩家在一个3D场景中选取场景中的物体.例如<仙剑奇侠传>,选择要攻击的敌人时.为我方角色增加血量.为我方角色添加状态,通常我们使 ...

  2. 移动场景在其缩略图中显示场景中所显示的区域

    需求描述 在场景中实现拖动,缩放,并在场景的缩略图中显示其对应在视口中显示的矩形区域. 程序效果图如下: 开发环境:Qt 5.13.1 编译环境:MinGW64 项目结构: 直接上程序: main.c ...

  3. unity3d如何获知场景中需要加载的数据_游戏中遮挡剔除方案总结

    这是侑虎科技第507篇文章,感谢作者FrankZhou供稿.欢迎转发分享,未经作者授权请勿转载.如果您有任何独到的见解或者发现也欢迎联系我们,一起探讨.(QQ群:793972859) 作者主页:htt ...

  4. hive中如何计算字符串中表达式

    比如 select ' 1+(2-3)+(-4.1-3.1)-(4-3)-(-3.3+4.3)-1 ' col ,1+(2-3)+(-4.1-3.1)-(4-3)-(-3.3+4.3)-1 resul ...

  5. [Unity3D]Unity3D游戏开发之在3D场景中选择物体并显示轮廓效果

    大家好,我是秦元培.我参加了CSDN2014博客之星的评选,欢迎大家为我投票,同时希望在新的一年里大家能继续支持我的博客! 大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn. ...

  6. AR识别场景中UI被挡住的问题

    在Unity利用高通SDK制作场景的过程中 在场景中的ImageTarget中添加了一个模型  之后在场景的识别过程中 模型显示出来后会挡住UI 即UI是先生成然后再生成模型 所以模型会挡住ui 但是 ...

  7. 解析OBJ模型并将其加载到Unity3D场景中

    版权声明:本文由秦元培创作和发表,采用署名(BY)-非商业性使用(NC)-相同方式共享(SA)国际许可协议进行许可,转载请注明作者及出处,本文作者为秦元培,本文标题为解析OBJ模型并将其加载到Unit ...

  8. Unity3D中关于场景销毁时事件调用顺序的一点记录

    先说一下我遇到的问题,我弄了一个对象池管理多个对象,对象池绑定在一个GameObject上,每个对象在OnBecameInvisible时会进行回收(即移出屏幕就回收),但是当场景切换或停止运行程序时 ...

  9. Maya中的场景与Unity3D中的场景匹配

    我公司多是把Maya做的东西输出成视频,然后在正式使用的时候用播放器播放,但如果想要在每次播放的时候加上不同的效果,比如在视频里的某物体上加上文字,这样都要再重新输出一遍,相当费时. 解决办法是用Un ...

最新文章

  1. Linux 终端命令行提示符的艺术--PS1进阶
  2. Python matplotlib可视化:用Matplotlib的bar_label函数自定义条形图的数值标签、用Matplotlib的bar_label函数为条形图添加数值标记(在每一个条形的中部)
  3. CF1009F-Dominant Indices【长链剖分】
  4. [Leetcode][第24题][JAVA][两两交还的链表中的节点][递归][三指针]
  5. cass或cad里提取点坐标及高程的插件_一个坐标计算小程序 EXCEL 可以进行抵偿任意带高斯坐标转换...
  6. devc运行不出窗口_足不出户“云出庭”?沾化“智慧检务”让法律监督“不打烊...
  7. (第二章)mysql创建数据库
  8. 投资大鳄摩根士丹利成Accellion FTA 服务器被黑事件的又一个受害者
  9. php mysql插入多个列_php mysql插入多条记录
  10. 098 元类(metaclass)
  11. Note that ‘/home/w/.local/share‘ is not in the search pathset by the XDG_DATA_HOME and XDG_DATA_DIRS
  12. 批量word转pdf——VBS脚本,在office宏中运行即可
  13. Elasticsearch:InteliJ Elasticsearch plugin 集成
  14. win7音量图标不见了 点显示它图标和通知 提示但前未处于活动
  15. future java get_关于 Future get方法的疑问
  16. 电影点评系统论文java_java电影在线定制影评管理系统
  17. 苹果宣布推出新的Mac Mini和MacBook Pro与M2 Pro和M2 Max
  18. python做工控机_「上位机软件」工控机上位机软件的开发历程(一) - seo实验室...
  19. Windows 计算机上查看 DNS 缓存的方法
  20. RabbitMQ从入门到实践

热门文章

  1. 【工具】ApkTools
  2. 图片加载利器Picasso 解析
  3. Android性能优化典范笔记(1)-GPU绘制性能优化
  4. Swfit Array 遍历 map flatMap filter reduce
  5. Flutter开发使用PlatformView显示iOS原生View(50)
  6. iOS安全之二次封装AFN并设置请求头/执行HTTPS加强安全
  7. (iOS-框架封装)iOS设计模式——MVC模式
  8. 如何设计网站权限系统(转载)
  9. linux文件属性文文件类型知识
  10. 屏蔽firefox浏览器连接失败页面的广告