Skip to content

Instantly share code, notes, and snippets.

@TheLouisHong
Created July 24, 2016 13:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save TheLouisHong/cadb84af3150a707b47f7c9c9a2dce6a to your computer and use it in GitHub Desktop.
Save TheLouisHong/cadb84af3150a707b47f7c9c9a2dce6a to your computer and use it in GitHub Desktop.
Modifying Material.sharedMaterial will change the .mat file. Add this script to any object you don't want this to happen to.
using UnityEngine;
using System.Collections;
using Vexe.Runtime.Extensions;
using MaterialCache = System.Collections.Generic.Dictionary<UnityEngine.Material, UnityEngine.Material>;
public class SharedMaterialReinstantiater : MonoBehaviour {
private static readonly MaterialCache _cache = new MaterialCache();
void Awake() {
var renderer1 = GetComponent<Renderer>();
Material cachedMat;
if (!_cache.TryGetValue(renderer1.sharedMaterial, out cachedMat)) {
cachedMat = new Material(renderer1.sharedMaterial);
Debug.Log("Found new material " + renderer1.sharedMaterial.name);
_cache.Add(renderer1.sharedMaterial, cachedMat);
}
renderer1.sharedMaterial = cachedMat;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment