DressUpObjUI.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. using FairyGUI;
  2. using UnityEngine;
  3. namespace GFGGame
  4. {
  5. public class DressUpObjUI
  6. {
  7. public GameObject sceneObject;
  8. public GoWrapper wrapper;
  9. public DressUpObj dressUpObj;
  10. string prefabName;
  11. public DressUpObjUI(string prefabName = "SceneDressUp")
  12. {
  13. this.prefabName = prefabName;
  14. dressUpObj = new DressUpObj();
  15. wrapper = new GoWrapper();
  16. }
  17. public void ResetSceneObj(int scale = 100, bool needSetMask = false, bool showSceneType = true, GameObject roleObj = null, bool showBg = true)
  18. {
  19. //这里每次都要实例化新的,复用会有bug
  20. sceneObject = PrefabManager.Instance.InstantiateSync(ResPathUtil.GetPrefabPath(this.prefabName));
  21. sceneObject.transform.localScale = new Vector3(scale, scale, scale);
  22. dressUpObj.setSceneObj(sceneObject, needSetMask, showSceneType, roleObj, showBg);
  23. Timers.inst.AddUpdate(OnUpdate);
  24. }
  25. public void UpdateWrapper(GGraph holder)
  26. {
  27. holder.SetNativeObject(wrapper);
  28. wrapper.wrapTarget = sceneObject;
  29. }
  30. public void Dispose()
  31. {
  32. if (sceneObject != null)
  33. {
  34. PrefabManager.Instance.Restore(sceneObject);
  35. sceneObject = null;
  36. }
  37. if (dressUpObj != null)
  38. {
  39. dressUpObj.Dispose();
  40. dressUpObj = null;
  41. }
  42. if (wrapper != null)
  43. {
  44. if (wrapper.wrapTarget != null)
  45. {
  46. wrapper.wrapTarget = null;
  47. }
  48. wrapper.Dispose();
  49. wrapper = null;
  50. }
  51. }
  52. private void OnUpdate(object o)
  53. {
  54. if(sceneObject == null)
  55. {
  56. Timers.inst.Remove(OnUpdate);
  57. return;
  58. }
  59. if(wrapper != null)
  60. {
  61. wrapper.wrapTarget = sceneObject;
  62. }
  63. //wrapper.CacheRenderers();
  64. }
  65. }
  66. }