前言
今天要推薦的是 UniMeshCombiner,一款專為 Unity 開發者設計的高效網格合併工具,能夠將場景中大量的 Mesh 結構合併成單一物件,藉此大幅減少 Draw Call 數量,優化遊戲效能!
無論是【大型場景的建模】、【角色配件整合】,還是動態物件的效能調整,UniMeshCombiner 都能提供【穩定】又【靈活】的解決方案。
如果你曾因場景中物件過多導致【FPS 驟降】或【效能瓶頸】,那麼 UniMeshCombiner 將會是你不可或缺的效能優化利器!

Unity UniMeshCombiner 插件介紹
UniMeshCombiner 的核心理念,是透過合併【Mesh】與【材質】,有效降低 Unity 引擎在渲染過程中的資源消耗。
與傳統手動合併不同,UniMeshCombiner 提供【更直觀的介面】與【自動化流程】,開發者只需簡單操作,即可快速完成場景優化。
同時,插件支援多種使用模式,包含【靜態物件合併】與【動態合併】,並能靈活控制合併後的材質設定,避免因合併而犧牲【畫質】或【特效表現】。

功能特色
- 靈活的控制功能
支援選擇性合併,可針對場景中指定【物件】或【群組】進行優化,並且提供【自動材質合併】與【UV 調整】,確保【合併後的效果】與【原始畫面】一致。 - 智能化設計與高效工作流
內建直觀的編輯器工具,讓開發者能以可視化方式調整合併設定,且與 Unity 的【Prefab】、【LOD】系統高度相容,避免破壞現有工作流。 - 高效性能與穩定性
大幅減少 Draw Call 數量,有效提升【FPS】與【整體渲染效率】,適用於【大型場景】或【行動裝置專案】,確保遊戲在多平台都能穩定運行。
適用場景
- 大型場景優化
在【開放世界】或【室內外場景】中,快速合併靜態物件,減輕 GPU 負擔。 - 角色與配件整合
將角色不需更換的配件,如【盔甲】、【裝飾物】合併為單一 Mesh,降低 Draw Call,【減輕渲染壓力】並【保持外觀一致】。 - 行動裝置遊戲
對於硬體效能有限的【手機】與【平板】遊戲,能顯著改善效能流暢度。

Unity UniMeshCombiner 插件下載安裝
- Github 網址:UniMeshCombiner
- Gitee 網址:UniMeshCombiner

下載 unitypackage 包,導入專案裡即可。
這個插件其實很簡單,總共只有一個腳本。

using System.Collections.Generic;
using System.IO;
using UnityEditor;
using UnityEngine;
namespace UniMeshCombiner
{
public class UniMeshCombinerWindow : EditorWindow
{ private DefaultAsset _exportDirectory = null;
private GameObject _combineTarget = null;
private bool _exportMesh;
[MenuItem("Window/UniMeshCombiner")]
static void Open()
{
GetWindow<UniMeshCombinerWindow>("UniMeshCombiner").Show();
}
void OnGUI()
{
_combineTarget =
(GameObject)EditorGUILayout.ObjectField("CombineTarget", _combineTarget, typeof(GameObject), true);
_exportMesh = EditorGUILayout.Toggle("Export Mesh", _exportMesh);
_exportDirectory = (DefaultAsset) EditorGUILayout.ObjectField("Export Directory", _exportDirectory, typeof(DefaultAsset), true);
if (GUILayout.Button("Combine"))
{
if (_combineTarget == null)
{
return;
}
CombineMesh();
}
}
void CombineMesh()
{
var meshFilters = _combineTarget.GetComponentsInChildren<MeshFilter>();
var combineMeshInstanceDictionary = new Dictionary<Material, List<CombineInstance>>();
foreach (var meshFilter in meshFilters)
{
var mesh = meshFilter.sharedMesh;
var vertices = new List<Vector3>();
var materials = meshFilter.GetComponent<Renderer>().sharedMaterials;
var subMeshCount = meshFilter.sharedMesh.subMeshCount;
mesh.GetVertices(vertices);
for (var i = 0; i < subMeshCount; i++)
{
var material = materials[i];
var triangles = new List<int>();
mesh.GetTriangles(triangles, i);
var newMesh = new Mesh
{
vertices = vertices.ToArray(), triangles = triangles.ToArray(), uv = mesh.uv, normals = mesh.normals
};
if (!combineMeshInstanceDictionary.ContainsKey(material))
{
combineMeshInstanceDictionary.Add(material, new List<CombineInstance>());
}
var combineInstance = new CombineInstance
{transform = meshFilter.transform.localToWorldMatrix, mesh = newMesh};
combineMeshInstanceDictionary[material].Add(combineInstance);
}
}
_combineTarget.SetActive(false);
foreach (var kvp in combineMeshInstanceDictionary)
{
var newObject = new GameObject(kvp.Key.name);
var meshRenderer = newObject.AddComponent<MeshRenderer>();
var meshFilter = newObject.AddComponent<MeshFilter>();
meshRenderer.material = kvp.Key;
var mesh = new Mesh();
mesh.CombineMeshes(kvp.Value.ToArray());
Unwrapping.GenerateSecondaryUVSet(mesh);
meshFilter.sharedMesh = mesh;
newObject.transform.parent = _combineTarget.transform.parent;
if (!_exportMesh || _exportDirectory == null)
{
continue;
}
ExportMesh(mesh, kvp.Key.name);
}
}
void ExportMesh(Mesh mesh, string fileName)
{
var exportDirectoryPath = AssetDatabase.GetAssetPath(_exportDirectory);
if (Path.GetExtension(fileName) != ".asset")
{
fileName += ".asset";
}
var exportPath = Path.Combine(exportDirectoryPath, fileName);
AssetDatabase.CreateAsset(mesh, exportPath);
}
}
}
Unity UniMeshCombiner 使用實例
導入模型
我們隨便在 Unity 的商店,導入一輛車的模型:Modern Cartoon Car Ferruccio。

可以看到,模型是由幾個部分組成的。

選擇 Windo -> UniMeshCombiner 以開啟 UniMeshCombiner 窗口


將前面的車模型設定為 Combine Target Filed (合併目標),如果要匯出網格資產,請選取 Export Mesh Toggle 和 Select Directory,最後按下Combie 按鈕!

結果,可以看到車子從多個部分合成了 3 個部分。

那為什麼是 3 個部分呢?因為 UniMeshCombiner 是依材質合併網格,我們的模型有 3 個材質。

Unity UniMeshCombiner 網格合併大師相關網站 & 插件下載點
【UniMeshCombiner】
Github 網址:UniMeshCombiner
Gitee 網址:UniMeshCombiner
————————————————
更多好用插件:【Unity 好用插件推薦】持續更新,一起讓遊戲開發事半功倍!
本文原創(或整理)於亞洲電玩通,未經作者與本站同意不得隨意引用、轉載、改編或截錄。
特約作家簡介
支持贊助 / DONATE
亞洲電玩通只是很小的力量,但仍希望為復甦台灣遊戲研發貢獻一點動能,如果您喜歡亞洲電玩通的文章,或是覺得它們對您有幫助,歡迎給予一些支持鼓勵,不論是按讚追蹤或是贊助,讓亞洲電玩通持續產出,感謝。
BTC |
![]() |
bc1psp8nnerlepv56nyfha6mqwnp3yr7qqjdw44c6qt5lx5r2urma7fqykxvwj |
|
ETH |
![]() |
0xB2231557bc418201922DD7C2673ec97E67E35F83 |
|
TRON |
![]() |
TAomNj4L6vMJuaJmbWUdmT1uAWYPf9vDjp |








