Created
November 23, 2016 23:22
-
-
Save kalineh/c6ef1b2fcb0bc7f7db7a900c30a3c3a6 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using UnityEngine; | |
using System.Collections; | |
using System.Collections.Generic; | |
[DisallowMultipleComponent] | |
public class StaticBatchingHelper | |
: MonoBehaviour | |
{ | |
public void Update() | |
{ | |
var renderers = GetComponentsInChildren<MeshRenderer>(); | |
var materials = new Dictionary<Material, List<GameObject>>(); | |
foreach (var renderer in renderers) | |
{ | |
if (renderer.sharedMaterials != null && renderer.sharedMaterials.Length > 1) | |
continue; | |
var material = renderer.sharedMaterial; | |
if (!materials.ContainsKey(material)) | |
materials.Add(material, new List<GameObject>()); | |
materials[material].Add(renderer.gameObject); | |
} | |
foreach (var kv in materials) | |
{ | |
var material = kv.Key; | |
var objs = kv.Value; | |
var staticBatchRoot = new GameObject(string.Format("StaticCombine [{0}]", kv.Key.name)); | |
staticBatchRoot.transform.SetParent(transform, false); | |
StaticBatchingUtility.Combine(objs.ToArray(), staticBatchRoot); | |
#if UNITY_EDITOR | |
Debug.LogFormat("Batching {0} items to {1}", objs.Count, kv.Key.name); | |
#endif | |
} | |
enabled = false; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment