DressUpObjUI.cs 2.1 KB

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