Beispiel #1
0
        // 最终资源
        private static bool CollectAsset(BundleBuilderData data, BundleBuilderData.BundleInfo bundle, Object asset,
                                         string assetPath, PackagePlatform platform)
        {
            if (asset == null)
            {
                return(false);
            }

            var listData = asset as AssetListData;

            if (listData != null)
            {
                return(CollectAssetList(data, bundle, listData, platform));
            }

            for (var splitIndex = 0; splitIndex < bundle.splits.Count; splitIndex++)
            {
                var split     = bundle.splits[splitIndex];
                var ruleMatch = false;
                if (split.rules.Count > 0)
                {
                    for (var ruleIndex = 0; ruleIndex < split.rules.Count; ruleIndex++)
                    {
                        var rule = split.rules[ruleIndex];
                        if (rule.exclude)
                        {
                            if (IsRuleMatched(rule, asset, assetPath))
                            {
                                break;
                            }
                        }
                        else
                        {
                            if (IsRuleMatched(rule, asset, assetPath))
                            {
                                ruleMatch = true;
                                break;
                            }
                        }
                    }
                }
                else
                {
                    ruleMatch = true;
                }

                if (ruleMatch)
                {
                    if (!ContainsAsset(data, asset) && split.AddObject(asset, platform))
                    {
                        data.OnAssetCollect(asset, assetPath);
                    }

                    return(true);
                }
            }

            return(false);
        }