支持自定义构建的 BuildPlayerOptions 入参

This commit is contained in:
JunQiang 2025-05-19 11:39:44 +08:00
parent 9a0f540a01
commit 1932efd262

View File

@ -94,7 +94,7 @@ namespace WeChatWASM
} }
} }
// 可以调用这个来集成 // 可以调用这个来集成
public static WXExportError DoExport(bool buildWebGL = true) public static WXExportError DoExport(bool buildWebGL = true, BuildPlayerOptions buildPlayerOptions = default)
{ {
LifeCycleEvent.Init(); LifeCycleEvent.Init();
Emit(LifeCycle.beforeExport); Emit(LifeCycle.beforeExport);
@ -154,7 +154,7 @@ namespace WeChatWASM
UnityUtil.DelectDir(Path.Combine(config.ProjectConf.DST, webglDir + "/StreamingAssets")); UnityUtil.DelectDir(Path.Combine(config.ProjectConf.DST, webglDir + "/StreamingAssets"));
} }
if (buildWebGL && Build() != 0) if (buildWebGL && Build(buildPlayerOptions) != 0)
{ {
return WXExportError.BUILD_WEBGL_FAILED; return WXExportError.BUILD_WEBGL_FAILED;
} }
@ -795,7 +795,7 @@ namespace WeChatWASM
UnityEngine.Debug.LogFormat("[Converter] adapt framework done! "); UnityEngine.Debug.LogFormat("[Converter] adapt framework done! ");
} }
private static int Build() private static int Build(BuildPlayerOptions buildPlayerOptions)
{ {
#if PLATFORM_WEIXINMINIGAME #if PLATFORM_WEIXINMINIGAME
PlayerSettings.WeixinMiniGame.emscriptenArgs = string.Empty; PlayerSettings.WeixinMiniGame.emscriptenArgs = string.Empty;
@ -915,6 +915,11 @@ namespace WeChatWASM
option |= BuildOptions.CleanBuildCache; option |= BuildOptions.CleanBuildCache;
} }
#endif #endif
var projDir = Path.Combine(config.ProjectConf.DST, webglDir);
buildPlayerOptions.scenes = GetScenePaths();
buildPlayerOptions.locationPathName = projDir;
buildPlayerOptions.options = option;
#if TUANJIE_2022_3_OR_NEWER #if TUANJIE_2022_3_OR_NEWER
if (EditorUserBuildSettings.activeBuildTarget != BuildTarget.WeixinMiniGame) if (EditorUserBuildSettings.activeBuildTarget != BuildTarget.WeixinMiniGame)
{ {
@ -926,9 +931,10 @@ namespace WeChatWASM
} }
} }
var projDir = Path.Combine(config.ProjectConf.DST, webglDir); buildPlayerOptions.target = BuildTarget.WeixinMiniGame;
buildPlayerOptions.targetGroup = BuildPipeline.GetBuildTargetGroup(buildPlayerOptions.target);
var result = BuildPipeline.BuildPlayer(GetScenePaths(), projDir, BuildTarget.WeixinMiniGame, option); var result = BuildPipeline.BuildPlayer(buildPlayerOptions);
if (result.summary.result != UnityEditor.Build.Reporting.BuildResult.Succeeded) if (result.summary.result != UnityEditor.Build.Reporting.BuildResult.Succeeded)
{ {
UnityEngine.Debug.LogFormat("[Builder] BuildPlayer failed. emscriptenArgs:{0}", PlayerSettings.WeixinMiniGame.emscriptenArgs); UnityEngine.Debug.LogFormat("[Builder] BuildPlayer failed. emscriptenArgs:{0}", PlayerSettings.WeixinMiniGame.emscriptenArgs);
@ -945,9 +951,10 @@ namespace WeChatWASM
} }
} }
var projDir = Path.Combine(config.ProjectConf.DST, webglDir); buildPlayerOptions.target = BuildTarget.WebGL;
buildPlayerOptions.targetGroup = BuildPipeline.GetBuildTargetGroup(buildPlayerOptions.target);
var result = BuildPipeline.BuildPlayer(GetScenePaths(), projDir, BuildTarget.WebGL, option); var result = BuildPipeline.BuildPlayer(buildPlayerOptions);
if (result.summary.result != UnityEditor.Build.Reporting.BuildResult.Succeeded) if (result.summary.result != UnityEditor.Build.Reporting.BuildResult.Succeeded)
{ {
UnityEngine.Debug.LogFormat("[Builder] BuildPlayer failed. emscriptenArgs:{0}", PlayerSettings.WebGL.emscriptenArgs); UnityEngine.Debug.LogFormat("[Builder] BuildPlayer failed. emscriptenArgs:{0}", PlayerSettings.WebGL.emscriptenArgs);