60 lines
1.5 KiB
C#
60 lines
1.5 KiB
C#
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]);
|
|
}
|
|
}
|
|
|