public static async UniTask <GameObject> InstantiateAsync(AssetReferenceGameObject reference, Transform parent = null, bool instantiateInWorldSpace = false)
        {
#if UNITY_OBJECTPOOLING_ADDRESSABLES_MANAGER
            var obj = await AddressablesManager.InstantiateAsync(reference, parent, instantiateInWorldSpace);
#else
            var obj = await reference.InstantiateAsync(parent, instantiateInWorldSpace);
#endif
            return(obj);
        }
        public static void ReleaseInstance(AssetReferenceGameObject reference, GameObject obj)
        {
#if UNITY_OBJECTPOOLING_ADDRESSABLES_MANAGER
            AddressablesManager.ReleaseInstance(reference, obj);
#else
            if (reference != null && obj)
            {
                reference.ReleaseInstance(obj);
            }
#endif
        }