/// <summary> /// 预览结果 编辑器连线数据,但是build模式也会执行 /// 这里只建议设置BuildingCtx的ab颗粒度 /// </summary> /// <param name="target"></param> /// <param name="nodeData"></param> /// <param name="incoming"></param> /// <param name="connectionsToOutput"></param> /// <param name="outputFunc"></param> public override void Prepare(BuildTarget target, NodeData nodeData, IEnumerable <PerformGraph.AssetGroups> incoming, IEnumerable <ConnectionData> connectionsToOutput, PerformGraph.Output outputFunc) { //检测混淆 StopwatchTools.Begin(); if (BuildingCtx == null) { BuildingCtx = new AssetBundleBuildingContext(); } BuildingCtx.BuildParams.BuildTarget = target; BuildingCtx.CheckABObfuscationSource(); //设置所有节点参数请求,依次传参 Debug.Log("【初始化框架资源环境】配置:\n" + JsonMapper.ToJson(BuildingCtx.BuildParams)); var outMap = new Dictionary <string, List <AssetReference> >(); //预览模式 if ((AssetGraphWindowsModeEnum)this.AssetGraphWindowsMode == AssetGraphWindowsModeEnum.预览节点模式) { //生成buildinfo //创建构建上下文信息 GenBuildingCtx(); //输出 outMap = new Dictionary <string, List <AssetReference> >() { { nameof(FloderType.Runtime), BuildingCtx.RuntimeAssetsList.ToList() }, //传递新容器 { nameof(FloderType.Depend), BuildingCtx.DependAssetList.ToList() } }; } else if ((AssetGraphWindowsModeEnum)this.AssetGraphWindowsMode == AssetGraphWindowsModeEnum.配置节点模式) { //输出 outMap = new Dictionary <string, List <AssetReference> >() { { nameof(FloderType.Runtime), new List <AssetReference>() }, //传递新容器 { nameof(FloderType.Depend), new List <AssetReference>() } }; } StopwatchTools.End("【初始化框架资源环境】"); var output = connectionsToOutput?.FirstOrDefault(); if (output != null) { outputFunc(output, outMap); // } }
/// <summary> /// 生成BuildingCtx /// </summary> private void GenBuildingCtx(bool isRenew = false) { //新构建对象 if (isRenew) { string lastouput = BuildingCtx.BuildParams.OutputPath; BuildingCtx = new AssetBundleBuildingContext(); BuildingCtx.BuildParams.OutputPath = lastouput; } //生成build资源信息 if (BuildingCtx.BuildingAssetInfos.AssetInfoMap.Count == 0) { BuildingCtx.CollectBuildingAssets(); } }
/// <summary> /// 生成BuildingCtx /// </summary> private void GenBuildingCtx(bool isRenew = false) { Debug.Log("------------>生成BuildInfo :" + this.GetHashCode()); //新构建对象 if (isRenew) { string lastouput = BuildingCtx.BuildParams.OutputPath; BuildingCtx = new AssetBundleBuildingContext(); BuildingCtx.BuildParams.OutputPath = lastouput; } //生成build资源信息 if (BuildingCtx.BuildAssetsInfo.AssetDataMaps.Count == 0) { BuildingCtx.GenBuildInfo(); } }