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