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(); }
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)); }
public static U3DAssetDB GetInstance() { if (s_Instance == null) { s_Instance = new U3DAssetDB(); } return(s_Instance); }
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)); }
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); }
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)); }
//查找某个资源被谁引用 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)); }
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); } } }
public static void DestroyInstance() { U3DAssetDB.DestoryInstance(); s_instance = null; GC.Collect(); }
public bool Find(string path, out U3DAssetInfo info) { return(U3DAssetDB.GetInstance().Find(path, out info)); }
public string GetAssetDatabaseUpdateTime() { return(U3DAssetDB.GetInstance().DBUpdateTime); }
public bool IsAssetDatabaseContain(string path) { return(U3DAssetDB.GetInstance().Contain(path)); }
public IEditorCoroutineTask NewUpdateTask() { return(U3DAssetDB.GetInstance().NewRebuildTask()); }