コード例 #1
0
ファイル: CommonAssets.cs プロジェクト: bmjoy/face-nn
 internal static void EnumAsset <T>(IAssetLoadCallback cb, string title, string dir = "") where T : UnityEngine.Object
 {
     if (cb != null)
     {
         List <ObjectInfo> objInfoLst = cb.GetObjects(dir);
         for (int i = 0; i < objInfoLst.Count; ++i)
         {
             ObjectInfo oi    = objInfoLst[i];
             T          asset = oi.obj as T;
             if (asset != null)
             {
                 cb.PreProcess(oi.path);
                 if (cb.Process(asset, oi.path))
                 {
                     cb.PostProcess(oi.path);
                 }
             }
             if (cb.verbose)
             {
                 EditorUtility.DisplayProgressBar(string.Format("{0}-{1}/{2}", title, i, objInfoLst.Count), oi.path, (float)i / objInfoLst.Count);
             }
         }
         AssetDatabase.SaveAssets();
         AssetDatabase.Refresh();
         if (cb.verbose)
         {
             EditorUtility.ClearProgressBar();
             EditorUtility.DisplayDialog("Finish", "All assets processed finish", "OK");
         }
         cb.verbose = false;
     }
 }
コード例 #2
0
        private void AddLoad(int loadPriority, IAssetLoadCallback callback, int type, string filename, int life, string stateName, int count)
        {
            if (string.IsNullOrEmpty(filename) || count < 1)
            {
                JW.Common.Log.LogE("AssetService.AddLoad : invalid parameter");
                return;
            }
            if (_loader == null)
            {
                return;
            }

            AssetData data = new AssetData();

            data.Priority = loadPriority;
            data.Callback = callback;
            data.Type     = type;
            data.Name     = filename;
            //data.Filename = todo Lod
            data.Filename = filename;

            data.Factory = AssetClassFactory.GetFactory(type);
            data.Life    = life;

            data.StateName = stateName;
            data.Count     = count;

            _loader.AddTask(ref data);
        }
コード例 #3
0
 /// <summary>
 /// 取消异步加载
 /// </summary>
 /// <param name="callback">回调接口</param>
 /// <param name="assetName">资源名或者类名(=null 标识取消所有跟回调接口相关的异步加载)</param>
 public void CancelAsyn(IAssetLoadCallback callback, string assetName = null)
 {
     if (_loader == null)
     {
         return;
     }
     _loader.CancelTask(callback, assetName);
 }
コード例 #4
0
        //异步加载
        public void LoadAsyn(int type, int loadPriority, string filename, int life, IAssetLoadCallback callback, int cnt = 1)
        {
            string stateName = string.Empty;

            if (life == LifeType.Manual)
            {
                stateName = "Manual";
            }
            else if (life == LifeType.UIState)
            {
                stateName = UIStateService.IsValidate() ? UIStateService.GetInstance().CurrentStateName : string.Empty;
            }
            //
            AddLoad(loadPriority, callback, type, filename, life, stateName, cnt);
        }
コード例 #5
0
        /// <summary>
        /// 取消任务
        /// </summary>
        /// <param name="callback">回调</param>
        /// <param name="assetName">资源名或者类名</param>
        public void CancelTask(IAssetLoadCallback callback, string assetName)
        {
            if (callback == null)
            {
                JW.Common.Log.LogE("Loader.CancelTask : invalid parameter");
                return;
            }

            if (_synLoading)
            {
                JW.Common.Log.LogE("Loader.CancelTask : load is running");
                return;
            }

            for (int i = _resourceRequesting.Count - 1; i >= 0; --i)
            {
                LoadData loadData = _resourceRequesting[i];
                if (loadData.Data.Callback != callback ||
                    (!string.IsNullOrEmpty(assetName) && !loadData.Data.Name.Equals(assetName, StringComparison.OrdinalIgnoreCase)))
                {
                    continue;
                }

                if (loadData.Request != null)
                {
                    if (_resourceDiscardRequest != null)
                    {
                        JW.Common.Log.LogE("Loader.ClearTask : _resourceDiscardRequest != null");
                    }

                    _resourceDiscardRequest = loadData.Request;
                }

                _resourceRequesting.RemoveAt(i);
            }

            for (int i = _data.Count - 1; i >= 0; --i)
            {
                AssetData data = _data[i];

                if (data.Callback == callback &&
                    (string.IsNullOrEmpty(assetName) || data.Name.Equals(assetName, StringComparison.OrdinalIgnoreCase)))
                {
                    _data.RemoveAt(i);
                }
            }
        }