Esempio n. 1
0
        private static AssetRequest LoadAsset(string path, Type type, bool async)
        {
            if (string.IsNullOrEmpty(path))
            {
                Debug.LogError("invalid path");
                return(null);
            }

            path = GetExistPath(path);

            //-------已经存在的asset
            AssetRequest request;

            if (_assets.TryGetValue(path, out request))
            {
                request.Retain();
                _loadingAssets.Add(request);
                return(request);
            }


            //--------新的asset
            string assetBundleName;

            if (GetAssetBundleName(path, out assetBundleName))
            {
                request = async
                    ? new BundleAssetRequestAsync(assetBundleName)
                    : new BundleAssetRequest(assetBundleName);
            }
            else
            {
                if (path.StartsWith("http://", StringComparison.Ordinal) ||
                    path.StartsWith("https://", StringComparison.Ordinal) ||
                    path.StartsWith("file://", StringComparison.Ordinal) ||
                    path.StartsWith("ftp://", StringComparison.Ordinal) ||
                    path.StartsWith("jar:file://", StringComparison.Ordinal))
                {
                    request = new WebAssetRequest();
                }
                else
                {
                    request = new AssetRequest();
                }
            }

            request.name      = path;
            request.assetType = type;
            AddAssetRequest(request);
            request.Retain();
            Log(string.Format("LoadAsset:{0}", path));
            return(request);
        }
Esempio n. 2
0
        internal static AssetRequest LoadAsset(string path, Type type, bool async)
        {
            if (string.IsNullOrEmpty(path))
            {
                Debug.LogError("invalid path");
                return(null);
            }

            AssetRequest request;

            if (_assets.TryGetValue(path, out request))
            {
                request.Retain();
                return(request);
            }

            string assetBundleName;

            if (GetAssetBundleName(path, out assetBundleName))
            {
                request = async ? new BundleAssetAsyncRequest(assetBundleName) : new BundleAssetRequest(assetBundleName);
            }
            else
            {
                if (path.StartsWith("http://", StringComparison.Ordinal) ||
                    path.StartsWith("https://", StringComparison.Ordinal) ||
                    path.StartsWith("file://", StringComparison.Ordinal) ||
                    path.StartsWith("ftp://", StringComparison.Ordinal) ||
                    path.StartsWith("jar:file://", StringComparison.Ordinal))
                {
                    request = new WebAssetRequest();
                }
                else
                {
                    request = new AssetRequest();
                }
            }

            request.url       = path;
            request.assetType = type;
            AddAssetRequest(request);
            request.Retain();
            Log(string.Format("Load->{0}|{1}", path, assetBundleName));
            return(request);
        }