Esempio n. 1
0
        private void InitPipline()
        {
            if (m_AssetCollector.Count > 0)
            {
                m_IAssetCollector = m_AssetCollector[0] as IAssetCollector;
            }

            m_IAssetGaneraters = new List <IAssetGanerater>();
            foreach (var item in m_AssetGaneraters)
            {
                m_IAssetGaneraters.Add(item as IAssetGanerater);
            }

            m_IAssetModifiers = new List <IAssetModifier>();
            foreach (var item in m_AssetModifiers)
            {
                m_IAssetModifiers.Add(item as IAssetModifier);
            }

            if (m_BundleNameBuilder.Count > 0)
            {
                m_IBundleNameBuilder = m_BundleNameBuilder[0] as IBundleNameBuilder;
            }

            if (m_BundleBuidler.Count > 0)
            {
                m_IBundleBuidler = m_BundleBuidler[0] as IBundleBuidler;
            }
            if (m_BundleExporter.Count > 0)
            {
                m_IBundleExporter = m_BundleExporter[0] as IBundleExporter;
            }
        }
        /// <summary>
        /// 获取资源的打包标签
        /// </summary>
        public static string GetAssetBundleLabel(string assetpath)
        {
            // 注意:一个资源有可能被多个收集器覆盖
            List <Collector> filterWrappers = new List <Collector>();

            for (int i = 0; i < Setting.AssetBundleCollectors.Count; i++)
            {
                Collector wrapper = Setting.AssetBundleCollectors[i];
                if (assetpath.StartsWith(wrapper.CollectFolderPath))
                {
                    filterWrappers.Add(wrapper);
                }
            }

            // 我们使用路径最深层的收集器
            Collector findWrapper = null;

            for (int i = 0; i < filterWrappers.Count; i++)
            {
                Collector wrapper = filterWrappers[i];
                if (findWrapper == null)
                {
                    findWrapper = wrapper;
                    continue;
                }
                if (wrapper.CollectFolderPath.Length > findWrapper.CollectFolderPath.Length)
                {
                    findWrapper = wrapper;
                }
            }

            // 如果没有找到收集器
            if (findWrapper == null)
            {
                IAssetCollector defaultCollector = new LabelByFilePath();
                return(defaultCollector.GetAssetBundleLabel(assetpath));
            }

            // 根据规则设置获取标签名称
            IAssetCollector collector = GetCollectorInstance(findWrapper.GetCollectorClassName());

            return(collector.GetAssetBundleLabel(assetpath, findWrapper));
        }