DressUpObjUI.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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. sceneObject = PrefabManager.Instance.InstantiateSync(ResPathUtil.GetPrefabPath(this.prefabName));
  20. sceneObject.transform.localScale = new Vector3(scale, scale, scale);
  21. dressUpObj.setSceneObj(sceneObject, needSetMask, showSceneType, roleObj, showBg);
  22. Timers.inst.AddUpdate(OnUpdate);
  23. }
  24. public void UpdateWrapper(GGraph holder)
  25. {
  26. holder.SetNativeObject(wrapper);
  27. wrapper.wrapTarget = sceneObject;
  28. }
  29. public void Dispose()
  30. {
  31. if (sceneObject != null)
  32. {
  33. PrefabManager.Instance.Restore(sceneObject);
  34. sceneObject = null;
  35. }
  36. if (dressUpObj != null)
  37. {
  38. dressUpObj.Dispose();
  39. dressUpObj = null;
  40. }
  41. if (wrapper != null)
  42. {
  43. wrapper.Dispose();
  44. wrapper = null;
  45. }
  46. }
  47. private void OnUpdate(object o)
  48. {
  49. if(sceneObject == null)
  50. {
  51. Timers.inst.Remove(OnUpdate);
  52. return;
  53. }
  54. wrapper.wrapTarget = sceneObject;
  55. }
  56. }
  57. }