NewN_UAVPlane/Assets/Zion/Scripts/Sync1/FunctionSync_Material.cs

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]);
}
}