using System; using UnityEngine; namespace PhxhSDK { /// /// gameobject对象工厂,封装了gameobject的创建和销毁 /// public static partial class Utils { private static Transform _defaultRoot; public static GameObject CreateGameObject(bool dontDestroyOnLoad) { try { var go = new GameObject(); // if(dontDestroyOnLoad)GameObject.DontDestroyOnLoad(go); go.transform.parent = GetDefaultRoot(); return go; } catch (Exception e) { DebugUtil.LogError(e); } return null; } public static void Destroy(GameObject go) { try { GameObject.Destroy(go); } catch (Exception e) { DebugUtil.LogError(e); } } public static GameObject Clone(GameObject templateGo,GameObject parObj=null) { try { if (templateGo!=null) { Transform parent = null; if (parObj != null && parObj.transform != null) { parent = parObj.transform; } if (parent == null) { parent = templateGo.transform.parent; } if (parent == null) { return GameObject.Instantiate(templateGo); } return GameObject.Instantiate(templateGo, parent, true); } } catch (Exception e) { DebugUtil.LogError(e); } return null; } public static Transform GetDefaultRoot() { try { if (_defaultRoot == null) { GameObject gameObj = new GameObject("GameObjectFactoryRoot"); // Object.DontDestroyOnLoad(gameObj); _defaultRoot = gameObj.transform; } } catch (Exception e) { DebugUtil.LogError(e); } return _defaultRoot; } } }