Exemple #1
0
    public void Init()
    {
        bool tryLoadCache = false;

        if (U3DAssetDB.GetInstance().IsCacheFileExist())
        {
            tryLoadCache = EditorUtility.DisplayDialog("缓存", "侦测到有Asset数据库缓存,是否现在载入?", "是", "否");
        }

        if (tryLoadCache)
        {
            //从Cache文件中读取所有信息到对应的Dictionary
            if (U3DAssetDB.GetInstance().TryLoad())
            {
                //从Dictionary中读取所有资源(这个所有资源没有了索引,存成List有什么用?)
                //和Dictionary中读取的所有无用资源
                _UpdateAllAssetList();

                //异步回调ManagerToolControler中的处理
                _NotifyAssetDatabaseUpdate();

                //异步回调ManagerToolControler中的处理
                state = State.STATE_BUILD;
                _NotifyAssetDatabaseStateChange();
                return;
            }
        }

        U3DAssetDB.GetInstance().Init();
        _UpdateAllAssetList();

        state = State.STATE_INIT;
        _NotifyAssetDatabaseStateChange();
    }
Exemple #2
0
    private void _GetAssetDependencies(Guid id, out List <U3DAssetInfo> assets)
    {
        U3DAssetInfo assetInfo = null;

        assets = new List <U3DAssetInfo>();

        if (!U3DAssetDB.GetInstance().Find(id, out assetInfo))
        {
            return;
        }

        string[] depPaths = ResourceManageToolUtility.GetDependencies(assetInfo.path);
        foreach (var p in depPaths)
        {
            if (p.Equals(assetInfo.Path))
            {
                continue;
            }

            U3DAssetInfo depAsset = null;
            Guid         depId    = ResourceManageToolUtility.PathToGuid(p);
            //在数据库中没有找到此资源则初始化
            if (!U3DAssetDB.GetInstance().Find(depId, out depAsset))
            {
                depAsset      = new U3DAssetInfo();
                depAsset.guid = depId;
                ResourceManageToolUtility.InitAssetInfo(p, ref depAsset);
                U3DAssetDB.GetInstance().AssetTable.Add(depAsset.guid, depAsset);
            }
            assets.Add(depAsset);
        }
        assets.Sort(new AssetInfoComparer(AssetFilterList));
    }
Exemple #3
0
 public static U3DAssetDB GetInstance()
 {
     if (s_Instance == null)
     {
         s_Instance = new U3DAssetDB();
     }
     return(s_Instance);
 }
Exemple #4
0
    private void _UpdateAssetList()
    {
        assetList.Clear();
        foreach (var a in U3DAssetDB.GetInstance().AssetTable)
        {
            if (
                currAssetFilter.Check(a.Value) &&
                U3DAssetDB.GetInstance().IsPathContain(a.Value.path)
                )
            {
                assetList.Add(a.Value);
            }
        }

        assetList.Sort(new AssetInfoComparer(AssetFilterList));
    }
Exemple #5
0
    public bool UpdateAssetDatabase(Guid taskID, object resultObj)
    {
        bool ret = false;

        U3DAssetDBRebuildTask.Result rs = resultObj as U3DAssetDBRebuildTask.Result;
        ret = U3DAssetDB.GetInstance().Rebuild(taskID, rs);
        _UpdateAllAssetList();
        _NotifyAssetDatabaseUpdate();

        if (ret)
        {
            state = State.STATE_BUILD;
            _NotifyAssetDatabaseStateChange();
        }

        return(ret);
    }
Exemple #6
0
    private void _UpdateUnUsedAssetList()
    {
        unUsedAssetList = new List <U3DAssetInfo>();
        List <U3DAssetInfo> assets = U3DAssetDB.GetInstance().GetUnUsedAssets();

        foreach (var a in assets)
        {
            if (
                currAssetFilter.Check(a) &&
                U3DAssetDB.GetInstance().IsPathContain(a.path)
                )
            {
                unUsedAssetList.Add(a);
            }
        }

        unUsedAssetList.Sort(new AssetInfoComparer(AssetFilterList));
    }
Exemple #7
0
    //查找某个资源被谁引用
    public void GetAssetReferenced(Guid resID, out List <U3DAssetInfo> assets)
    {
        List <Guid> referencedList = null;

        U3DAssetDB.GetInstance().FindReferencedList(resID, out referencedList);
        assets = new List <U3DAssetInfo>();
        if (referencedList != null)
        {
            foreach (var r in referencedList)
            {
                U3DAssetInfo info = null;
                if (U3DAssetDB.GetInstance().Find(r, out info))
                {
                    assets.Add(info);
                }
            }
        }

        assets.Sort(new AssetInfoComparer(AssetFilterList));
    }
Exemple #8
0
    public void GetAssetDependencies(Guid resID, out List <U3DAssetInfo> assets)
    {
        assets = new List <U3DAssetInfo>();
        U3DAssetInfo assetInfo = null;

        if (U3DAssetDB.GetInstance().Find(resID, out assetInfo))
        {//若找到了查依赖的资源
            //若资源已经损坏则不再构建正向依赖
            if (assetInfo.Corrupted)
            {
                return;
            }

            if (assetInfo.deps.Count > 0)
            {//已初始化正向依赖信息
                foreach (var depId in assetInfo.deps)
                {
                    U3DAssetInfo depAsset = null;
                    if (U3DAssetDB.GetInstance().Find(depId, out depAsset))
                    {//正向依赖资源已经收集到资源数据库中
                        assets.Add(depAsset);
                    }
                    else
                    {//未收集到资源数据库中,建临时信息
                        depAsset      = new U3DAssetInfo();
                        depAsset.guid = depId;
                        ResourceManageToolUtility.InitAssetInfo(ResourceManageToolUtility.GuidToPath(depId), ref depAsset);
                        assets.Add(depAsset);
                    }
                }
                assets.Sort(new AssetInfoComparer(AssetFilterList));
            }
            else
            {//未初始化正向依赖信息
                _GetAssetDependencies(resID, out assets);
            }
        }
    }
Exemple #9
0
 public static void DestroyInstance()
 {
     U3DAssetDB.DestoryInstance();
     s_instance = null;
     GC.Collect();
 }
Exemple #10
0
 public bool Find(string path, out U3DAssetInfo info)
 {
     return(U3DAssetDB.GetInstance().Find(path, out info));
 }
Exemple #11
0
 public string GetAssetDatabaseUpdateTime()
 {
     return(U3DAssetDB.GetInstance().DBUpdateTime);
 }
Exemple #12
0
 public bool IsAssetDatabaseContain(string path)
 {
     return(U3DAssetDB.GetInstance().Contain(path));
 }
Exemple #13
0
 public IEditorCoroutineTask NewUpdateTask()
 {
     return(U3DAssetDB.GetInstance().NewRebuildTask());
 }