Unity 获取场景所有的面数,顶点数

 

不知道场景里多少面,把脚本放进去运行一下即可,方便优化项目 代码如下

 1.获取场景中全部模型的顶点数及面数

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 获取场景的顶点数跟面数  ******************挂在场景上运行即可******************
/// </summary>
public class CeShiMian : MonoBehaviour
{
    public static int verts;
    public static int tris;
    // Use this for initialization
    void Start()
    {      
        GetAllObjects();
    }
    /// <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()
    {
        GUIStyle bb = new GUIStyle();
        bb.normal.background = null;    //这是设置背景填充的
        bb.normal.textColor = new Color(1.0f, 0.5f, 0.0f);   //设置字体颜色的
        bb.fontSize = 40;       //当然,这是字体大小
        string vertsdisplay = verts.ToString("#,##0 verts-顶点数");
        GUILayout.Label(vertsdisplay,bb);
        string trisdisplay = tris.ToString("#,##0 tris-面数");
        GUILayout.Label(trisdisplay,bb);
       
    }
   
}

 2.获取当前模型的面数(你想要看哪个模型的面数就把脚本挂在哪个模型上)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 获取模型的顶点数跟面数  ******************挂在你想要查看的模型上运行即可******************
/// </summary>
public class CeShiMian : MonoBehaviour
{
    public  int verts;
    public  int tris;
    private List<GameObject> sadasd = new List<GameObject>();
   
    // Use this for initialization
    void Start()
    {
        
        foreach (var item in this.GetComponentsInChildren<Transform>())
        {
            sadasd.Add(item.gameObject);
        }      
        GetAllObjects();
    }
   
    void GetAllObjects()
    {                         
        foreach (GameObject obj in sadasd)
        {
            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()
    {
        GUIStyle bb = new GUIStyle();
        bb.normal.background = null;    //这是设置背景填充的
        bb.normal.textColor = new Color(1.0f, 0.5f, 0.0f);   //设置字体颜色的
        bb.fontSize = 40;       //当然,这是字体大小
        string vertsdisplay = verts.ToString("#,##0 verts-顶点数");
        GUILayout.Label(vertsdisplay,bb);
        int aas = verts / 3;
        string trisdisplay = aas.ToString("#,##0 tris-面数");
        GUILayout.Label(trisdisplay,bb);
       
    }
   
}

 

动动你发财的小手,点个赞吧 ,感谢

posted @ 2020-12-23 15:15  剑起苍穹  阅读(4933)  评论(1编辑  收藏  举报
/*鼠标点击特效*/