ObsItem.cs 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.IO;
  5. using UnityEngine;
  6. using UnityEngine.Networking;
  7. using UnityEngine.UI;
  8. public class ObsItem : MonoBehaviour
  9. {
  10. public ObsData _data;
  11. public Button _button;
  12. private Text nameText;
  13. private RawImage fmImg;
  14. public static Dictionary<string, Texture> OBSTexLibrary = new Dictionary<string, Texture>();
  15. private void Awake()
  16. {
  17. _button = this.GetComponent<Button>();
  18. _button.onClick.AddListener(ShowObsTargetObj);
  19. nameText = this.transform.Find("nameText").GetComponent<Text>();
  20. fmImg = this.transform.GetComponent<RawImage>();
  21. }
  22. private void Start()
  23. {
  24. ActionInstance._Instance.obsFmUpdata += OnGetFmUpdate;
  25. }
  26. private void OnDestroy()
  27. {
  28. ActionInstance._Instance.obsFmUpdata -= OnGetFmUpdate;
  29. }
  30. public void SetData(ObsData data)
  31. {
  32. _data = data;
  33. if (_data.name != null)
  34. {
  35. nameText.text = _data.name;
  36. }
  37. string hashName = ObsPlayerPanel.GetHashedName(_data.targetName);
  38. StartCoroutine(LoadFmTex( ServerAddress.Server_TextureSavePath + hashName + ".jpg"));
  39. //Debug.Log(_data.targetName + gameObject.activeSelf);
  40. }
  41. private void OnEnable()
  42. {
  43. if (!havePic && _data != null) {
  44. // Debug.Log(_data.targetName);
  45. string hashName = ObsPlayerPanel.GetHashedName(_data.targetName);
  46. StartCoroutine(LoadFmTex(ServerAddress.Server_TextureSavePath + hashName + ".jpg"));
  47. }
  48. }
  49. private void OnGetFmUpdate(string name)
  50. {
  51. if (name.Equals(ObsPlayerPanel.GetHashedName(_data.targetName)))
  52. {
  53. StartCoroutine(LoadFmTex(ServerAddress.Server_TextureSavePath + name + ".jpg"));
  54. }
  55. }
  56. bool havePic = false;
  57. IEnumerator LoadFmTex(string url)
  58. {
  59. UnityWebRequest www = UnityWebRequestTexture.GetTexture(url);
  60. yield return www.SendWebRequest();
  61. string hashName = ObsPlayerPanel.GetHashedName(_data.targetName);
  62. if (www.isDone && www.result == UnityWebRequest.Result.Success)
  63. {
  64. fmImg.texture = ((DownloadHandlerTexture)www.downloadHandler).texture;
  65. havePic = true;
  66. if (!OBSTexLibrary.ContainsKey(ServerAddress.Server_TextureSavePath + hashName + ".jpg"))
  67. OBSTexLibrary.Add(ServerAddress.Server_TextureSavePath + hashName + ".jpg", fmImg.texture);
  68. }
  69. www.disposeDownloadHandlerOnDispose = true;
  70. www.Dispose();
  71. }
  72. public void ShowObsTargetObj()
  73. {
  74. StaticLod.instance.OnFoucusStatic(_data.targetName);
  75. }
  76. }