using FairyGUI; using UnityEngine; namespace GFGGame { public class DressUpObjUI { public GameObject sceneObject; public GoWrapper wrapper; public DressUpObj dressUpObj; string prefabName; public DressUpObjUI(string prefabName = "SceneDressUp") { this.prefabName = prefabName; dressUpObj = new DressUpObj(); wrapper = new GoWrapper(); } public void ResetSceneObj(int scale = 100, bool needSetMask = false, bool showSceneType = true, GameObject roleObj = null, bool showBg = true) { dressUpObj.TakeOffAll(); if (sceneObject == null) sceneObject = PrefabManager.Instance.InstantiateSync(ResPathUtil.GetPrefabPath(this.prefabName)); sceneObject.transform.localScale = new Vector3(scale, scale, scale); dressUpObj.setSceneObj(sceneObject, needSetMask, showSceneType, roleObj, showBg); Timers.inst.AddUpdate(OnUpdate); } public void UpdateWrapper(GGraph holder) { holder.SetNativeObject(wrapper); wrapper.wrapTarget = sceneObject; } public void Dispose() { if (sceneObject != null) { PrefabManager.Instance.Restore(sceneObject); sceneObject = null; } if (dressUpObj != null) { dressUpObj.Dispose(); dressUpObj = null; } if (wrapper != null) { if (wrapper.wrapTarget != null) { wrapper.wrapTarget = null; } wrapper.Dispose(); wrapper = null; } } private void OnUpdate(object o) { if(sceneObject == null) { Timers.inst.Remove(OnUpdate); return; } if(wrapper != null) { wrapper.wrapTarget = sceneObject; } //wrapper.CacheRenderers(); } } }