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) { //这里每次都要实例化新的,复用会有bug sceneObject = PrefabManager.Instance.InstantiateSync(ResPathUtil.GetPrefabPath(this.prefabName)); sceneObject.transform.localScale = new Vector3(scale, scale, scale); dressUpObj.setSceneObj(sceneObject, needSetMask, showSceneType, roleObj, showBg, 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() { if(sceneObject == null) { return; } if(wrapper != null) { wrapper.wrapTarget = sceneObject; //wrapper.CacheRenderers(); } } } }