From fdd51dac08fa3ad1bcff63ed8659f36417ddad83 Mon Sep 17 00:00:00 2001 From: nebulaliu Date: Thu, 2 Apr 2026 17:19:48 +0800 Subject: [PATCH] Auto-publish pre-release WXSDK. --- CHANGELOG.md | 7 +- .../BuildProfile/WeixinBuildProfileUpdater.cs | 78 +++ .../WeixinBuildProfileUpdater.cs.meta | 11 + .../WeixinMiniGameSettingsEditor.cs | 554 +----------------- Editor/WXPluginVersion.cs | 2 +- Editor/wx-editor.dll | Bin 246272 -> 246272 bytes Editor/wx-editor.xml.meta | 2 +- Runtime/Plugins/wx-perf.dll | Bin 55808 -> 55808 bytes Runtime/Plugins/wx-runtime-editor.dll | Bin 275456 -> 275456 bytes Runtime/Plugins/wx-runtime-editor.xml.meta | 2 +- Runtime/Plugins/wx-runtime.dll | Bin 250368 -> 250368 bytes Runtime/Plugins/wx-runtime.xml.meta | 2 +- .../playable-default/check-version.js.meta | 2 +- Runtime/playable-default/data-package.meta | 2 +- .../data-package/game.js.meta | 2 +- Runtime/playable-default/events.js.meta | 2 +- Runtime/playable-default/game.js.meta | 2 +- Runtime/playable-default/game.json.meta | 2 +- Runtime/playable-default/playable-fix.js.meta | 2 +- .../playable-default/plugin-config.js.meta | 2 +- Runtime/playable-default/plugins.meta | 2 +- .../plugins/check-update.js.meta | 2 +- .../plugins/screen-adapter.js.meta | 2 +- .../playable-default/project.config.json.meta | 2 +- .../playable-default/texture-config.js.meta | 2 +- .../playable-default/unity-namespace.js.meta | 2 +- .../unity-playable-plugin.meta | 2 +- .../unity-playable-plugin/index.js.meta | 2 +- Runtime/playable-default/unity-sdk.meta | 2 +- Runtime/playable-default/unity-sdk/audio.meta | 2 +- .../unity-sdk/audio/common.js.meta | 2 +- .../unity-sdk/audio/const.js.meta | 2 +- .../unity-sdk/audio/index.js.meta | 2 +- .../unity-sdk/audio/inner-audio.js.meta | 2 +- .../unity-sdk/audio/store.js.meta | 2 +- .../unity-sdk/audio/unity-audio.js.meta | 2 +- .../unity-sdk/audio/utils.js.meta | 2 +- .../unity-sdk/canvas-context.js.meta | 2 +- .../playable-default/unity-sdk/canvas.js.meta | 2 +- .../playable-default/unity-sdk/conf.js.meta | 2 +- .../unity-sdk/file-info.js.meta | 2 +- .../playable-default/unity-sdk/fix.js.meta | 2 +- Runtime/playable-default/unity-sdk/fs.js.meta | 2 +- .../playable-default/unity-sdk/index.js.meta | 2 +- .../playable-default/unity-sdk/logger.js.meta | 2 +- .../unity-sdk/mobileKeyboard.meta | 2 +- .../unity-sdk/mobileKeyboard/index.js.meta | 2 +- .../unity-sdk/module-helper.js.meta | 2 +- .../unity-sdk/recorder.js.meta | 2 +- .../unity-sdk/resType.js.meta | 2 +- .../unity-sdk/resTypeOther.js.meta | 2 +- .../unity-sdk/response.js.meta | 2 +- .../playable-default/unity-sdk/sdk.js.meta | 2 +- .../unity-sdk/special-callbacks.js.meta | 2 +- .../unity-sdk/texture.js.meta | 2 +- Runtime/playable-default/unity-sdk/touch.meta | 2 +- .../unity-sdk/touch/index.js.meta | 2 +- .../playable-default/unity-sdk/util.js.meta | 2 +- .../playable-default/unity-sdk/utils.js.meta | 2 +- .../playable-default/unity-sdk/video.js.meta | 2 +- Runtime/playable-default/unity-sdk/video.meta | 2 +- .../unity-sdk/video/index.js.meta | 2 +- Runtime/playable-default/wasmcode.meta | 2 +- .../playable-default/wasmcode/game.js.meta | 2 +- .../playable-default/weapp-adapter.js.meta | 2 +- Runtime/wechat-default/check-version.js.meta | 2 +- Runtime/wechat-default/data-package.meta | 2 +- .../wechat-default/data-package/game.js.meta | 2 +- Runtime/wechat-default/events.js.meta | 2 +- Runtime/wechat-default/game.js.meta | 2 +- Runtime/wechat-default/game.json.meta | 2 +- Runtime/wechat-default/images.meta | 2 +- .../wechat-default/images/background.jpg.meta | 2 +- .../wechat-default/images/unity_logo.png.meta | 2 +- Runtime/wechat-default/open-data.meta | 2 +- Runtime/wechat-default/open-data/data.meta | 2 +- .../open-data/data/index.js.meta | 2 +- .../open-data/data/utils.js.meta | 2 +- .../wechat-default/open-data/index.js.meta | 2 +- .../wechat-default/open-data/loading.js.meta | 2 +- Runtime/wechat-default/open-data/render.meta | 2 +- .../open-data/render/image.meta | 2 +- .../open-data/render/image/avatar.png.meta | 2 +- .../open-data/render/image/button1.png.meta | 2 +- .../open-data/render/image/button2.png.meta | 2 +- .../open-data/render/image/button3.png.meta | 2 +- .../open-data/render/image/loading.png.meta | 2 +- .../open-data/render/image/nameBg.png.meta | 2 +- .../render/image/rankAvatar.png.meta | 2 +- .../open-data/render/image/rankBg.png.meta | 2 +- .../open-data/render/image/shareBg.png.meta | 2 +- .../open-data/render/image/shareBg2.png.meta | 2 +- .../open-data/render/styles.meta | 2 +- .../render/styles/friendRank.js.meta | 2 +- .../open-data/render/styles/tips.js.meta | 2 +- .../wechat-default/open-data/render/tpls.meta | 2 +- .../open-data/render/tpls/friendRank.js.meta | 2 +- .../open-data/render/tpls/tips.js.meta | 2 +- Runtime/wechat-default/plugin-config.js.meta | 2 +- Runtime/wechat-default/plugins.meta | 2 +- .../plugins/check-update.js.meta | 2 +- .../plugins/screen-adapter.js.meta | 2 +- .../wechat-default/project.config.json.meta | 2 +- Runtime/wechat-default/texture-config.js.meta | 2 +- .../wechat-default/unity-namespace.js.meta | 2 +- Runtime/wechat-default/unity-sdk.meta | 2 +- .../wechat-default/unity-sdk/TCPSocket.meta | 2 +- .../unity-sdk/TCPSocket/index.js.meta | 2 +- .../wechat-default/unity-sdk/UDPSocket.meta | 2 +- .../unity-sdk/UDPSocket/index.js.meta | 2 +- Runtime/wechat-default/unity-sdk/ad.js.meta | 2 +- Runtime/wechat-default/unity-sdk/audio.meta | 2 +- .../unity-sdk/audio/common.js.meta | 2 +- .../unity-sdk/audio/const.js.meta | 2 +- .../unity-sdk/audio/index.js.meta | 2 +- .../unity-sdk/audio/inner-audio.js.meta | 2 +- .../unity-sdk/audio/store.js.meta | 2 +- .../unity-sdk/audio/unity-audio.js.meta | 2 +- .../unity-sdk/audio/utils.js.meta | 2 +- .../unity-sdk/authorize.js.meta | 2 +- .../wechat-default/unity-sdk/bluetooth.meta | 2 +- .../unity-sdk/bluetooth/index.js.meta | 2 +- .../wechat-default/unity-sdk/camera.js.meta | 2 +- .../unity-sdk/canvas-context.js.meta | 2 +- .../wechat-default/unity-sdk/canvas.js.meta | 2 +- Runtime/wechat-default/unity-sdk/chat.js.meta | 2 +- .../wechat-default/unity-sdk/cloud.js.meta | 2 +- Runtime/wechat-default/unity-sdk/conf.js.meta | 2 +- .../unity-sdk/file-info.js.meta | 2 +- Runtime/wechat-default/unity-sdk/fix.js.meta | 2 +- Runtime/wechat-default/unity-sdk/font.meta | 2 +- .../unity-sdk/font/fix-cmap.js.meta | 2 +- .../unity-sdk/font/index.js.meta | 2 +- .../unity-sdk/font/read-metrics.js.meta | 2 +- .../unity-sdk/font/split-sc.js.meta | 2 +- .../unity-sdk/font/util.js.meta | 2 +- Runtime/wechat-default/unity-sdk/fs.js.meta | 2 +- .../unity-sdk/game-club.js.meta | 2 +- .../unity-sdk/game-recorder.js.meta | 2 +- .../wechat-default/unity-sdk/gyroscope.meta | 2 +- .../unity-sdk/gyroscope/index.js.meta | 2 +- .../wechat-default/unity-sdk/index.js.meta | 2 +- .../wechat-default/unity-sdk/logger.js.meta | 2 +- .../unity-sdk/mobileKeyboard.meta | 2 +- .../unity-sdk/mobileKeyboard/index.js.meta | 2 +- .../unity-sdk/module-helper.js.meta | 2 +- .../unity-sdk/open-data.js.meta | 2 +- .../wechat-default/unity-sdk/recorder.js.meta | 2 +- .../wechat-default/unity-sdk/resType.js.meta | 2 +- .../unity-sdk/resTypeOther.js.meta | 2 +- .../wechat-default/unity-sdk/response.js.meta | 2 +- Runtime/wechat-default/unity-sdk/sdk.js.meta | 2 +- .../wechat-default/unity-sdk/share.js.meta | 2 +- .../wechat-default/unity-sdk/storage.js.meta | 2 +- .../wechat-default/unity-sdk/texture.js.meta | 2 +- Runtime/wechat-default/unity-sdk/touch.meta | 2 +- .../unity-sdk/touch/index.js.meta | 2 +- .../unity-sdk/upload-file.js.meta | 2 +- .../wechat-default/unity-sdk/userinfo.js.meta | 2 +- Runtime/wechat-default/unity-sdk/util.js.meta | 2 +- .../wechat-default/unity-sdk/utils.js.meta | 2 +- .../wechat-default/unity-sdk/video.js.meta | 2 +- Runtime/wechat-default/unity-sdk/video.meta | 2 +- .../unity-sdk/video/index.js.meta | 2 +- Runtime/wechat-default/wasmcode.meta | 2 +- Runtime/wechat-default/wasmcode/game.js.meta | 2 +- Runtime/wechat-default/weapp-adapter.js.meta | 2 +- Runtime/wechat-default/workers.meta | 2 +- Runtime/wechat-default/workers/response.meta | 2 +- .../workers/response/index.js.meta | 2 +- package.json | 2 +- 171 files changed, 261 insertions(+), 715 deletions(-) create mode 100644 Editor/BuildProfile/WeixinBuildProfileUpdater.cs create mode 100644 Editor/BuildProfile/WeixinBuildProfileUpdater.cs.meta diff --git a/CHANGELOG.md b/CHANGELOG.md index 92ac350d7..8b3aea7bf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,12 @@ Removed - 删除功能/接口 Fixed - 修复问题 Others - 其他 --> -## 2026-3-15 v0.1.32 【普通更新】 +## 2026-4-2 v0.1.33 【普通更新】 +### Feature +* 普通:升级基础库,增加开放能力接口 +* 普通:导出面板属性兼容旧版本团结引擎BuildProfile + +## 2026-3-16 v0.1.32 【普通更新】 ### Feature * 普通:更新基础库版本 * 普通:擂台赛api新增subScoreKey参数 diff --git a/Editor/BuildProfile/WeixinBuildProfileUpdater.cs b/Editor/BuildProfile/WeixinBuildProfileUpdater.cs new file mode 100644 index 000000000..7e7971395 --- /dev/null +++ b/Editor/BuildProfile/WeixinBuildProfileUpdater.cs @@ -0,0 +1,78 @@ +#if TUANJIE_1_6_OR_NEWER && !TUANJIE_1_8_OR_NEWER + +using System.Collections.Generic; +using UnityEditor; +using UnityEditor.ExternalMiniGame; +using UnityEngine; + +namespace WeChatWASM +{ + [InitializeOnLoad] + public class WeixinBuildProfileUpdater + { + static WeixinBuildProfileUpdater() + { + UpdateBuildProfile(); + } + + public static void UpdateBuildProfile() + { + string buildProfilePath = "Assets/Settings/Build Profiles"; + if (!AssetDatabase.IsValidFolder(buildProfilePath)) + { + return; + } + + string[] guids = AssetDatabase.FindAssets("t:BuildProfile", new[] { buildProfilePath }); + foreach (string guid in guids) + { + string assetPath = AssetDatabase.GUIDToAssetPath(guid); + UnityEditor.Build.Profile.BuildProfile buildProfile = AssetDatabase.LoadAssetAtPath(assetPath); + + if (buildProfile != null) + { + bool isDefaultWeixinSettings = buildProfile.miniGameSettings is DefaultWeChatMiniGameSettings; + + // If use DefaultWeChatMiniGameSettings, convert to WeixinMiniGameSettings + if (isDefaultWeixinSettings) + { + var oldSettings = (DefaultWeChatMiniGameSettings)buildProfile.miniGameSettings; + var editor = new WeixinMiniGameSettingsEditor(); + var newSettings = new WeixinMiniGameSettings(editor); + + newSettings.ProjectConf = new WXProjectConf(); + newSettings.SDKOptions = new SDKOptions(); + newSettings.CompileOptions = new CompileOptions(); + newSettings.CompressTexture = new CompressTexture(); + newSettings.FontOptions = new FontOptions(); + + string projJson = JsonUtility.ToJson(oldSettings.ProjectConf, true); + JsonUtility.FromJsonOverwrite(projJson, newSettings.ProjectConf); + string sdkOptionsJson = JsonUtility.ToJson(oldSettings.SDKOptions, true); + JsonUtility.FromJsonOverwrite(sdkOptionsJson, newSettings.SDKOptions); + string compileOptionsJson = JsonUtility.ToJson(oldSettings.CompileOptions, true); + JsonUtility.FromJsonOverwrite(compileOptionsJson, newSettings.CompileOptions); + string compressTextureJson = JsonUtility.ToJson(oldSettings.CompressTexture, true); + JsonUtility.FromJsonOverwrite(compressTextureJson, newSettings.CompressTexture); + string fontOptionsJson = JsonUtility.ToJson(oldSettings.FontOptions, true); + JsonUtility.FromJsonOverwrite(fontOptionsJson, newSettings.FontOptions); + + var property = typeof(UnityEditor.Build.Profile.BuildProfile).GetProperty("miniGameSettings", + System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance); + property.SetValue(buildProfile, newSettings); + buildProfile.miniGameSettings = newSettings; + + EditorUtility.SetDirty(buildProfile); + AssetDatabase.SaveAssets(); + AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(buildProfile)); + + } + + } + } + } + + } + +} +#endif \ No newline at end of file diff --git a/Editor/BuildProfile/WeixinBuildProfileUpdater.cs.meta b/Editor/BuildProfile/WeixinBuildProfileUpdater.cs.meta new file mode 100644 index 000000000..e38a2c474 --- /dev/null +++ b/Editor/BuildProfile/WeixinBuildProfileUpdater.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 741d5b08eb860f748890537f2389546f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/BuildProfile/WeixinMiniGameSettingsEditor.cs b/Editor/BuildProfile/WeixinMiniGameSettingsEditor.cs index 97225378c..347e6f15e 100644 --- a/Editor/BuildProfile/WeixinMiniGameSettingsEditor.cs +++ b/Editor/BuildProfile/WeixinMiniGameSettingsEditor.cs @@ -26,561 +26,13 @@ namespace WeChatWASM private Dictionary formCheckboxData = new Dictionary(); public Texture tex; + public WXSettingsHelper helper = new WXSettingsHelper(); + public override void OnMiniGameSettingsIMGUI(SerializedObject serializedObject, SerializedProperty miniGameProperty) { - OnSettingsGUI(serializedObject, miniGameProperty); + helper.OnSettingsGUI(serializedObject, miniGameProperty); } - public void OnSettingsGUI(SerializedObject serializedObject, SerializedProperty miniGameProperty) - { - loadData(serializedObject, miniGameProperty); - - scrollRoot = EditorGUILayout.BeginScrollView(scrollRoot); - - GUIStyle linkStyle = new GUIStyle(GUI.skin.label); - linkStyle.normal.textColor = Color.yellow; - linkStyle.hover.textColor = Color.yellow; - linkStyle.stretchWidth = false; - linkStyle.alignment = TextAnchor.UpperLeft; - linkStyle.wordWrap = true; - - foldBaseInfo = EditorGUILayout.Foldout(foldBaseInfo, "基本信息"); - if (foldBaseInfo) - { - EditorGUILayout.BeginVertical("frameBox", GUILayout.ExpandWidth(true)); - - formInput("appid", "游戏AppID"); - formInput("cdn", "游戏资源CDN"); - formInput("projectName", "小游戏项目名"); - formIntPopup("orientation", "游戏方向", new[] { "Portrait", "Landscape", "LandscapeLeft", "LandscapeRight" }, new[] { 0, 1, 2, 3 }); - formInput("memorySize", "UnityHeap预留内存(?)", "单位MB,预分配内存值,超休闲游戏256/中轻度496/重度游戏768,需预估游戏最大UnityHeap值以防止内存自动扩容带来的峰值尖刺。预估方法请查看GIT文档《优化Unity WebGL的内存》"); - - EditorGUILayout.EndVertical(); - } - - foldLoadingConfig = EditorGUILayout.Foldout(foldLoadingConfig, "启动Loading配置"); - if (foldLoadingConfig) - { - EditorGUILayout.BeginVertical("frameBox", GUILayout.ExpandWidth(true)); - - GUILayout.BeginHorizontal(); - string targetBg = "bgImageSrc"; - EditorGUILayout.LabelField(string.Empty, GUILayout.Width(10)); - tex = (Texture)EditorGUILayout.ObjectField("启动背景图/视频封面", tex, typeof(Texture2D), false); - var currentBgSrc = AssetDatabase.GetAssetPath(tex); - if (!string.IsNullOrEmpty(currentBgSrc) && currentBgSrc != formInputData[targetBg]) - { - formInputData[targetBg] = currentBgSrc; - saveData(serializedObject, miniGameProperty); - } - GUILayout.EndHorizontal(); - - formInput("videoUrl", "加载阶段视频URL"); - formIntPopup("assetLoadType", "首包资源加载方式", new[] { "CDN", "小游戏包内" }, new[] { 0, 1 }); - formCheckbox("compressDataPackage", "压缩首包资源(?)", "将首包资源Brotli压缩, 降低资源大小. 注意: 首次启动耗时可能会增加200ms, 仅推荐使用小游戏分包加载时节省包体大小使用"); - formInput("bundleExcludeExtensions", "不自动缓存文件类型(?)", "(使用;分割)当请求url包含资源'cdn+StreamingAssets'时会自动缓存,但StreamingAssets目录下不是所有文件都需缓存,此选项配置不需要自动缓存的文件拓展名。默认值json"); - formInput("bundleHashLength", "Bundle名称Hash长度(?)", "自定义Bundle文件名中hash部分长度,默认值32,用于缓存控制。"); - formInput("preloadFiles", "预下载文件列表(?)", "使用;间隔,支持模糊匹配"); - - EditorGUILayout.EndVertical(); - } - - foldSDKOptions = EditorGUILayout.Foldout(foldSDKOptions, "SDK功能选项"); - if (foldSDKOptions) - { - EditorGUILayout.BeginVertical("frameBox", GUILayout.ExpandWidth(true)); - - formCheckbox("useFriendRelation", "使用好友关系链"); - formCheckbox("useMiniGameChat", "使用社交组件"); - formCheckbox("preloadWXFont", "预加载微信字体(?)", "在game.js执行开始时预载微信系统字体,运行期间可使用WX.GetWXFont获取微信字体"); - formCheckbox("disableMultiTouch", "禁止多点触控"); - - EditorGUILayout.EndVertical(); - } - - foldDebugOptions = EditorGUILayout.Foldout(foldDebugOptions, "调试编译选项"); - if (foldDebugOptions) - { - EditorGUILayout.BeginVertical("frameBox", GUILayout.ExpandWidth(true)); - // formCheckbox("developBuild", "Development Build"); - formCheckbox("autoProfile", "Auto connect Profiler"); - formCheckbox("scriptOnly", "Scripts Only Build"); -#if TUANJIE_2022_3_OR_NEWER - // TODO: if overwrite by OverwritePlayerSettings - bool UseIL2CPP = PlayerSettings.GetScriptingBackend(BuildTargetGroup.WeixinMiniGame) == ScriptingImplementation.IL2CPP; -#else - bool UseIL2CPP = true; -#endif - formCheckbox("il2CppOptimizeSize", "Il2Cpp Optimize Size(?)", "对应于Il2CppCodeGeneration选项,勾选时使用OptimizeSize(默认推荐),生成代码小15%左右,取消勾选则使用OptimizeSpeed。游戏中大量泛型集合的高频访问建议OptimizeSpeed,在使用HybridCLR等第三方组件时只能用OptimizeSpeed。(Dotnet Runtime模式下该选项无效)", !UseIL2CPP); - formCheckbox("profilingFuncs", "Profiling Funcs"); - formCheckbox("profilingMemory", "Profiling Memory"); - - formCheckbox("webgl2", "WebGL2.0(beta)"); - formCheckbox("iOSPerformancePlus", "iOSPerformancePlus(?)", "是否使用iOS高性能+渲染方案,有助于提升渲染兼容性、降低WebContent进程内存"); - formCheckbox("EmscriptenGLX", "EmscriptenGLX(?)", "是否使用EmscriptenGLX渲染方案"); - formCheckbox("iOSMetal", "iOSMetal(?)", "是否使用iOSMetal渲染方案,需要开启iOS高性能+模式,有助于提升运行性能,降低iOS功耗"); - formCheckbox("deleteStreamingAssets", "Clear Streaming Assets"); - formCheckbox("cleanBuild", "Clean WebGL Build"); - // formCheckbox("cleanCloudDev", "Clean Cloud Dev"); - formCheckbox("fbslim", "首包资源优化(?)", "导出时自动清理UnityEditor默认打包但游戏项目从未使用的资源,瘦身首包资源体积。(团结引擎已无需开启该能力)", UnityUtil.GetEngineVersion() > 0, (res) => - { - var fbWin = EditorWindow.GetWindow(typeof(WXFbSettingWindow), false, "首包资源优化配置面板", true); - fbWin.minSize = new Vector2(680, 350); - fbWin.Show(); - }); - formCheckbox("autoAdaptScreen", "自适应屏幕尺寸(?)", "移动端旋转屏幕和PC端拉伸窗口时,自动调整画布尺寸"); - formCheckbox("showMonitorSuggestModal", "显示优化建议弹窗"); - formCheckbox("enableProfileStats", "显示性能面板"); - formCheckbox("enableRenderAnalysis", "显示渲染日志(dev only)"); - - { - formCheckbox("brotliMT", "brotli多线程压缩(?)", "开启多线程压缩可以提高出包速度,但会降低压缩率。如若不使用wasm代码分包请勿用多线程出包上线"); - } - EditorGUILayout.EndVertical(); - } - - if (WXConvertCore.IsInstantGameAutoStreaming()) - { - foldInstantGame = EditorGUILayout.Foldout(foldInstantGame, "Instant Game - AutoStreaming"); - if (foldInstantGame) - { - var automaticfillinstantgame = miniGameProperty.FindPropertyRelative("m_AutomaticFillInstantGame"); - EditorGUILayout.BeginVertical("frameBox", GUILayout.ExpandWidth(true)); - GUILayout.BeginHorizontal(); - EditorGUILayout.LabelField(string.Empty, GUILayout.Width(10)); - formCheckbox("m_AutomaticFillInstantGame", "自动填写AutoStreaming", "仅在开启AutoStreaming生效"); - GUILayout.EndHorizontal(); - formInput("bundlePathIdentifier", "Bundle Path Identifier"); - formInput("dataFileSubPrefix", "Data File Sub Prefix"); - - EditorGUI.BeginDisabledGroup(true); - formCheckbox("autoUploadFirstBundle", "构建后自动上传首包(?)", "仅在开启AutoStreaming生效", true); - EditorGUI.EndDisabledGroup(); - - GUILayout.BeginHorizontal(); - EditorGUILayout.LabelField(string.Empty, GUILayout.Width(10)); - GUILayout.Label(new GUIContent("清理AS配置(?)", "如需关闭AutoStreaming选用默认发布方案则需要清理AS配置项目。"), GUILayout.Width(140)); - EditorGUI.BeginDisabledGroup(WXConvertCore.IsInstantGameAutoStreaming()); - if (GUILayout.Button(new GUIContent("恢复"), GUILayout.Width(60))) - { - var ProjectConf = miniGameProperty.FindPropertyRelative("ProjectConf"); - string identifier = ProjectConf.FindPropertyRelative("bundlePathIdentifier").stringValue; - string[] identifiers = identifier.Split(";"); - string idStr = ""; - foreach (string id in identifiers) - { - if (id != "AS" && id != "CUS/CustomAB") - { - idStr += id + ";"; - } - } - ProjectConf.FindPropertyRelative("bundlePathIdentifier").stringValue = idStr.Trim(';'); - - if (ProjectConf.FindPropertyRelative("dataFileSubPrefix").stringValue == "CUS") - { - ProjectConf.FindPropertyRelative("dataFileSubPrefix").stringValue = ""; - } - loadData(serializedObject, miniGameProperty); - } - EditorGUI.EndDisabledGroup(); - GUILayout.EndHorizontal(); - - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField(string.Empty); - if (GUILayout.Button(new GUIContent("了解Instant Game AutoStreaming", ""), linkStyle)) - { - Application.OpenURL("https://github.com/wechat-miniprogram/minigame-unity-webgl-transform/blob/main/Design/InstantGameGuide.md"); - } - EditorGUILayout.EndHorizontal(); - EditorGUILayout.EndVertical(); - } - } - - { - foldFontOptions = EditorGUILayout.Foldout(foldFontOptions, "字体配置"); - if (foldFontOptions) - { - EditorGUILayout.BeginVertical("frameBox", GUILayout.ExpandWidth(true)); - formCheckbox("CJK_Unified_Ideographs", "基本汉字(?)", "Unicode [0x4e00, 0x9fff]"); - formCheckbox("C0_Controls_and_Basic_Latin", "基本拉丁语(英文大小写、数字、英文标点)(?)", "Unicode [0x0, 0x7f]"); - formCheckbox("CJK_Symbols_and_Punctuation", "中文标点符号(?)", "Unicode [0x3000, 0x303f]"); - formCheckbox("General_Punctuation", "通用标点符号(?)", "Unicode [0x2000, 0x206f]"); - formCheckbox("Enclosed_CJK_Letters_and_Months", "CJK字母及月份(?)", "Unicode [0x3200, 0x32ff]"); - formCheckbox("Vertical_Forms", "中文竖排标点(?)", "Unicode [0xfe10, 0xfe1f]"); - formCheckbox("CJK_Compatibility_Forms", "CJK兼容符号(?)", "Unicode [0xfe30, 0xfe4f]"); - formCheckbox("Miscellaneous_Symbols", "杂项符号(?)", "Unicode [0x2600, 0x26ff]"); - formCheckbox("CJK_Compatibility", "CJK特殊符号(?)", "Unicode [0x3300, 0x33ff]"); - formCheckbox("Halfwidth_and_Fullwidth_Forms", "全角ASCII、全角中英文标点、半宽片假名、半宽平假名、半宽韩文字母(?)", "Unicode [0xff00, 0xffef]"); - formCheckbox("Dingbats", "装饰符号(?)", "Unicode [0x2700, 0x27bf]"); - formCheckbox("Letterlike_Symbols", "字母式符号(?)", "Unicode [0x2100, 0x214f]"); - formCheckbox("Enclosed_Alphanumerics", "带圈或括号的字母数字(?)", "Unicode [0x2460, 0x24ff]"); - formCheckbox("Number_Forms", "数字形式(?)", "Unicode [0x2150, 0x218f]"); - formCheckbox("Currency_Symbols", "货币符号(?)", "Unicode [0x20a0, 0x20cf]"); - formCheckbox("Arrows", "箭头(?)", "Unicode [0x2190, 0x21ff]"); - formCheckbox("Geometric_Shapes", "几何图形(?)", "Unicode [0x25a0, 0x25ff]"); - formCheckbox("Mathematical_Operators", "数学运算符号(?)", "Unicode [0x2200, 0x22ff]"); - formInput("CustomUnicode", "自定义Unicode(?)", "将填入的所有字符强制加入字体预加载列表"); - EditorGUILayout.EndVertical(); - } - } - - EditorGUILayout.EndScrollView(); - saveData(serializedObject, miniGameProperty); - } - - private void loadData(SerializedObject serializedObject, SerializedProperty miniGameProperty) - { - serializedObject.UpdateIfRequiredOrScript(); - var ProjectConf = miniGameProperty.FindPropertyRelative("ProjectConf"); - - // Instant Game - if (WXConvertCore.IsInstantGameAutoStreaming()) - { - var automaticfillinstantgame = miniGameProperty.FindPropertyRelative("m_AutomaticFillInstantGame"); - if (automaticfillinstantgame.boolValue) - { - ProjectConf.FindPropertyRelative("CDN").stringValue = WXConvertCore.GetInstantGameAutoStreamingCDN(); - if (!ProjectConf.FindPropertyRelative("bundlePathIdentifier").stringValue.Contains("AS;")) - { - ProjectConf.FindPropertyRelative("bundlePathIdentifier").stringValue += "AS;"; - } - if (!ProjectConf.FindPropertyRelative("bundlePathIdentifier").stringValue.Contains("CUS/CustomAB;")) - { - ProjectConf.FindPropertyRelative("bundlePathIdentifier").stringValue += "CUS/CustomAB;"; - } - ProjectConf.FindPropertyRelative("dataFileSubPrefix").stringValue = "CUS"; - } - } - - setData("projectName", ProjectConf.FindPropertyRelative("projectName").stringValue); - setData("appid", ProjectConf.FindPropertyRelative("Appid").stringValue); - setData("cdn", ProjectConf.FindPropertyRelative("CDN").stringValue); - setData("assetLoadType", ProjectConf.FindPropertyRelative("assetLoadType").intValue); - setData("compressDataPackage", ProjectConf.FindPropertyRelative("compressDataPackage").boolValue); - setData("videoUrl", ProjectConf.FindPropertyRelative("VideoUrl").stringValue); - setData("orientation", (int)ProjectConf.FindPropertyRelative("Orientation").enumValueIndex); - //setData("dst", ProjectConf.FindPropertyRelative("relativeDST").stringValue); - setData("bundleHashLength", ProjectConf.FindPropertyRelative("bundleHashLength").intValue.ToString()); - setData("bundlePathIdentifier", ProjectConf.FindPropertyRelative("bundlePathIdentifier").stringValue); - setData("bundleExcludeExtensions", ProjectConf.FindPropertyRelative("bundleExcludeExtensions").stringValue); - setData("preloadFiles", ProjectConf.FindPropertyRelative("preloadFiles").stringValue); - - var CompileOptions = miniGameProperty.FindPropertyRelative("CompileOptions"); - // setData("developBuild", CompileOptions.FindPropertyRelative("DevelopBuild").boolValue); - setData("autoProfile", CompileOptions.FindPropertyRelative("AutoProfile").boolValue); - setData("scriptOnly", CompileOptions.FindPropertyRelative("ScriptOnly").boolValue); - setData("il2CppOptimizeSize", CompileOptions.FindPropertyRelative("Il2CppOptimizeSize").boolValue); - setData("profilingFuncs", CompileOptions.FindPropertyRelative("profilingFuncs").boolValue); - setData("profilingMemory", CompileOptions.FindPropertyRelative("ProfilingMemory").boolValue); - setData("deleteStreamingAssets", CompileOptions.FindPropertyRelative("DeleteStreamingAssets").boolValue); - setData("cleanBuild", CompileOptions.FindPropertyRelative("CleanBuild").boolValue); - setData("customNodePath", CompileOptions.FindPropertyRelative("CustomNodePath").stringValue); - setData("webgl2", CompileOptions.FindPropertyRelative("Webgl2").boolValue); - setData("iOSPerformancePlus", CompileOptions.FindPropertyRelative("enableIOSPerformancePlus").boolValue); - setData("iOSMetal", CompileOptions.FindPropertyRelative("enableiOSMetal").boolValue); - setData("EmscriptenGLX", CompileOptions.FindPropertyRelative("enableEmscriptenGLX").boolValue); - setData("fbslim", CompileOptions.FindPropertyRelative("fbslim").boolValue); - - var SDKOptions = miniGameProperty.FindPropertyRelative("SDKOptions"); - setData("useFriendRelation", SDKOptions.FindPropertyRelative("UseFriendRelation").boolValue); - setData("useMiniGameChat", SDKOptions.FindPropertyRelative("UseMiniGameChat").boolValue); - setData("preloadWXFont", SDKOptions.FindPropertyRelative("PreloadWXFont").boolValue); - setData("disableMultiTouch", SDKOptions.FindPropertyRelative("disableMultiTouch").boolValue); - setData("bgImageSrc", ProjectConf.FindPropertyRelative("bgImageSrc").stringValue); - tex = AssetDatabase.LoadAssetAtPath(ProjectConf.FindPropertyRelative("bgImageSrc").stringValue); - setData("memorySize", ProjectConf.FindPropertyRelative("MemorySize").intValue.ToString()); - setData("hideAfterCallMain", ProjectConf.FindPropertyRelative("HideAfterCallMain").boolValue); - - setData("dataFileSubPrefix", ProjectConf.FindPropertyRelative("dataFileSubPrefix").stringValue); - setData("maxStorage", ProjectConf.FindPropertyRelative("maxStorage").intValue.ToString()); - setData("defaultReleaseSize", ProjectConf.FindPropertyRelative("defaultReleaseSize").intValue.ToString()); - setData("texturesHashLength", ProjectConf.FindPropertyRelative("texturesHashLength").intValue.ToString()); - setData("texturesPath", ProjectConf.FindPropertyRelative("texturesPath").stringValue); - setData("needCacheTextures", ProjectConf.FindPropertyRelative("needCacheTextures").boolValue); - setData("loadingBarWidth", ProjectConf.FindPropertyRelative("loadingBarWidth").intValue.ToString()); - setData("needCheckUpdate", ProjectConf.FindPropertyRelative("needCheckUpdate").boolValue); - setData("disableHighPerformanceFallback", ProjectConf.FindPropertyRelative("disableHighPerformanceFallback").boolValue); - setData("autoAdaptScreen", CompileOptions.FindPropertyRelative("autoAdaptScreen").boolValue); - setData("showMonitorSuggestModal", CompileOptions.FindPropertyRelative("showMonitorSuggestModal").boolValue); - setData("enableProfileStats", CompileOptions.FindPropertyRelative("enableProfileStats").boolValue); - setData("enableRenderAnalysis", CompileOptions.FindPropertyRelative("enableRenderAnalysis").boolValue); - setData("brotliMT", CompileOptions.FindPropertyRelative("brotliMT").boolValue); - setData("autoUploadFirstBundle", true); - setData("m_AutomaticFillInstantGame", miniGameProperty.FindPropertyRelative("m_AutomaticFillInstantGame").boolValue); - - // font options - var FontOptions = miniGameProperty.FindPropertyRelative("FontOptions"); - setData("CJK_Unified_Ideographs", FontOptions.FindPropertyRelative("CJK_Unified_Ideographs").boolValue); - setData("C0_Controls_and_Basic_Latin", FontOptions.FindPropertyRelative("C0_Controls_and_Basic_Latin").boolValue); - setData("CJK_Symbols_and_Punctuation", FontOptions.FindPropertyRelative("CJK_Symbols_and_Punctuation").boolValue); - setData("General_Punctuation", FontOptions.FindPropertyRelative("General_Punctuation").boolValue); - setData("Enclosed_CJK_Letters_and_Months", FontOptions.FindPropertyRelative("Enclosed_CJK_Letters_and_Months").boolValue); - setData("Vertical_Forms", FontOptions.FindPropertyRelative("Vertical_Forms").boolValue); - setData("CJK_Compatibility_Forms", FontOptions.FindPropertyRelative("CJK_Compatibility_Forms").boolValue); - setData("Miscellaneous_Symbols", FontOptions.FindPropertyRelative("Miscellaneous_Symbols").boolValue); - setData("CJK_Compatibility", FontOptions.FindPropertyRelative("CJK_Compatibility").boolValue); - setData("Halfwidth_and_Fullwidth_Forms", FontOptions.FindPropertyRelative("Halfwidth_and_Fullwidth_Forms").boolValue); - setData("Dingbats", FontOptions.FindPropertyRelative("Dingbats").boolValue); - setData("Letterlike_Symbols", FontOptions.FindPropertyRelative("Letterlike_Symbols").boolValue); - setData("Enclosed_Alphanumerics", FontOptions.FindPropertyRelative("Enclosed_Alphanumerics").boolValue); - setData("Number_Forms", FontOptions.FindPropertyRelative("Number_Forms").boolValue); - setData("Currency_Symbols", FontOptions.FindPropertyRelative("Currency_Symbols").boolValue); - setData("Arrows", FontOptions.FindPropertyRelative("Arrows").boolValue); - setData("Geometric_Shapes", FontOptions.FindPropertyRelative("Geometric_Shapes").boolValue); - setData("Mathematical_Operators", FontOptions.FindPropertyRelative("Mathematical_Operators").boolValue); - setData("CustomUnicode", FontOptions.FindPropertyRelative("CustomUnicode").stringValue); - } - - private void saveData(SerializedObject serializedObject, SerializedProperty miniGameProperty) - { - serializedObject.UpdateIfRequiredOrScript(); - - var ProjectConf = miniGameProperty.FindPropertyRelative("ProjectConf"); - ProjectConf.FindPropertyRelative("projectName").stringValue = getDataInput("projectName"); - ProjectConf.FindPropertyRelative("Appid").stringValue = getDataInput("appid"); - ProjectConf.FindPropertyRelative("CDN").stringValue = getDataInput("cdn"); - ProjectConf.FindPropertyRelative("assetLoadType").intValue = getDataPop("assetLoadType"); - ProjectConf.FindPropertyRelative("compressDataPackage").boolValue = getDataCheckbox("compressDataPackage"); - ProjectConf.FindPropertyRelative("VideoUrl").stringValue = getDataInput("videoUrl"); - ProjectConf.FindPropertyRelative("Orientation").enumValueIndex = getDataPop("orientation"); - ProjectConf.FindPropertyRelative("relativeDST").stringValue = serializedObject.FindProperty("m_BuildPath").stringValue; - ProjectConf.FindPropertyRelative("DST").stringValue = GetAbsolutePath(config.ProjectConf.relativeDST); - - ProjectConf.FindPropertyRelative("bundleHashLength").intValue = int.Parse(getDataInput("bundleHashLength")); - ProjectConf.FindPropertyRelative("bundlePathIdentifier").stringValue = getDataInput("bundlePathIdentifier"); - ProjectConf.FindPropertyRelative("bundleExcludeExtensions").stringValue = getDataInput("bundleExcludeExtensions"); - ProjectConf.FindPropertyRelative("preloadFiles").stringValue = getDataInput("preloadFiles"); - - var CompileOptions = miniGameProperty.FindPropertyRelative("CompileOptions"); - - CompileOptions.FindPropertyRelative("DevelopBuild").boolValue = serializedObject.FindProperty("m_PlatformSettings").FindPropertyRelative("m_Development").boolValue; - CompileOptions.FindPropertyRelative("AutoProfile").boolValue = getDataCheckbox("autoProfile"); - CompileOptions.FindPropertyRelative("ScriptOnly").boolValue = getDataCheckbox("scriptOnly"); - CompileOptions.FindPropertyRelative("Il2CppOptimizeSize").boolValue = getDataCheckbox("il2CppOptimizeSize"); - CompileOptions.FindPropertyRelative("profilingFuncs").boolValue = getDataCheckbox("profilingFuncs"); - CompileOptions.FindPropertyRelative("ProfilingMemory").boolValue = getDataCheckbox("profilingMemory"); - CompileOptions.FindPropertyRelative("DeleteStreamingAssets").boolValue = getDataCheckbox("deleteStreamingAssets"); - CompileOptions.FindPropertyRelative("CleanBuild").boolValue = getDataCheckbox("cleanBuild"); - CompileOptions.FindPropertyRelative("CustomNodePath").stringValue = getDataInput("customNodePath"); - CompileOptions.FindPropertyRelative("Webgl2").boolValue = getDataCheckbox("webgl2"); - CompileOptions.FindPropertyRelative("enableIOSPerformancePlus").boolValue = getDataCheckbox("iOSPerformancePlus"); - CompileOptions.FindPropertyRelative("enableiOSMetal").boolValue = getDataCheckbox("iOSMetal"); - CompileOptions.FindPropertyRelative("enableEmscriptenGLX").boolValue = getDataCheckbox("EmscriptenGLX"); - CompileOptions.FindPropertyRelative("fbslim").boolValue = getDataCheckbox("fbslim"); - - var SDKOptions = miniGameProperty.FindPropertyRelative("SDKOptions"); - SDKOptions.FindPropertyRelative("UseFriendRelation").boolValue = getDataCheckbox("useFriendRelation"); - SDKOptions.FindPropertyRelative("UseMiniGameChat").boolValue = getDataCheckbox("useMiniGameChat"); - SDKOptions.FindPropertyRelative("PreloadWXFont").boolValue = getDataCheckbox("preloadWXFont"); - SDKOptions.FindPropertyRelative("disableMultiTouch").boolValue = getDataCheckbox("disableMultiTouch"); - ProjectConf.FindPropertyRelative("bgImageSrc").stringValue = getDataInput("bgImageSrc"); - ProjectConf.FindPropertyRelative("MemorySize").intValue = int.Parse(getDataInput("memorySize")); - ProjectConf.FindPropertyRelative("HideAfterCallMain").boolValue = getDataCheckbox("hideAfterCallMain"); - ProjectConf.FindPropertyRelative("dataFileSubPrefix").stringValue = getDataInput("dataFileSubPrefix"); - ProjectConf.FindPropertyRelative("maxStorage").intValue = int.Parse(getDataInput("maxStorage")); - ProjectConf.FindPropertyRelative("defaultReleaseSize").intValue = int.Parse(getDataInput("defaultReleaseSize")); - ProjectConf.FindPropertyRelative("texturesHashLength").intValue = int.Parse(getDataInput("texturesHashLength")); - ProjectConf.FindPropertyRelative("texturesPath").stringValue = getDataInput("texturesPath"); - ProjectConf.FindPropertyRelative("needCacheTextures").boolValue = getDataCheckbox("needCacheTextures"); - ProjectConf.FindPropertyRelative("loadingBarWidth").intValue = int.Parse(getDataInput("loadingBarWidth")); - ProjectConf.FindPropertyRelative("needCheckUpdate").boolValue = getDataCheckbox("needCheckUpdate"); - ProjectConf.FindPropertyRelative("disableHighPerformanceFallback").boolValue = getDataCheckbox("disableHighPerformanceFallback"); - CompileOptions.FindPropertyRelative("autoAdaptScreen").boolValue = getDataCheckbox("autoAdaptScreen"); - CompileOptions.FindPropertyRelative("showMonitorSuggestModal").boolValue = getDataCheckbox("showMonitorSuggestModal"); - CompileOptions.FindPropertyRelative("enableProfileStats").boolValue = getDataCheckbox("enableProfileStats"); - CompileOptions.FindPropertyRelative("enableRenderAnalysis").boolValue = getDataCheckbox("enableRenderAnalysis"); - CompileOptions.FindPropertyRelative("brotliMT").boolValue = getDataCheckbox("brotliMT"); - - // font options - var FontOptions = miniGameProperty.FindPropertyRelative("FontOptions"); - FontOptions.FindPropertyRelative("CJK_Unified_Ideographs").boolValue = getDataCheckbox("CJK_Unified_Ideographs"); - FontOptions.FindPropertyRelative("C0_Controls_and_Basic_Latin").boolValue = getDataCheckbox("C0_Controls_and_Basic_Latin"); - FontOptions.FindPropertyRelative("CJK_Symbols_and_Punctuation").boolValue = getDataCheckbox("CJK_Symbols_and_Punctuation"); - FontOptions.FindPropertyRelative("General_Punctuation").boolValue = getDataCheckbox("General_Punctuation"); - FontOptions.FindPropertyRelative("Enclosed_CJK_Letters_and_Months").boolValue = getDataCheckbox("Enclosed_CJK_Letters_and_Months"); - FontOptions.FindPropertyRelative("Vertical_Forms").boolValue = getDataCheckbox("Vertical_Forms"); - FontOptions.FindPropertyRelative("CJK_Compatibility_Forms").boolValue = getDataCheckbox("CJK_Compatibility_Forms"); - FontOptions.FindPropertyRelative("Miscellaneous_Symbols").boolValue = getDataCheckbox("Miscellaneous_Symbols"); - FontOptions.FindPropertyRelative("CJK_Compatibility").boolValue = getDataCheckbox("CJK_Compatibility"); - FontOptions.FindPropertyRelative("Halfwidth_and_Fullwidth_Forms").boolValue = getDataCheckbox("Halfwidth_and_Fullwidth_Forms"); - FontOptions.FindPropertyRelative("Dingbats").boolValue = getDataCheckbox("Dingbats"); - FontOptions.FindPropertyRelative("Letterlike_Symbols").boolValue = getDataCheckbox("Letterlike_Symbols"); - FontOptions.FindPropertyRelative("Enclosed_Alphanumerics").boolValue = getDataCheckbox("Enclosed_Alphanumerics"); - FontOptions.FindPropertyRelative("Number_Forms").boolValue = getDataCheckbox("Number_Forms"); - FontOptions.FindPropertyRelative("Currency_Symbols").boolValue = getDataCheckbox("Currency_Symbols"); - FontOptions.FindPropertyRelative("Arrows").boolValue = getDataCheckbox("Arrows"); - FontOptions.FindPropertyRelative("Geometric_Shapes").boolValue = getDataCheckbox("Geometric_Shapes"); - FontOptions.FindPropertyRelative("Mathematical_Operators").boolValue = getDataCheckbox("Mathematical_Operators"); - FontOptions.FindPropertyRelative("CustomUnicode").stringValue = getDataInput("CustomUnicode"); - FontOptions.FindPropertyRelative("Arrows").boolValue = getDataCheckbox("Arrows"); - FontOptions.FindPropertyRelative("Geometric_Shapes").boolValue = getDataCheckbox("Geometric_Shapes"); - FontOptions.FindPropertyRelative("Mathematical_Operators").boolValue = getDataCheckbox("Mathematical_Operators"); - FontOptions.FindPropertyRelative("CustomUnicode").stringValue = getDataInput("CustomUnicode"); - - miniGameProperty.FindPropertyRelative("m_AutomaticFillInstantGame").boolValue = getDataCheckbox("m_AutomaticFillInstantGame"); - - serializedObject.ApplyModifiedProperties(); - } - - private bool getDataCheckbox(string target) - { - if (formCheckboxData.ContainsKey(target)) - return formCheckboxData[target]; - return false; - } - - private string getDataInput(string target) - { - if (formInputData.ContainsKey(target)) - return formInputData[target]; - return ""; - } - - private int getDataPop(string target) - { - if (formIntPopupData.ContainsKey(target)) - return formIntPopupData[target]; - return 0; - } - - private void setData(string target, string value) - { - if (formInputData.ContainsKey(target)) - { - formInputData[target] = value; - } - else - { - formInputData.Add(target, value); - } - } - - private void setData(string target, bool value) - { - if (formCheckboxData.ContainsKey(target)) - { - formCheckboxData[target] = value; - } - else - { - formCheckboxData.Add(target, value); - } - } - - private void setData(string target, int value) - { - if (formIntPopupData.ContainsKey(target)) - { - formIntPopupData[target] = value; - } - else - { - formIntPopupData.Add(target, value); - } - } - - private void formInput(string target, string label, string help = null) - { - if (!formInputData.ContainsKey(target)) - { - formInputData[target] = ""; - } - GUILayout.BeginHorizontal(); - EditorGUILayout.LabelField(string.Empty, GUILayout.Width(10)); - if (help == null) - { - GUILayout.Label(label, GUILayout.Width(140)); - } - else - { - GUILayout.Label(new GUIContent(label, help), GUILayout.Width(140)); - } - formInputData[target] = GUILayout.TextField(formInputData[target], GUILayout.MaxWidth(EditorGUIUtility.currentViewWidth - 195)); - GUILayout.EndHorizontal(); - } - - private void formCheckbox(string target, string label, string help = null, bool disable = false, Action setting = null) - { - if (!formCheckboxData.ContainsKey(target)) - { - formCheckboxData[target] = false; - } - GUILayout.BeginHorizontal(); - EditorGUILayout.LabelField(string.Empty, GUILayout.Width(10)); - if (help == null) - { - GUILayout.Label(label, GUILayout.Width(140)); - } - else - { - GUILayout.Label(new GUIContent(label, help), GUILayout.Width(140)); - } - EditorGUI.BeginDisabledGroup(disable); - formCheckboxData[target] = EditorGUILayout.Toggle(disable ? false : formCheckboxData[target]); - - if (setting != null) - { - EditorGUILayout.LabelField("", GUILayout.Width(10)); - // ���ð�ť - if (GUILayout.Button(new GUIContent("����"), GUILayout.Width(40), GUILayout.Height(18))) - { - setting?.Invoke(true); - } - EditorGUILayout.LabelField("", GUILayout.MinWidth(10)); - } - - EditorGUI.EndDisabledGroup(); - - if (setting == null) - EditorGUILayout.LabelField(string.Empty); - GUILayout.EndHorizontal(); - } - - private void formIntPopup(string target, string label, string[] options, int[] values) - { - if (!formIntPopupData.ContainsKey(target)) - { - formIntPopupData[target] = 0; - } - GUILayout.BeginHorizontal(); - EditorGUILayout.LabelField(string.Empty, GUILayout.Width(10)); - GUILayout.Label(label, GUILayout.Width(140)); - formIntPopupData[target] = EditorGUILayout.IntPopup(formIntPopupData[target], options, values, GUILayout.MaxWidth(EditorGUIUtility.currentViewWidth - 195)); - GUILayout.EndHorizontal(); - } - - public static bool IsAbsolutePath(string path) - { - // 检查是否为空或空白 - if (string.IsNullOrWhiteSpace(path)) - { - return false; - } - - // 在 Windows 上,检查驱动器字母或网络路径 - if (Application.platform == RuntimePlatform.WindowsEditor && Path.IsPathRooted(path)) - { - return true; - } - - // 在 Unix/Linux 和 macOS 上,检查是否以 '/' 开头 - if (Application.platform == RuntimePlatform.OSXEditor && path.StartsWith("/")) - { - return true; - } - - return false; // 否则为相对路径 - } - - public static string GetAbsolutePath(string path) - { - if (IsAbsolutePath(path)) - { - return path; - } - string projectRootPath = System.IO.Path.GetFullPath(Application.dataPath + "/../"); - return Path.Combine(projectRootPath, path); - } } } #endif diff --git a/Editor/WXPluginVersion.cs b/Editor/WXPluginVersion.cs index 1daae2571..6fb69db70 100644 --- a/Editor/WXPluginVersion.cs +++ b/Editor/WXPluginVersion.cs @@ -2,7 +2,7 @@ namespace WeChatWASM { public class WXPluginVersion { - public static string pluginVersion = "202603160259"; // 这一行不要改他,导出的时候会自动替换 + public static string pluginVersion = "202604020918"; // 这一行不要改他,导出的时候会自动替换 } public class WXPluginConf diff --git a/Editor/wx-editor.dll b/Editor/wx-editor.dll index 4443e0e0d886bd50d8a7e064c9879e97cdf53277..2d7d364bf466b974fe99a26ef8fc491e35cfc2c2 100644 GIT binary patch delta 5074 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 diff --git a/Runtime/Plugins/wx-runtime-editor.dll b/Runtime/Plugins/wx-runtime-editor.dll index 2c9f8ea647b4877f8cb65309d7c49c753b076445..1f6e473b4723ef16e15da1b867b69d0f5eb5cdde 100644 GIT binary patch delta 1747 zcma)6eQZ-z6u;-ZwP~SqtD`W|En~Q1p;QO7bPbZQb{z~hC)t`su@OTxF2brPk(V;u zm|G!(@iE*RAw2)f`WWF{IV5nPO(d)rs{r|+L%e&_3V z&bjy9w!8Ulck>VIR>Gc7+PhQT@Ky>MHDw5n^r z#m-gfA!lZ!*jHJ0j@Sd8X(#Nskd&6P6x$xkBxpD7XeXfy2C9-VMol8*zqzeNGVg{c zrswgRB2-0(TXVl=_ZvmEcG~c9V#mX2rt*nm{8$|3;5?ilVJ8FVkLbc$soc>wrE*6P zC2-q(JSZ|wmC4hXD#KGW;$G`K$hHHW#_6n=d{4V>Acd6nM}oe0@yb4cNXj!}$0j43|(>uC;iP;McYCj>XsE z96CX*w-#e0qSVnrhE;gpnS@{ZG9pmRlCW6QnUmOS85T7Ob~fwlG$w)d>yf=wrB-KJ z>(fF}GuMli@%nn4oJ+W(8Q15KdEXW}$mJ~h>pkW2X} zA=LS;1X_)>TU4$Z)-(yFc6yGc_N9NF#;XR)a~UK2PONc*9e;gCIiC;S|a2p>O5co2W zzb|k*Zx|HV%w4DP#8a?NyM7mwu#U&?;lcT|h+K;@$E=DL*cgrAwkU5~RS>)mqb6al zM^zi4C<-38C?%O-SB}d6wkU^YYG(_T^0Hucd0?sE<9COA{^f2@r8nTN^p*$QUSCDX zQxU4F4weV__l3&vaGBp*8C>r5_}reVs*u|gs0z6K72ZnsGH+<9C*Th*Sstj+E{-du i75^tv{Gl`6c%=GH;=AhMJzvCE-u}zXi@sETi2MumU)F~J delta 1747 zcma)6e@xV67=NGV%dtB-1{a>l4#tnbPVfr21I}5Sa2yIkmRcDHJ9{gO(bvN?wKyKVDH>db9QLbj zglojioAi*8ctErtVI_J*0bX z6_yk5OOl^9>}9@8z4q<(SR{@0YmBK@^itldR+>js2d%h5aC(C@E^a^@u@wT!`zd-q zODhT&<5`Iq1nP8RBW3}4n@z*)@OIsMCkdTEqwZNZ$&Pu#R`>)a*|^TsJR5px#Db_0 zyHKi!Os)&DZzAjhu}3;nhi$l-l=4}K9rT71)Y~?+kP&5U zRw$~bYOyk2U5)pX2)8xh?kF-JZvX+$p#IpJAQBFj>fn&cuIo8(^JYmz&^zRK=5 zi7lyCzf7<4%a8^?wovV#{WJ|>?3;MeOhNN4q7F|zf@8`K4bE5B8eDez>sbeF>mo5< zgk2`q7h&_nE=Sl`#2)HQjcb>ZITHAecDnN<)!ZT5I=2efJ7moL4qOy%yo)xv5P@jF zAu=P}iS-*gU80$z?7Q{T&#m#PmH>t*?`lAvT-Q+y(OFlr)-~z&wM?xKO7&n+F6FbJ zQ0EIlv_#WxQJFLBtP@IY^c<}mU;TAz<_zW+!bbRwSj}EN#Mv#Y)pyI6qpEh!u>ED- zH_|QNiVsdmiK!EK3+ch^JteT6zy7|!KJFP17~r2R$nVQZlDkyg6Zq3bezJpcdz diff --git a/Runtime/Plugins/wx-runtime-editor.xml.meta b/Runtime/Plugins/wx-runtime-editor.xml.meta index 4006ea299..f9e17ee46 100644 --- a/Runtime/Plugins/wx-runtime-editor.xml.meta +++ b/Runtime/Plugins/wx-runtime-editor.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 59f30477a8bb77aeb6d56b69f0799388 +guid: 592f368c3debdb3288fb316f16187f62 DefaultImporter: externalObjects: {} userData: diff --git a/Runtime/Plugins/wx-runtime.dll b/Runtime/Plugins/wx-runtime.dll index b5bebdce29223d342daa29fb3f9500e01d2a78f6..272430394392eab474d16bfa377de7f40c5bf514 100644 GIT binary patch delta 48 zcmZoz!r!oje?kXyfXTVW?$&O`)^4V)-OQF10{%?}9WgT>xvk$69v)>ET(