Beispiel #1
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="_config">磁盘映射配置</param>
 /// <param name="_extraParemeter">额外参数</param>
 public AssetBundleInput(XLS_Config_View_AssetDiskMaping _config, object[] _extraParemeter)
 {
     uniqueId       = _config.inAssetPath.UniqueHashCode();
     config         = _config;
     extraParameter = _extraParemeter;
     assetName      = Path.GetFileNameWithoutExtension(_config.fileName);
 }
    /// <summary>
    /// 获得资源磁盘映射
    /// </summary>
    /// <param name="_fileId">文件Id</param>
    /// <param name="_folderId">文件夹Id</param>
    /// <returns>资源磁盘映射</returns>
    public XLS_Config_View_AssetDiskMaping GetAssetDiskMaping(int _fileId, int _folderId)
    {
        XLS_Config_View_AssetDiskMaping config = default(XLS_Config_View_AssetDiskMaping);

        if (mXLS_Config_View_AssetDiskMaping.ContainsKey(_folderId) &&
            mXLS_Config_View_AssetDiskMaping[_folderId].ContainsKey(_fileId))
        {
            config = mXLS_Config_View_AssetDiskMaping[_folderId][_fileId];
        }
        return(config);
    }
    /// <summary>
    /// 直接获得指定资源
    /// </summary>
    /// <param name="_fileId">文件Id</param>
    /// <param name="_folderId">文件夹Id</param>
    /// <returns>资源</returns>
    public string GetTextAssetDirect(int _fileId, int _folderId)
    {
        string result = string.Empty;
        IAssetBundleFileParameter       file   = StrayFogGamePools.assetBundleManager.GetAssetBundleFile(_fileId, _folderId);
        XLS_Config_View_AssetDiskMaping config = StrayFogGamePools.assetBundleManager.GetAssetDiskMaping(_fileId, _folderId);

        if (file != null)
        {
            TextAsset ta = GetAssetDirect <TextAsset>(config.fileName, file.assetBundlePath);
            if (ta != null)
            {
                result = ta.text;
            }
        }
        return(result);
    }
    /// <summary>
    /// 加载资源到内存
    /// </summary>
    /// <param name="_fileId">文件Id</param>
    /// <param name="_folderId">文件夹Id</param>
    /// <param name="_outputEvent">输出</param>
    /// <param name="_progressEvent">进度</param>
    /// <param name="_extraParemeter">额外参数</param>
    void OnLoadAssetInMemory(int _fileId, int _folderId,
                             Action <IAssetBundleOutput> _outputEvent, Action <float, IAssetBundleInput> _progressEvent,
                             params object[] _extraParemeter)
    {
        XLS_Config_View_AssetDiskMaping config = GetAssetDiskMaping(_fileId, _folderId);

        if (config != null)
        {
            IAssetBundleFileParameter   file    = GetAssetBundleFile(_fileId, _folderId);
            AssetBundleMonoBehaviour    mono    = OnCreateMono(file);
            IAssetBundleInput           input   = new AssetBundleInput(config, _extraParemeter);
            IAssetBundleRequestInMemory request = new AssetBundleRequestInMemory(input, _outputEvent, _progressEvent);
            mono.Request(request);
            mono.BeginLoad();
        }
        else
        {
            throw new UnityException(string.Format("Can't find XLS_Config_View_AssetDiskMaping for 【folderId:{0}】【fileId:{1}】", _folderId, _fileId));
        }
    }