Unity 獲取場景所有的面數,頂點數


 

不知道場景里多少面,把腳本放進去運行一下即可,方便優化項目 代碼如下

 

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);
       
    }
   
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM