Skip to content

Instantly share code, notes, and snippets.

@kalineh
Created November 23, 2016 23:22
Show Gist options
  • Save kalineh/c6ef1b2fcb0bc7f7db7a900c30a3c3a6 to your computer and use it in GitHub Desktop.
Save kalineh/c6ef1b2fcb0bc7f7db7a900c30a3c3a6 to your computer and use it in GitHub Desktop.
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