public void Load(GameObject prefab, string bundle, string name, Action <UnityEngine.Object> callback, GameObject parent = null)
        {
            AssetInfo assetInfo = new AssetInfo(bundle, name);

            if (parent == null)
            {
                parent = _uiLoaderRoot;
            }

            UnityObject unityObj;

            unityObj = (_assetManager as UnityAssetManager).ObjectPool.GetOrNull(assetInfo);
            if (unityObj == null)
            {
                GameObject go = GameObject.Instantiate(prefab, parent.transform, false);
                unityObj = new UnityObject(go, assetInfo);
                unityObj.AddUnityObjectReference();
            }

            if (callback != null)
            {
                callback(unityObj);
            }
            else
            {
                AddToGameObjectPool(unityObj);
            }
        }