public InstantiateAssetRequest <T> InstantiateAssetAsync <T>(string name, Transform parent, bool worldPositionStays) where T : UnityEngine.Object { if (assetCache.TryGetValue(name, out var obj)) { AssetBundleInstantiateAssetRequest <T> request = new AssetBundleInstantiateAssetRequest <T>(obj.name, parent, worldPositionStays); request.SetAsset(obj as T); return(request); } if (assetLocations.TryGetValue(name, out int location)) { int bundleIndex = location >> 16; int assetIndex = location & 0xFFFF; var bundle = mainBundles[bundleIndex]; CheckAndLoadAssetBundle(bundle); var request = bundle.InstantiateAsync <T>(assetIndex, parent, worldPositionStays); request.OnComplete += (r) => { if (!assetCache.ContainsKey(name)) { assetCache.Add(name, request.OriginalAsset); } }; return(request); } Debug.LogErrorFormat("资源不存在 : {0}", name); return(null); }
public InstantiateAssetRequest <T> InstantiateAsync <T>(int index, Transform paren = null, bool worldPositionStays = false) where T : Object { AssetBundleInstantiateAssetRequest <T> request = new AssetBundleInstantiateAssetRequest <T>(Assets[index], paren, worldPositionStays); if (Bundle) { DoRequest(request); } else { Requests.Add(request); } return(request); }