124 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			124 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C#
		
	
	
	
| using System.Collections;
 | |
| using System.Collections.Generic;
 | |
| using UnityEngine;
 | |
| using System;
 | |
| 
 | |
| public class FunctionSync_MaterialTexture : OneValueSyncObject
 | |
| {
 | |
|     Renderer renderer;
 | |
| 
 | |
|     Dictionary<int, Texture> matDic = new Dictionary<int, Texture>();
 | |
| 
 | |
|     private void Start()
 | |
|     {
 | |
|         Init();
 | |
|     }
 | |
| 
 | |
|     public void Init()
 | |
|     {
 | |
|         if (!hasInit)
 | |
|         {
 | |
|             renderer = GetComponent<Renderer>();
 | |
|             InitDynamic("MaterialTex_" + gameObject.name, CallBack, ValueType.Int);
 | |
|         }
 | |
|     }
 | |
|     /// <summary>
 | |
|     /// 设置材质
 | |
|     /// </summary>
 | |
|     /// <param name="ResourcePath">Resource文件下加载路径</param>
 | |
|     public void SetMaterial(int num)
 | |
|     {
 | |
|         if(num<0)
 | |
|         {
 | |
|             return;
 | |
|         }
 | |
|         else if(num>0)
 | |
|         {
 | |
| 
 | |
|         }
 | |
| 
 | |
|         myint = num;
 | |
|         SendSync();
 | |
|         if (num == 0)
 | |
|         {
 | |
|             //关闭
 | |
|             renderer.material.mainTexture = null;
 | |
|         }
 | |
|         else
 | |
|         {
 | |
|             if (!matDic.ContainsKey(num))
 | |
|             {
 | |
|                 //StartCoroutine(GetTexture(num, MediaPanel.instance.dicPicture[num].url, a =>
 | |
|                 //{
 | |
|                 //    if (a)
 | |
|                 //    {
 | |
|                 //        renderer.material.mainTexture = matDic[num];
 | |
|                 //    }
 | |
|                 //    else
 | |
|                 //    {
 | |
|                 //        Debug.LogError("下载图片失败:" + num);
 | |
|                 //    }
 | |
|                 //}));
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 renderer.material.mainTexture = matDic[num];
 | |
|             }
 | |
|         }
 | |
|     }
 | |
|     /// <summary>
 | |
|     /// 下载图片
 | |
|     /// </summary>
 | |
|     /// <returns></returns>
 | |
|     IEnumerator GetTexture(int num, string url1, Action<bool> callback)
 | |
|     {
 | |
|         WWW www1 = new WWW(url1);
 | |
|         yield return www1;
 | |
|         if (www1.isDone)
 | |
|         {
 | |
|             if (!string.IsNullOrEmpty(www1.error))
 | |
|             {
 | |
|                 Debug.LogError(www1.error);
 | |
|                 MessagePanel.ShowMessage("获取图片失败:" + www1.error, GameObject.Find("Canvas").transform, a => { });
 | |
|                 callback.Invoke(false);
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 Debug.Log("下载图片成功:" + num);
 | |
|                 matDic.Add(num, www1.texture);
 | |
|                 callback.Invoke(true);
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /// <summary>
 | |
|     /// 回调
 | |
|     /// </summary>
 | |
|     /// <param name="id"></param>
 | |
|     public void CallBack(string id, bool isEnterRoom)
 | |
|     {
 | |
|         if (myint == 0)
 | |
|         {
 | |
|             renderer.material.mainTexture = null;
 | |
|         }
 | |
|         else if (!matDic.ContainsKey(myint))
 | |
|         {
 | |
|             //StartCoroutine(GetTexture(myint, MediaPanel.instance.dicPicture[myint].url, a =>
 | |
|             //{
 | |
|             //    if (a)
 | |
|             //    {
 | |
|             //        renderer.material.mainTexture = matDic[myint];
 | |
|             //    }
 | |
|             //    else
 | |
|             //    {
 | |
|             //        Debug.LogError("下载图片失败:" + myint);
 | |
|             //    }
 | |
|             //}));
 | |
|         }
 | |
|         else
 | |
|         {
 | |
|             renderer.material.mainTexture = matDic[myint];
 | |
|         }
 | |
|     }
 | |
| }
 |