1. 程式人生 > 實用技巧 >Unity 獲取場景所有的面數,頂點數

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