public void BeginCombineMesh() { if (!this._isCanCombineMesh || _unityArmature.isUGUI) { return; } // this._verticeOffset = 0; this._subSlotCount = 0; this.slotNames.Clear(); // if (this.meshBuffers != null) { for (var i = 0; i < this.meshBuffers.Length; i++) { var meshBuffer = this.meshBuffers[i]; meshBuffer.Dispose(); } this.meshBuffers = null; } List <CombineMeshInfo> combineSlots = new List <CombineMeshInfo>(); // this.CollectMesh(this._unityArmature.armature, combineSlots); // //先合并 this.meshBuffers = new MeshBuffer[combineSlots.Count]; for (var i = 0; i < combineSlots.Count; i++) { var combineSlot = combineSlots[i]; // var proxySlot = combineSlot.proxySlot; MeshBuffer meshBuffer = new MeshBuffer(); meshBuffer.name = proxySlot._meshBuffer.name; meshBuffer.sharedMesh = MeshBuffer.GenerateMesh(); meshBuffer.sharedMesh.Clear(); meshBuffer.CombineMeshes(combineSlot.combines.ToArray()); meshBuffer.vertexDirty = true; // proxySlot._meshFilter.sharedMesh = meshBuffer.sharedMesh; this.meshBuffers[i] = meshBuffer; // this._verticeOffset = 0; for (int j = 0; j < combineSlot.slots.Count; j++) { var slot = combineSlot.slots[j]; slot._isCombineMesh = true; slot._sumMeshIndex = i; slot._verticeOrder = j; slot._verticeOffset = this._verticeOffset; slot._combineMesh = this; slot._meshBuffer.enabled = false; if (slot._renderDisplay != null) { slot._renderDisplay.SetActive(false); slot._renderDisplay.hideFlags = HideFlags.HideInHierarchy; var transform = slot._renderDisplay.transform; transform.localPosition = new Vector3(0.0f, 0.0f, transform.localPosition.z); transform.localEulerAngles = Vector3.zero; transform.localScale = Vector3.one; } // slot._meshDirty = true; slot._transformDirty = true; slot.Update(-1); // meshBuffer.combineSlots.Add(slot); this.slotNames.Add(slot.name); this._verticeOffset += slot._meshBuffer.vertexBuffers.Length; this._subSlotCount++; } //被合并的显示 if (proxySlot._renderDisplay != null) { proxySlot._renderDisplay.SetActive(true); proxySlot._renderDisplay.hideFlags = HideFlags.None; } } }