SPJK_ObsItem.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. using UnityEngine.Networking;
  6. using UnityEngine.UI;
  7. public class SPJK_ObsItem : MonoBehaviour
  8. {
  9. public ObsData _data;
  10. public Text nameText;
  11. public Text typeText;
  12. public Text codeText;
  13. public Text updataTimeText;
  14. public RawImage fm;
  15. public static Dictionary<string, Texture> OBSTexLibrary = new Dictionary<string, Texture>();
  16. private void Start()
  17. {
  18. ActionInstance._Instance.obsFmUpdata += OnGetFmUpdate;
  19. }
  20. private void OnDestroy()
  21. {
  22. ActionInstance._Instance.obsFmUpdata -= OnGetFmUpdate;
  23. }
  24. private void OnEnable()
  25. {
  26. if (!havePic && _data != null) {
  27. // Debug.Log(_data.targetName);
  28. string hashName = ObsPlayerPanel.GetHashedName(_data.targetName);
  29. StartCoroutine(LoadFmTex(ServerAddress.Server_TextureSavePath + hashName + ".jpg"));
  30. }
  31. }
  32. private void OnGetFmUpdate(string name)
  33. {
  34. if (name.Equals(ObsPlayerPanel.GetHashedName(_data.targetName)))
  35. {
  36. StartCoroutine(LoadFmTex(ServerAddress.Server_TextureSavePath + name + ".jpg"));
  37. }
  38. }
  39. bool havePic = false;
  40. IEnumerator LoadFmTex(string url)
  41. {
  42. UnityWebRequest www = UnityWebRequestTexture.GetTexture(url);
  43. yield return www.SendWebRequest();
  44. string hashName = ObsPlayerPanel.GetHashedName(_data.targetName);
  45. if (www.isDone && www.result == UnityWebRequest.Result.Success)
  46. {
  47. fm.texture = ((DownloadHandlerTexture)www.downloadHandler).texture;
  48. havePic = true;
  49. if (!OBSTexLibrary.ContainsKey(ServerAddress.Server_TextureSavePath + hashName + ".jpg"))
  50. OBSTexLibrary.Add(ServerAddress.Server_TextureSavePath + hashName + ".jpg", fm.texture);
  51. }
  52. www.disposeDownloadHandlerOnDispose = true;
  53. www.Dispose();
  54. }
  55. public void SetData(ObsData data)
  56. {
  57. _data = data;
  58. nameText.text = _data.name;
  59. switch (_data.type)
  60. {
  61. case obsType.BuYuanObs:
  62. typeText.text = "分类:<color=#FFFFFF>补元</color>";
  63. break;
  64. case obsType.TaoKouObs:
  65. typeText.text = "分类:<color=#FFFFFF>套口</color>";
  66. break;
  67. }
  68. codeText.text = $"编码:<color=#FFFFFF>{_data.channelId}</color>";
  69. string hashName = ObsPlayerPanel.GetHashedName(_data.targetName);
  70. StartCoroutine(LoadFmTex( ServerAddress.Server_TextureSavePath + hashName + ".jpg"));
  71. }
  72. }