using System.Collections; using System.Collections.Generic; using UnityEngine; public class FunctionSync_Material : OneValueSyncObject { Renderer renderer; /// <summary> /// MeshRender上材质球索引 /// </summary> public int materialIndex = 0; Dictionary<string, Material> matDic = new Dictionary<string, Material>(); private void Start() { Init(); } public void Init() { if (!hasInit) { renderer = GetComponent<Renderer>(); InitDynamic("Material_" + gameObject.name, CallBack, ValueType.String); } } /// <summary> /// 设置材质 /// </summary> /// <param name="ResourcePath">Resource文件下加载路径</param> public void SetMaterial(string ResourcePath) { if(!matDic.ContainsKey(ResourcePath)) { Material m = Resources.Load<Material>(ResourcePath); matDic.Add(ResourcePath, m); } renderer.materials[materialIndex].CopyPropertiesFromMaterial(matDic[ResourcePath]); mystring = ResourcePath; SendSync(); } /// <summary> /// 回调 /// </summary> /// <param name="id"></param> public void CallBack(string id, bool isEnterRoom) { if (!matDic.ContainsKey(mystring)) { Material m = Resources.Load<Material>(mystring); matDic.Add(mystring, m); } renderer.materials[materialIndex].CopyPropertiesFromMaterial(matDic[mystring]); } }