Пример #1
0
    CarpDefineAB createDefineAB(string res, string assetName, System.Action <UnityEngine.Object, System.Object> cb, System.Action <CarpDefineAB> doneCB, System.Type t, System.Object arg, bool instantiate, bool frame)
    {
        CarpDefineAB define = new CarpDefineAB();

        define.Bind(res, assetName, null, cb, doneCB, t, arg, instantiate, frame);
        return(define);
    }
Пример #2
0
    bool loadAssetAsync(CarpDefineAB checkAsset, AssetBundle assetBundle, System.Type t)
    {
        requestLoads[checkAsset.assetKey] = null;
        if (assetBundle == null)
        {
            errorAssets.Add(checkAsset.assetKey, true);
        }
        else if (checkAsset.assetName.Equals(string.Empty))
        {
            requestLoads[checkAsset.assetKey] = t == null?assetBundle.LoadAllAssetsAsync() : assetBundle.LoadAllAssetsAsync(t);

            errorAssets.Add(checkAsset.assetKey, false);
        }
        else
        {
            bool exist = assetBundle.Contains(checkAsset.assetName);
            if (exist)
            {
                requestLoads[checkAsset.assetKey] = t == null?assetBundle.LoadAssetAsync(checkAsset.assetName) : assetBundle.LoadAssetAsync(checkAsset.assetName, t);
            }
            checkError(!exist, string.Format("资源加载错误:({0}),发生在加载资源内容阶段", checkAsset.assetKey));
            errorAssets.Add(checkAsset.assetKey, !exist);
        }
        return(true);
    }
Пример #3
0
 void reqAssets(CarpDefineAB define, bool imme)
 {
     for (int i = 0; i < define.depends.Length; i++)
     {
         reqLoadAsset(define.depends[i], string.Empty, null, imme);
     }
     reqLoadAsset(define.ab, define.assetName, define.loadType, imme);
 }
Пример #4
0
    CarpDefineAB createDefineAB(string ab, string assetName, System.Action <UnityEngine.Object, System.Object> cb, System.Action <CarpDefineAB> doneCB, System.Type t, System.Object arg, bool instantiate, bool frame)
    {
        CarpDefineAB define = new CarpDefineAB();

        string[] depends = CarpAssetDefine.manifest.GetAllDependencies(ab);
        define.Bind(ab, assetName, depends, cb, doneCB, t, arg, instantiate, frame);
        return(define);
    }
Пример #5
0
 bool waitLoadDone(CarpDefineAB define)
 {
     if (!isLoadDone(define.assetKey))
     {
         return(true);
     }
     return(loadAssetBundle(define));
 }
Пример #6
0
 bool frameCreateEntity(UnityEngine.Object obj, CarpDefineAB define)
 {
     if (!define.frame)
     {
         return(false);
     }
     carpInstantiate.willFrameCreateEntity(obj, define.ab, define.callback, define.arg);
     return(true);
 }
Пример #7
0
    public override void assetLoadAsync(string res, string assetName, System.Action <UnityEngine.Object, System.Object> cb, System.Action <CarpDefineAB> doneCB, System.Type t, System.Object arg, bool instantiate, bool frame)
    {
        res = res.ToLower();
        assetsStore.refAsset(res);
        CarpDefineAB define = createDefineAB(res, string.Empty, cb, doneCB, t, arg, instantiate, frame);

        willRequest.Add(define);
        enabled = true;
    }
Пример #8
0
 public void Update()
 {
     while (willRequest.Count > checkIndex)
     {
         checkAsset = willRequest[checkIndex];
         checkIndex = checkAsyncAsset() ? ++checkIndex : checkIndex;
     }
     checkState();
 }
Пример #9
0
 bool assetBundleLoad(UnityEngine.Object obj, CarpDefineAB define)
 {
     if (define.instantiate)
     {
         return(false);
     }
     define.callback(obj, define.arg);
     return(true);
 }
Пример #10
0
    bool isDependDone(CarpDefineAB define)
    {
        bool done = true;

        for (int i = 0; i < define.depends.Length && done; i++)
        {
            done = assetDone(define.depends[i]);
        }
        return(done);
    }
Пример #11
0
    void assetAsyncDone(CarpDefineAB define)
    {
        UnityEngine.Object obj = assetsStore.getLoadObject(define.ab, define.assetName);

        if (assetBundleLoad(obj, define))
        {
            return;
        }

        if (frameCreateEntity(obj, define))
        {
            return;
        }

        UnityEngine.Object instObj = carpInstantiate.createAssetEntity(obj, define.ab);
        define.callback(instObj, define.arg);
    }
Пример #12
0
    bool loadAssetBundle(CarpDefineAB checkAsset)
    {
        UnityEngine.Object loadObj = null;

        if (requestLoads[checkAsset.assetKey] != null && checkAsset.assetName.Equals(string.Empty))
        {
            loadObj = requestLoads[checkAsset.assetKey].allAssets[0];
        }
        else if (requestLoads[checkAsset.assetKey] != null)
        {
            loadObj = requestLoads[checkAsset.assetKey].asset;
        }
        requestLoads.Remove(checkAsset.assetKey);
        errorAssets.Remove(checkAsset.assetKey);
        assetsStore.addLoadObject(checkAsset.ab, checkAsset.assetName, loadObj);
        return(false);
    }
Пример #13
0
    public override void assetLoadAsync(string ab, string assetName, System.Action <UnityEngine.Object, System.Object> cb, System.Action <CarpDefineAB> doneCB, System.Type t, System.Object arg, bool instantiate, bool frame)
    {
        ab = ab.ToLower();
        if (CarpAssetDefine.manifest == null)
        {
            return;
        }
        if (!existAsset(ab))
        {
            Debug.LogError("文件不存在:" + ab);
            return;
        }

        assetsStore.refAsset(ab);
        CarpDefineAB define = createDefineAB(ab, assetName, cb, doneCB, t, arg, instantiate, frame);

        willRequest.Add(define);
        enabled = true;
    }
Пример #14
0
    public override void assetLoad(string ab, string assetName, System.Type t)
    {
        if (CarpAssetDefine.manifest == null)
        {
            return;
        }
        if (!existAsset(ab))
        {
            Debug.LogError("文件不存在:" + ab);
            return;
        }

        assetsStore.refAsset(ab);
        CarpDefineAB define = createDefineAB(ab, assetName, null, null, t, null, false, false);

        reqAssets(define, true);
        while (!isDone(define))
        {
        }
        while (existLoadAsset(define.assetKey) && waitLoadDone(define))
        {
        }
        loadAssetImme(ab, assetName, define.assetKey, t);
    }
Пример #15
0
 protected void asyncAssetDone(CarpDefineAB define)
 {
     define.doneCB(define);
 }
Пример #16
0
 void checkState()
 {
     checkIndex = 0;
     checkAsset = null;
     enabled    = willRequest.Count > 0;
 }
Пример #17
0
 bool isDone(CarpDefineAB define)
 {
     return(assetDone(define.ab) ? isDependDone(define) : false);
 }