/// <summary>
        /// 装载具体窗口对象
        /// </summary>
        /// <typeparam name="T">对象类型</typeparam>
        /// <param name="life">生命周期</param>
        /// <returns>对象</returns>
        public UIFormAsset LoadFormAsset <T>(int life = LifeType.Immediate) where T : UIFormAsset, new()
        {
            //创建
            T    instance = new T();
            Type t        = typeof(T);

            AssetData data;

            data.Priority = LoadPriority.Wait;
            data.Callback = null;

            data.Type     = AssetType.UIForm;
            data.Name     = t.Name;
            data.Filename = instance.GetPath();

            data.Factory = AssetClassFactory.GetUIFormAssetClassFactory(instance);

            data.Life      = life;
            data.StateName = string.Empty;

            data.Count = 1;
            //
            BaseAsset ba = _assetManager.Load(ref data, false);

            if (ba == null)
            {
                JW.Common.Log.LogE("AssetService.LoadAsset : failed to load asset - {0}", t.Name);
                return(null);
            }
            //
            AdjustAssetLife(ba, life);

            return((UIFormAsset)ba);
        }
        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);
        }
        /// 加载
        private BaseAsset LoadAsset(int type, string filename, int life, bool clone = false)
        {
            AssetData data;

            data.Priority = LoadPriority.Wait;
            data.Callback = null;

            data.Type = type;

            data.Name = filename;
            //data.Filename = todo Lod FileName
            data.Filename = filename;

            data.Factory = AssetClassFactory.GetFactory(type);

            data.Life      = life;
            data.StateName = GetLifeStateName(life);

            data.Count = 1;

            BaseAsset ba = _assetManager.Load(ref data, clone);

            if (ba == null)
            {
                JW.Common.Log.LogE("AssetService.LoadAsset : failed to load asset - {0}", data.Filename);
                return(null);
            }

            if (ba.BaseData.Type != type)
            {
                JW.Common.Log.LogE("AssetService.LoadAsset : type mismatch - {0}, type - {1};{2}", data.Filename, ba.BaseData.Type, type);
                Unload(ba);
                return(null);
            }

            AdjustAssetLife(ba, life);

            return(ba);
        }