예제 #1
0
 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);
 }