DressUpObjUI.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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, 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. if (wrapper.wrapTarget != null)
  44. {
  45. wrapper.wrapTarget = null;
  46. }
  47. wrapper.Dispose();
  48. wrapper = null;
  49. }
  50. }
  51. private void OnUpdate()
  52. {
  53. if(sceneObject == null)
  54. {
  55. return;
  56. }
  57. if(wrapper != null)
  58. {
  59. wrapper.wrapTarget = sceneObject;
  60. //wrapper.CacheRenderers();
  61. }
  62. }
  63. }
  64. }