Example #1
0
    private IEnumerator CoLoadSerializeMaterial()
    {
        var matLoadBridge = KAssetFileLoader.Load(Url);

        while (!matLoadBridge.IsCompleted)
        {
            Progress = matLoadBridge.Progress;
            yield return(null);
        }

        var sMat = matLoadBridge.ResultObject as KSerializeMaterial;

        Debuger.Assert(sMat);

        Desc = sMat.ShaderName;

        Debuger.Assert(Mat == null);
        yield return(KResourceModule.Instance.StartCoroutine(CoGenerateMaterial(Url, sMat)));

        Debuger.Assert(Mat);

        matLoadBridge.Release(); //不需要它了

        if (Application.isEditor)
        {
            KResoourceLoadedAssetDebugger.Create("Material", Url, Mat);
        }
        OnFinish(Mat);
    }
Example #2
0
    protected override void Init(string url, params object[] args)
    {
        base.Init(url, args);

        Path = url;
        AssetFileBridge = KAssetFileLoader.Load(Path, OnAssetLoaded);
    }
Example #3
0
    protected override void Init(string url, params object[] args)
    {
        base.Init(url, args);

        _assetFileBridge = KAssetFileLoader.Load(url, (isOk, asset) =>
        {
            if (IsReadyDisposed) // 中途释放
            {
                OnFinish(null);
                return;
            }
            if (!isOk)
            {
                OnFinish(null);
                Logger.LogError("[InstanceAssetLoader]Error on assetfilebridge loaded... {0}", url);
                return;
            }

            try
            {
                InstanceAsset = (GameObject)GameObject.Instantiate(asset as UnityEngine.GameObject);
            }
            catch (Exception e)
            {
                Logger.LogException(e);
            }

            if (Application.isEditor)
            {
                KResoourceLoadedAssetDebugger.Create("AssetCopy", url, InstanceAsset);
            }

            OnFinish(InstanceAsset);
        });
    }
Example #4
0
    protected override void Init(string url, params object[] args)
    {
        base.Init(url, args);

        Path            = url;
        AssetFileBridge = KAssetFileLoader.Load(Path, OnAssetLoaded);
    }
Example #5
0
 //仅仅是预加载,回调仅告知是否加载成功
 public static KAssetFileLoader Preload(string path, System.Action <bool> callback = null)
 {
     return(KAssetFileLoader.Load(path, (isOk, asset) =>
     {
         if (callback != null)
         {
             callback(isOk);
         }
     }));
 }
Example #6
0
    public static KStaticAssetLoader Load(string url, KAssetFileLoader.CAssetFileBridgeDelegate callback = null, KAssetBundleLoaderMode loaderMode = KAssetBundleLoaderMode.Default)
    {
        CLoaderDelgate newCallback = null;
        if (callback != null)
        {
            newCallback = (isOk, obj) => callback(isOk, obj as UnityEngine.Object);
        }

        return AutoNew<KStaticAssetLoader>(url, newCallback, false, loaderMode);
    }
Example #7
0
    // TODO: 无视AssetName暂时!
    public static KInstanceAssetLoader Load(string url, KAssetFileLoader.CAssetFileBridgeDelegate callback = null)
    {
        var loader = AutoNew<KInstanceAssetLoader>(url, (ok, resultObject) =>
        {
            if (callback != null)
                callback(ok, resultObject as UnityEngine.Object);
        }, true);

        return loader;
    }
Example #8
0
    //仅仅是预加载,回调仅告知是否加载成功
    public static IEnumerator CoPreload(string path, System.Action <bool> callback = null)
    {
        var w = KAssetFileLoader.Load(path, null);

        while (!w.IsCompleted)
        {
            yield return(null);
        }

        if (callback != null)
        {
            callback(!w.IsError); // isOk?
        }
    }
Example #9
0
    protected override void Init(string path, params object[] args)
    {
        var loaderMode = (KAssetBundleLoaderMode) args[0];

        base.Init(path, args);
        if (string.IsNullOrEmpty(path))
            Logger.LogError("StaticAssetLoader 空资源路径!");

        _assetFileLoader = KAssetFileLoader.Load(path, (_isOk, _obj) =>
        {
            OnFinish(_obj);

            if (Application.isEditor)
                if (TheAsset != null)
                    KResoourceLoadedAssetDebugger.Create("StaticAsset", path, TheAsset);
        }, loaderMode);
    }
Example #10
0
    public IEnumerator LoadUIAsset(CUILoadState openState, UILoadRequest request)
    {
        var name = openState.TemplateName;
        // 具体加载逻辑
        // manifest
        string manifestPath = ResourceDepUtils.GetBuildPath(string.Format("BundleResources/NGUI/{0}.prefab.manifest{1}", name,
                                                                          AppEngine.GetConfig(KEngineDefaultConfigs.AssetBundleExt)));
        var manifestLoader = KBytesLoader.Load(manifestPath, KResourceInAppPathType.PersistentAssetsPath, KAssetBundleLoaderMode.PersitentDataPathSync);

        while (!manifestLoader.IsCompleted)
        {
            yield return(null);
        }
        var manifestBytes = manifestLoader.Bytes;

        manifestLoader.Release(); // 释放掉文本字节
        var utf8NoBom    = new UTF8Encoding(false);
        var manifestList = utf8NoBom.GetString(manifestBytes).Split(new char[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries);

        for (var i = 0; i < manifestList.Length; i++)
        {
            var depPath   = manifestList[i] + AppEngine.GetConfig(KEngineDefaultConfigs.AssetBundleExt);
            var depLoader = KAssetFileLoader.Load(depPath);
            while (!depLoader.IsCompleted)
            {
                yield return(null);
            }
        }
        string path = ResourceDepUtils.GetBuildPath(string.Format("BundleResources/NGUI/{0}.prefab{1}", name, KEngine.AppEngine.GetConfig("AssetBundleExt")));

        var assetLoader = KStaticAssetLoader.Load(path);

        openState.UIResourceLoader = assetLoader; // 基本不用手工释放的
        while (!assetLoader.IsCompleted)
        {
            yield return(null);
        }
        request.Asset = assetLoader.TheAsset;
    }
Example #11
0
    protected override void Init(string path, params object[] args)
    {
        var loaderMode = (KAssetBundleLoaderMode)args[0];

        base.Init(path, args);
        if (string.IsNullOrEmpty(path))
        {
            Logger.LogError("StaticAssetLoader 空资源路径!");
        }

        _assetFileLoader = KAssetFileLoader.Load(path, (_isOk, _obj) =>
        {
            OnFinish(_obj);

            if (Application.isEditor)
            {
                if (TheAsset != null)
                {
                    KResoourceLoadedAssetDebugger.Create("StaticAsset", path, TheAsset);
                }
            }
        }, loaderMode);
    }
Example #12
0
        private static IEnumerator CoLoadAssetBundleAsync(string relativePath, ResourceDepRequest request)
        {
            // manifest
            string manifestPath = ResourceDepUtils.GetBuildPath(String.Format("{0}.manifest{1}", relativePath,
                                                                              AppEngine.GetConfig(KEngineDefaultConfigs.AssetBundleExt)));
            var manifestLoader = KBytesLoader.Load(manifestPath, LoaderMode.Sync);

            while (!manifestLoader.IsCompleted)
            {
                yield return(null);
            }

            // manifest读取失败,可能根本没有manifest,是允许的
            if (manifestLoader.IsSuccess)
            {
                var manifestBytes = manifestLoader.Bytes;
                manifestLoader.Release(); // 释放掉文本字节
                string[] manifestList = GetManifestList(manifestBytes);
                for (var i = 0; i < manifestList.Length; i++)
                {
                    var depPath   = manifestList[i] + AppEngine.GetConfig(KEngineDefaultConfigs.AssetBundleExt);
                    var depLoader = KAssetFileLoader.Load(depPath);
                    if (request.Loaders == null)
                    {
                        request.Loaders = new List <KAbstractResourceLoader>();
                    }
                    request.Loaders.Add(depLoader);
                    while (!depLoader.IsCompleted)
                    {
                        yield return(null);
                    }
                }
            }
            string path =
                GetBuildPath(String.Format("{0}{1}", relativePath,
                                           AppEngine.GetConfig(KEngineDefaultConfigs.AssetBundleExt)));

            // 获取后缀名
            var ext = Path.GetExtension(relativePath);

            if (ext == ".unity" || ext == ".shader")
            {
                // Scene
                var sceneLoader = KAssetBundleLoader.Load(path);

                if (request.Loaders == null)
                {
                    request.Loaders = new List <KAbstractResourceLoader>();
                }
                request.Loaders.Add(sceneLoader);
                while (!sceneLoader.IsCompleted)
                {
                    yield return(null);
                }
            }
            else
            {
                var assetLoader = KAssetFileLoader.Load(path);
                while (!assetLoader.IsCompleted)
                {
                    yield return(null);
                }
                request.Asset = assetLoader.Asset;
            }

            request.IsDone = true;
        }
Example #13
0
        /// <summary>
        /// 同步加载AssetBundle
        /// </summary>
        /// <param name="relativePath"></param>
        /// <returns></returns>
        public static Object LoadAssetBundleSync(string relativePath)
        {
            //CheckLoadShadersPrefab();
            // manifest
            string manifestPath = ResourceDepUtils.GetBuildPath(String.Format("{0}.manifest{1}", relativePath,
                                                                              AppEngine.GetConfig(KEngineDefaultConfigs.AssetBundleExt)));
            var manifestLoader = KBytesLoader.Load(manifestPath, LoaderMode.Sync);
            //while (!manifestLoader.IsCompleted)
            //    yield return null;
            var manifestBytes = manifestLoader.Bytes;

            manifestLoader.Release(); // 释放掉文本字节
            if (manifestBytes != null)
            {
                var manifestList = GetManifestList(manifestBytes);
                for (var i = 0; i < manifestList.Length; i++)
                {
                    var depPath = manifestList[i] + AppEngine.GetConfig(KEngineDefaultConfigs.AssetBundleExt);
                    //var depLoader =
                    KAssetFileLoader.Load(depPath);
                    //while (!depLoader.IsCompleted)
                    //{
                    //    yield return null;
                    //}

                    /*if (Application.isEditor)
                     * {
                     *  Log.Info("Load dep sync:{0}, from: {1}", depPath, relativePath);
                     * }*/
                }
            }
            else
            {
                Log.Warning("Cannot find Manifest: {0}", relativePath);
            }

            string path =
                GetBuildPath(String.Format("{0}{1}", relativePath,
                                           AppEngine.GetConfig(KEngineDefaultConfigs.AssetBundleExt)));

            //while (!assetLoader.IsCompleted)
            //    yield return null;
            // 获取后缀名
            var ext = Path.GetExtension(relativePath);

            if (ext == ".unity" || ext == ".shader")
            {
                // Scene
                //var sceneLoader =
                KAssetBundleLoader.Load(path);
                //while (!sceneLoader.IsCompleted)
                //    yield return null;
                return(null);
            }
            else
            {
                var assetLoader = KAssetFileLoader.Load(path);
                //while (!assetLoader.IsCompleted)
                //    yield return null;
                return(assetLoader.Asset);
            }
        }
Example #14
0
        protected override void Init(string url, params object[] args)
        {
            base.Init(url, args);

            AssetFileBridge = KAssetFileLoader.Load(url, (bool isOk, UnityEngine.Object obj) => { OnFinish(obj); });
        }
Example #15
0
        protected override void Init(string url, params object[] args)
        {
            base.Init(url, args);

            _bridge = KAssetFileLoader.Load(Url, (_isOk, _obj) => { OnFinish(_obj); });
        }
Example #16
0
    protected override void Init(string url, params object[] args)
    {
        base.Init(url, args);

        _assetFileBridge = KAssetFileLoader.Load(url, (isOk, asset) =>
        {
            if (IsReadyDisposed) // 中途释放
            {
                OnFinish(null);
                return;
            }
            if (!isOk)
            {
                OnFinish(null);
                Logger.LogError("[InstanceAssetLoader]Error on assetfilebridge loaded... {0}", url);
                return;
            }

            try
            {
                InstanceAsset = (GameObject) GameObject.Instantiate(asset as UnityEngine.GameObject);
            }
            catch (Exception e)
            {
                Logger.LogException(e);
            }

            if (Application.isEditor)
            {
                KResoourceLoadedAssetDebugger.Create("AssetCopy", url, InstanceAsset);
            }

            OnFinish(InstanceAsset);
        });
    }