Auto-publish.

This commit is contained in:
nebulaliu 2025-10-17 16:05:16 +08:00
parent 85f060e303
commit 116107bdae
177 changed files with 1178 additions and 179 deletions

View File

@ -0,0 +1,136 @@
#if TUANJIE_1_4_OR_NEWER
using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Reflection;
using UnityEditor;
using UnityEngine;
using UnityEditor.Build.Profile;
namespace WeChatWASM
{
public class WeixinMiniGameSettings : MiniGameSettings
{
public WXProjectConf ProjectConf;
public SDKOptions SDKOptions;
public CompileOptions CompileOptions;
public CompressTexture CompressTexture;
public List<string> PlayerPrefsKeys = new List<string>();
public FontOptions FontOptions;
[SerializeField] public bool m_AutomaticFillInstantGame = true;
public WeixinMiniGameSettings(MiniGameSettingsEditor editor) : base(editor)
{
}
public bool PreprocessBuild(BuildProfile buildProfile, BuildOptions options)
{
bool result = true;
if (!string.IsNullOrEmpty(buildProfile.buildPath))
{
this.ProjectConf.DST = buildProfile.buildPath;
}
else
{
Debug.LogError("Build Path is empty!");
result = false;
}
this.CompileOptions.DevelopBuild = buildProfile.platformSettings.development;
this.CompileOptions.AutoProfile = buildProfile.platformSettings.connectProfiler;
this.CompileOptions.CleanBuild = ((int)options & (int)BuildOptions.CleanBuildCache) != 0;
this.CompileOptions.ScriptOnly = ((int)options & (int)BuildOptions.BuildScriptsOnly) != 0;
return result;
}
internal void FillAutoStreamingAutomatically()
{
// Instant Game
if (WXConvertCore.IsInstantGameAutoStreaming())
{
if (m_AutomaticFillInstantGame)
{
ProjectConf.CDN = WXConvertCore.GetInstantGameAutoStreamingCDN();
if (!ProjectConf.bundlePathIdentifier.Contains("CUS/CustomAB;"))
{
ProjectConf.bundlePathIdentifier = "CUS/CustomAB;" + ProjectConf.bundlePathIdentifier;
}
if (!ProjectConf.bundlePathIdentifier.Contains("AS;"))
{
ProjectConf.bundlePathIdentifier = "AS;" + ProjectConf.bundlePathIdentifier;
}
ProjectConf.dataFileSubPrefix = "CUS";
}
}
}
public static void AutoStreamingLoad()
{
if (!WXConvertCore.IsInstantGameAutoStreaming())
{
return;
}
// Generate
Type asTextureUIType = Type.GetType("Unity.AutoStreaming.ASTextureUI,Unity.InstantGame.Editor");
if (asTextureUIType == null)
{
Debug.LogError("Type 'Unity.AutoStreaming.ASTextureUI' not found. ");
return;
}
MethodInfo generateTextureAssetBundlesMethod = asTextureUIType.GetMethod("GenerateTextureAssetBundles", BindingFlags.NonPublic | BindingFlags.Static);
generateTextureAssetBundlesMethod?.Invoke(null, new object[] { false });
// reflection to get WXConvertCore.FirstBundlePath
String FirstBundlePath = "";
var type = Type.GetType("WeChatWASM.WXConvertCore,WxEditor");
if (type == null)
{
Debug.LogError("Type 'WeChatWASM.WXConvertCore,WxEditor' not found. ");
return;
}
FieldInfo fieldInfo = type.GetField("FirstBundlePath", BindingFlags.Public | BindingFlags.Static);
if (fieldInfo != null)
{
FirstBundlePath = fieldInfo.GetValue(null) as String;
}
if (!string.IsNullOrEmpty(FirstBundlePath) && File.Exists(FirstBundlePath))
{
Type igBuildPipelineType = Type.GetType("Unity.InstantGame.IGBuildPipeline,Unity.InstantGame.Editor");
if (igBuildPipelineType == null)
{
Debug.LogError("Type 'Unity.InstantGame.IGBuildPipeline' not found. ");
return;
}
MethodInfo uploadMethod = igBuildPipelineType.GetMethod("UploadWeChatDataFile", BindingFlags.Public | BindingFlags.Static);
bool returnValue = false;
if (uploadMethod != null)
{
object[] parameters = new object[] { FirstBundlePath };
object result = uploadMethod.Invoke(null, parameters);
returnValue = Convert.ToBoolean(result);
}
if (returnValue)
{
Debug.Log("转换完成并成功上传首包资源");
}
else
{
Debug.LogError("首包资源上传失败请检查网络以及Auto Streaming配置是否正确。");
}
}
else
{
Debug.LogError("转换失败");
}
}
}
}
#endif

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 35f480205054085db3ceb2be04b7e97a
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,586 @@
#if TUANJIE_1_4_OR_NEWER
using System;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using UnityEditor;
using UnityEditor.Build.Profile;
using UnityEngine;
using static WeChatWASM.WXConvertCore;
namespace WeChatWASM
{
public class WeixinMiniGameSettingsEditor : MiniGameSettingsEditor
{
private Vector2 scrollRoot;
private bool foldBaseInfo = true;
private bool foldLoadingConfig = true;
private bool foldSDKOptions = true;
private bool foldDebugOptions = true;
private bool foldInstantGame = false;
private bool foldFontOptions = false;
private Dictionary<string, string> formInputData = new Dictionary<string, string>();
private Dictionary<string, int> formIntPopupData = new Dictionary<string, int>();
private Dictionary<string, bool> formCheckboxData = new Dictionary<string, bool>();
public Texture tex;
public override void OnMiniGameSettingsIMGUI(SerializedObject serializedObject, SerializedProperty miniGameProperty)
{
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<Texture>(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<bool> 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));
// <20><><EFBFBD>ð<EFBFBD>ť
if (GUILayout.Button(new GUIContent("<22><><EFBFBD><EFBFBD>"), 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

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: df4d545d2ba5ed176543212d06fd4afd
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,183 @@
#if TUANJIE_1_4_OR_NEWER
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEditor;
using UnityEditor.Build.Profile;
using UnityEngine;
using UnityEngine.Rendering;
namespace WeChatWASM
{
[InitializeOnLoad]
public static class WeixinSubTargetManager
{
static WeixinSubTargetManager()
{
MiniGameSubplatformManager.RegisterSubplatform(new WeixinSubplatformInterface());
}
}
public class WeixinSubplatformInterface : MiniGameSubplatformInterface
{
class CacheConfig
{
public WXProjectConf ProjectConf;
public SDKOptions SDKOptions;
public CompileOptions CompileOptions;
public CompressTexture CompressTexture;
public List<string> PlayerPrefsKeys = new List<string>();
public FontOptions FontOptions;
}
private CacheConfig cacheConfig = new CacheConfig();
public override string GetSubplatformName()
{
return "WeChat:微信小游戏";
}
public override MiniGameSettings GetSubplatformSettings()
{
return new WeixinMiniGameSettings(new WeixinMiniGameSettingsEditor());
}
public override BuildMiniGameError Build(BuildProfile buildProfile)
{
// Useless
return BuildMiniGameError.InvalidInput;
}
public override BuildMiniGameError Build(BuildProfile buildProfile, BuildOptions options)
{
var bcLibPath = Path.GetFullPath(Path.Combine("Packages", "com.qq.weixin.minigame", "Editor", "BuildProfile", "lib", "libwx-metal-cpp.bc"));
var jsLibPath = Path.GetFullPath(Path.Combine("Packages", "com.qq.weixin.minigame", "Editor", "BuildProfile", "lib", "mtl_library.jslib"));
string libPath = bcLibPath + ';' + jsLibPath;
EditorUtility.SetMiniGameGfxLibraryPath(libPath);
WeixinMiniGameSettings settings = buildProfile.miniGameSettings as WeixinMiniGameSettings;
BuildMiniGameError buildMiniGameError = BuildMiniGameError.Unknown;
bool preprocessSuccess = WechatBuildPreprocess(buildProfile);
if (!preprocessSuccess)
{
return BuildMiniGameError.InvalidInput;
}
if (settings is not null)
{
settings.FillAutoStreamingAutomatically();
if (settings.PreprocessBuild(buildProfile, options))
{
var error = CallDoExport(buildProfile);
int enumIntValue = Convert.ToInt32(error);
switch (enumIntValue)
{
case 0: // SUCCEED
{
WeixinMiniGameSettings.AutoStreamingLoad();
buildMiniGameError = BuildMiniGameError.Succeeded;
break;
}
case 2: // BUILD_WEBGL_FAILED
{
buildMiniGameError = BuildMiniGameError.PlayerBuildFailed;
break;
}
case 1: // NODE_NOT_FOUND
default:
{
buildMiniGameError = BuildMiniGameError.Unknown;
break;
}
}
}
}
BuildPostProcess(buildProfile);
return buildMiniGameError;
}
private bool WechatBuildPreprocess(BuildProfile buildProfile)
{
// Check GFX API and Color Space
if (buildProfile != null)
{
PlayerSettings playerSettings = buildProfile.playerSettings;
// Global PlayerSettings
ColorSpace colorSpace = PlayerSettings.colorSpace;
GraphicsDeviceType[] apis = PlayerSettings.GetGraphicsAPIs(buildProfile.buildTarget);
bool isAutomatic = PlayerSettings.GetUseDefaultGraphicsAPIs(buildProfile.buildTarget);
if (playerSettings != null)
{
// BuildProfile PlayerSettings Override
colorSpace = PlayerSettings.GetColorSpace_Internal(playerSettings);
apis = PlayerSettings.GetGraphicsAPIs_Internal(playerSettings, buildProfile.buildTarget);
isAutomatic = PlayerSettings.GetUseDefaultGraphicsAPIs_Internal(playerSettings, buildProfile.buildTarget);
// set override templatePath
var absolutePath = Path.GetFullPath(Path.Combine("Packages", "com.qq.weixin.minigame", "WebGLTemplates/WXTemplate2022TJ"));
if (!Directory.Exists(absolutePath))
absolutePath = Path.GetFullPath(Path.Combine(Application.dataPath, "WebGLTemplates/WXTemplate2022TJ"));
if (Directory.Exists(absolutePath))
PlayerSettings.MiniGame.SetTemplatePath_Internal(playerSettings, $"PATH:{absolutePath}");
PlayerSettings.MiniGame.SetThreadsSupport_Internal(playerSettings, false);
PlayerSettings.MiniGame.SetCompressionFormat_Internal(playerSettings, MiniGameCompressionFormat.Disabled);
PlayerSettings.MiniGame.SetLinkerTarget_Internal(playerSettings, MiniGameLinkerTarget.Wasm);
PlayerSettings.MiniGame.SetDataCaching_Internal(playerSettings, false);
PlayerSettings.MiniGame.SetDebugSymbolMode_Internal(playerSettings, MiniGameDebugSymbolMode.External);
PlayerSettings.SetRunInBackground_Internal(playerSettings, false);
}
return true;
}
else
{
throw new InvalidOperationException("Build profile has not been initialized.");
}
}
private WXConvertCore.WXExportError CallDoExport(BuildProfile buildProfile)
{
WXEditorScriptObject config = UnityUtil.GetEditorConf();
cacheConfig.ProjectConf = config.ProjectConf;
cacheConfig.SDKOptions = config.SDKOptions;
cacheConfig.CompileOptions = config.CompileOptions;
cacheConfig.CompressTexture = config.CompressTexture;
cacheConfig.PlayerPrefsKeys = config.PlayerPrefsKeys;
cacheConfig.FontOptions = config.FontOptions;
WeixinMiniGameSettings weixinSettings = buildProfile.miniGameSettings as WeixinMiniGameSettings;
config.ProjectConf = weixinSettings.ProjectConf;
config.SDKOptions = weixinSettings.SDKOptions;
config.CompileOptions = weixinSettings.CompileOptions;
config.CompressTexture = weixinSettings.CompressTexture;
config.PlayerPrefsKeys = weixinSettings.PlayerPrefsKeys;
config.FontOptions = weixinSettings.FontOptions;
EditorUtility.SetDirty(config);
AssetDatabase.SaveAssets();
return WXConvertCore.DoExport();
}
private void BuildPostProcess(BuildProfile buildProfile)
{
// Restore the original settings
WXEditorScriptObject config = UnityUtil.GetEditorConf();
config.ProjectConf = cacheConfig.ProjectConf;
config.SDKOptions = cacheConfig.SDKOptions;
config.CompileOptions = cacheConfig.CompileOptions;
config.CompressTexture = cacheConfig.CompressTexture;
config.PlayerPrefsKeys = cacheConfig.PlayerPrefsKeys;
config.FontOptions = cacheConfig.FontOptions;
EditorUtility.SetDirty(config);
AssetDatabase.SaveAssets();
}
}
}
#endif

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 0b4df61ea34a9bc4c89a8e8b93455bd6
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -221,6 +221,9 @@ namespace WeChatWASM
{
var rootPath = Directory.GetParent(Application.dataPath).FullName;
string webglDir = WXExtEnvDef.GETDEF("WEIXINMINIGAME") ? "WeixinMiniGame" : "WebGL";
#if PLATFORM_PLAYABLEADS
webglDir = "PlayableAds";
#endif
symFile1 = Path.Combine(rootPath, "Library", "Bee", "artifacts", webglDir, "build", "debug_WebGL_wasm", "build.js.symbols");
}
WeChatWASM.UnityUtil.preprocessSymbols(symFile1, GetWebGLSymbolPath());
@ -346,7 +349,9 @@ namespace WeChatWASM
{
// WxPerfJsBridge.jslib
var wxPerfJSBridgeImporter = AssetImporter.GetAtPath(wxPerfPlugins[0]) as PluginImporter;
#if PLATFORM_WEIXINMINIGAME
#if PLATFORM_PLAYABLEADS
wxPerfJSBridgeImporter.SetCompatibleWithPlatform(BuildTarget.PlayableAds, config.CompileOptions.enablePerfAnalysis);
#elif PLATFORM_WEIXINMINIGAME
wxPerfJSBridgeImporter.SetCompatibleWithPlatform(BuildTarget.WeixinMiniGame, config.CompileOptions.enablePerfAnalysis);
#else
wxPerfJSBridgeImporter.SetCompatibleWithPlatform(BuildTarget.WebGL, config.CompileOptions.enablePerfAnalysis);
@ -359,7 +364,10 @@ namespace WeChatWASM
bool bShouldEnablePerf2022Plugin = config.CompileOptions.enablePerfAnalysis && IsCompatibleWithUnity202203OrNewer();
var wxPerf2022Importer = AssetImporter.GetAtPath(wxPerfPlugins[1]) as PluginImporter;
#if PLATFORM_WEIXINMINIGAME
#if PLATFORM_PLAYABLEADS
wxPerf2022Importer.SetCompatibleWithPlatform(BuildTarget.PlayableAds, bShouldEnablePerf2022Plugin);
#elif PLATFORM_WEIXINMINIGAME
wxPerf2022Importer.SetCompatibleWithPlatform(BuildTarget.WeixinMiniGame, bShouldEnablePerf2022Plugin);
#else
wxPerf2022Importer.SetCompatibleWithPlatform(BuildTarget.WebGL, bShouldEnablePerf2022Plugin);
@ -372,7 +380,9 @@ namespace WeChatWASM
bool bShouldEnablePerf2021Plugin = config.CompileOptions.enablePerfAnalysis && IsCompatibleWithUnity202102To202203();
var wxPerf2021Importer = AssetImporter.GetAtPath(wxPerfPlugins[2]) as PluginImporter;
#if PLATFORM_WEIXINMINIGAME
#if PLATFORM_PLAYABLEADS
wxPerf2021Importer.SetCompatibleWithPlatform(BuildTarget.PlayableAds, bShouldEnablePerf2021Plugin);
#elif PLATFORM_WEIXINMINIGAME
wxPerf2021Importer.SetCompatibleWithPlatform(BuildTarget.WeixinMiniGame, bShouldEnablePerf2021Plugin);
#else
wxPerf2021Importer.SetCompatibleWithPlatform(BuildTarget.WebGL, bShouldEnablePerf2021Plugin);
@ -572,7 +582,9 @@ namespace WeChatWASM
Debug.LogError("Lua Adaptor Importer Not Found: " + maybeBuildFile);
continue;
}
#if PLATFORM_WEIXINMINIGAME
#if PLATFORM_PLAYABLEADS
wxPerfJSBridgeImporter.SetCompatibleWithPlatform(BuildTarget.PlayableAds, shouldBuild);
#elif PLATFORM_WEIXINMINIGAME
wxPerfJSBridgeImporter.SetCompatibleWithPlatform(BuildTarget.WeixinMiniGame, shouldBuild);
#else
wxPerfJSBridgeImporter.SetCompatibleWithPlatform(BuildTarget.WebGL, shouldBuild);
@ -622,7 +634,12 @@ namespace WeChatWASM
else
{
#if TUANJIE_2022_3_OR_NEWER
EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.WeixinMiniGame, BuildTarget.WeixinMiniGame);
if(EditorUserBuildSettings.activeBuildTarget != BuildTarget.WeixinMiniGame
#if PLATFORM_PLAYABLEADS
&& EditorUserBuildSettings.activeBuildTarget != BuildTarget.PlayableAds
#endif
)
EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.WeixinMiniGame, BuildTarget.WeixinMiniGame);
#endif
}
Emit(LifeCycle.afterSwitchActiveBuildTarget);
@ -1095,7 +1112,11 @@ namespace WeChatWASM
}
#endif
#if TUANJIE_2022_3_OR_NEWER
if (EditorUserBuildSettings.activeBuildTarget != BuildTarget.WeixinMiniGame)
if (EditorUserBuildSettings.activeBuildTarget != BuildTarget.WeixinMiniGame
#if PLATFORM_PLAYABLEADS
&& EditorUserBuildSettings.activeBuildTarget != BuildTarget.PlayableAds
#endif
)
{
UnityEngine.Debug.LogFormat("[Builder] Current target is: {0}, switching to: {1}", EditorUserBuildSettings.activeBuildTarget, BuildTarget.WeixinMiniGame);
if (!EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.WeixinMiniGame, BuildTarget.WeixinMiniGame))
@ -1106,8 +1127,11 @@ namespace WeChatWASM
}
var projDir = Path.Combine(config.ProjectConf.DST, webglDir);
#if PLATFORM_PLAYABLEADS
var result = BuildPipeline.BuildPlayer(GetScenePaths(), projDir, BuildTarget.PlayableAds, option);
#else
var result = BuildPipeline.BuildPlayer(GetScenePaths(), projDir, BuildTarget.WeixinMiniGame, option);
#endif
if (result.summary.result != UnityEditor.Build.Reporting.BuildResult.Succeeded)
{
UnityEngine.Debug.LogFormat("[Builder] BuildPlayer failed. emscriptenArgs:{0}", PlayerSettings.WeixinMiniGame.emscriptenArgs);
@ -2246,7 +2270,9 @@ namespace WeChatWASM
{
var importer = AssetImporter.GetAtPath(jsLibs[i]) as PluginImporter;
bool value = i == index;
#if PLATFORM_WEIXINMINIGAME
#if PLATFORM_PLAYABLEADS
importer.SetCompatibleWithPlatform(BuildTarget.PlayableAds, value);
#elif PLATFORM_WEIXINMINIGAME
importer.SetCompatibleWithPlatform(BuildTarget.WeixinMiniGame, value);
#else
importer.SetCompatibleWithPlatform(BuildTarget.WebGL, value);

View File

@ -2,7 +2,7 @@ namespace WeChatWASM
{
public class WXPluginVersion
{
public static string pluginVersion = "202509290859"; // 这一行不要改他,导出的时候会自动替换
public static string pluginVersion = "202510170804"; // 这一行不要改他,导出的时候会自动替换
}
public class WXPluginConf

Binary file not shown.

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 93723579001384b129318180a62c6a67
guid: 8b9c0f036b5e75c4b5c2bd0008279aaf
DefaultImporter:
externalObjects: {}
userData:

View File

@ -10,7 +10,9 @@ internal class DisableKeyboardInput : MonoBehaviour
private static void OnGameLaunch()
{
#if !UNITY_EDITOR
#if PLATFORM_WEIXINMINIGAME
#if PLATFORM_PLAYABLEADS
PlayableAdsInput.mobileKeyboardSupport = false;
#elif PLATFORM_WEIXINMINIGAME
WeixinMiniGameInput.mobileKeyboardSupport = false;
#elif PLATFORM_WEBGL
#if UNITY_2022_1_OR_NEWER

Binary file not shown.

View File

@ -1137,6 +1137,7 @@ namespace WeChatWASM
}
#endregion
#region PageManager
/// <summary>
/// [[PageManager](https://developers.weixin.qq.com/minigame/dev/api/open-api/openlink/PageManager.html) wx.createPageManager()](https://developers.weixin.qq.com/minigame/dev/api/open-api/openlink/wx.createPageManager.html)
/// 需要基础库: `3.6.7`
@ -1162,16 +1163,22 @@ namespace WeChatWASM
{
return WXSDKManagerHandler.Instance.CreatePageManager();
}
#endregion
#region
/// <returns></returns>
public static WXMiniReportManager GetMiniReportManager(GetMiniReportManagerParam param)
{
return WXSDKManagerHandler.Instance.GetMiniReportManager(param);
}
#endregion
#region
public static WXRankManager GetRankManager() {
return WXSDKManagerHandler.Instance.GetRankManager();
}
}
}
#endregion
#endif

View File

@ -149,7 +149,9 @@ public class WXTouchInputOverride : BaseInput
Text text = selectedObject.GetComponent<Text>();
if (text != null)
{
#if PLATFORM_WEIXINMINIGAME
#if PLATFORM_PLAYABLEADS
PlayableAdsInput.mobileKeyboardSupport = true;
#elif PLATFORM_WEIXINMINIGAME
WeixinMiniGameInput.mobileKeyboardSupport = true;
#elif PLATFORM_WEBGL
#if UNITY_2022_1_OR_NEWER
@ -159,7 +161,9 @@ public class WXTouchInputOverride : BaseInput
}
else
{
#if PLATFORM_WEIXINMINIGAME
#if PLATFORM_PLAYABLEADS
PlayableAdsInput.mobileKeyboardSupport = false;
#elif PLATFORM_WEIXINMINIGAME
WeixinMiniGameInput.mobileKeyboardSupport = false;
#elif PLATFORM_WEBGL
#if UNITY_2022_1_OR_NEWER

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: b7132564c24436e8048a4465069567e0
guid: b48e86d050d6e538b9fb080be5c71831
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 2f0493d399ddd89de3e37b6fd219295a
guid: 88c547f0739faf7d0a9a11c54b9aebf6
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 19fbff52d3f937309904be7d88442b46
guid: 03b79a86eeb6d388a2a7388cae97d4b7
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: e96d2f2492c20d9baabf710a39050fa6
guid: 4a80f00b3dabe9d2950d087312ec7afb
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: d5850b79b74733e60e4bc968f43e34ce
guid: bee1e78a3581802717e0a94b980da25c
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: e311ea77d55e48cf771bb958df038cb8
guid: 4cfc01737db26e1dca1f2b3f21741da1
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 321674d6999d6e4f72502919a024ae47
guid: 722dd5cc5fe25c54dcbfb742f0423c29
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 5f0283ce6e74654d26ecbbb0cad2fcff
guid: 7327198152a604f9fc6da592aa07db43
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 7e4d157bb30aad9aba61bccc9203ffec
guid: 8dfad691df2042ef9991c6e699dfbe08
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: e3acb3cc737aa70e4845e5c560ffafba
guid: c905d2dd6aff41fe44de5081a48bec22
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 99c122eaef8e9d03eb906e60d65ad588
guid: 8e1cb99eeb17669f40171f9eedfa8bfb
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 115033a5d8de230274d316638093558c
guid: 2317c697b6b426074c92a1fe2eb5325a
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: e749c68a04ef1cb08e44262de84e891c
guid: 23007f7e38bd46b227ae4cfd431a38f3
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: ab1b700fc48c7df91b63d6b1c9937cd2
guid: 7ee3779ec6cc9c38dc72e90e96881ffb
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: d69712ea685fbc04c13d15856ac1bf33
guid: 29822a3f187f8651f1b0241555aa63f8
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 7e7a618eb17b7100970abf5348314420
guid: 0310efe0330dd67984d375300f0bcdc3
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 16489267ae4749c126e78c63b0044590
guid: f23e29889017610caf8a823e5e68ea11
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: db7030bbfb3e28c37ee175a3a2096ca9
guid: 082d6aeea28c29daf13365582793099c
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 93d0f184ee14fe8ec8867bb9536091f8
guid: d1af00e3e204112b21d63177bb90c7f7
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 540eeb0db7b4f9944fa934612724ec8e
guid: e9671d02654d3b5bc73687d52db836e8
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: c6e2dbe8427187a5772c9a367146c9c6
guid: 904a5ad2c3a28bf5b8f1e5db72591360
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 480eaba5d0e9fba14cd0f96c8a01d577
guid: ae0e5e9dfac81032446165b6480bf835
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 96849f63090d106e7f9bab4ab34e387a
guid: 42c4dc7389d9a6d4b374d316fe9c2521
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 77293401e0648d27a124da847860d3d2
guid: 02f240f00de70a82eed1336bcf106de9
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: acd9eed529ed5a7925fb9490eab24eea
guid: b5bf4b5aaf92de77b640e69ddb671f3d
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 2ad6b6ab45b17d190d4710083d20bf45
guid: 7c2d75698f63c3700bf2fb362a528dfc
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 3b19326f824450063dfe63220679360b
guid: 1395da8ea903aaacb1bd6dc8a2e6695d
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 25b8bf294162af21eeba03baaaea7fe7
guid: d123c9a6aa77b3db6322fa9f7af29090
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: a9ca078de6320ad37da86e943465bbbc
guid: b00b8ab014a6597d9d28afa39e665a91
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 6fd6e4ece31cd7ac1d86218a2caade4d
guid: bf1b972d1d54c0bd6cecaad66e346a4f
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 22883bf7eb0c884bd9734f853380f9d8
guid: 93ff784317bd1f518a21497e86b0f5d3
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 27d35341e4363f65ea73888793ec3008
guid: 3848a198443d1a191a868b95c253fbd2
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 42dedd87b624586ff8d7633278c42330
guid: bcbc525bfa3de9cae70a94a87c630082
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 319d91bc2adc72ead6761765daddfc2a
guid: 72515583a460fe6f2c3f82a04546dc3c
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 840aa8195d909b9a8ee3a9b9cf1f3f11
guid: 34d91788af9ac4816abe4d18407a12ea
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 6df7ed62dd7722499c5316c191c06aa9
guid: 82fca576d33d349c415b192f20a1332e
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: a8df5d6c39dc0708f6a697b5432ecdd4
guid: a50402a53573c02b1d02b01adf63ef67
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 8bbafe66323f6fb36d71a7a62b529e81
guid: 6dea3ebeded99a2359f08d827df3fb66
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 8bb5305c99889969d7a397a82c2f1572
guid: e81496eb315d71b8cc6d3608d7fa253c
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 9d5fd7566690f489ed2b2c4978015d34
guid: 4137652b1ad539fea58ec7b11742d921
DefaultImporter:
externalObjects: {}
userData:

View File

@ -361,7 +361,8 @@ export default {
}
ClassOnEventLists[className + functionName][id + eventName].push(callback);
// WXVideoDecoder OnEvent 不规范 特殊处理
if (className === 'WXVideoDecoder') {
// update: 2025.9.27: 严重怀疑之前 WXPageManager 压根没有跑通过事件监听,跑到下面去了
if (className === 'WXVideoDecoder' || className === 'WXPageManager') {
obj[functionName.replace(/^\w/, (a) => a.toLowerCase())](eventName, callback);
}
else {
@ -384,7 +385,8 @@ export default {
}
ClassOnEventLists[className + functionName][id + eventName].forEach((v) => {
if (className === 'WXVideoDecoder') {
if (className === 'WXVideoDecoder' || className === 'WXPageManager') {
obj[functionName.replace(/^\w/, (a) => a.toLowerCase())](eventName, v);
}
else {

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 8c0ff5364ae850aa7b2eeb870d858eb1
guid: 7aaa7e65d9e3984518ad2472c86beb0d
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 962c91e7ad43367cd696c670a6d39dc5
guid: 77a93c44b3856b3827e7be6c65207b20
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 7e25fa27d93b17825b5967d9ac216da9
guid: 7ad55b77b5c47fafbe4e8324f04e605c
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 1d61dbd09acac9154f27c2d80ed797d0
guid: 6b67e8eee79e26333d0df6507bb996f5
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 832d56291c8449bce25d6e053b33d17b
guid: 3db4d890a94288442299a920e11c86c3
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 16485a2e8e4dd23fdf9ff8f3ba4e96e3
guid: 79d47ea9ff327341999311cdca572130
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 9ba65e7714ff90a9d0713536cd385bca
guid: 24514d96c5f513ffae75d3633419b31c
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 7a1f93ee1cb07fe4d4589bb891e005ee
guid: 87a5125958eb7535347aaa7649f2b614
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: ec24a913f6cc4d4d0c91304e3c77ea31
guid: 880d1416268bfe905f20903172743e61
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: a75459e7537cfdf1ee86162a19a6892e
guid: 0a996060ea769983bf65245dd150beae
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 15f8fad6913f740e467ff3992ae495c7
guid: 4c839072ee09613dbcddc6be5035ab18
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 28ae23f4a2fde5de097e3073d1ed66f8
guid: 82b8313df584092a597336262447faf4
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 23ee91b95613c46ebc77c15662f39eca
guid: 949d7758e9694701d33c8f28eea33447
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 773eb89e64436bddc0d780eef22d967b
guid: 94e9b0251042ba8835b1cac98aa7ca4c
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 74a37a982984ae7ed7f4e881243157cb
guid: f80930afed29d028e211717e09d4e2ac
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 074b80ae98b35aa01183418af8aab1b0
guid: 555d95acd5091704b76ae50abfa974c6
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 1e01ca8054f81138c5dc52334232b3e5
guid: eea3d49650243446945eab7efd5b9492
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: e84a1b66e2e470b9cfa58f168eb07c1d
guid: bf67d0a53a82b1a6695aa3602781564b
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 5adbbbce0d188fa01b4429a98c0ecb98
guid: a795c5e17230cbecc2bfac5118b64133
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: cfac9e5c33a3e9b7381573b8e607a46d
guid: f092523ed0efed2cd9600aa6ffa16637
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 3cf8174af0201e0d3e6e221453e88eb5
guid: 4694c954b79701ed3b8df80f0de8c753
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: a9bc93c54a8867f2aae3204e62bbc45f
guid: 06226446622e4e317edac99e305589d6
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: c4e7af29e7c7d3d350ea4dfbd2517f0e
guid: 37b3b9c1449ed56b353f6d176dd0b5f4
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: c2371e92da20e494ffed876ae878e15d
guid: a942060a158e2a434ea57e7f9b0c6257
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: aafa53a983880c98d10f9b3e4728f919
guid: 8390ed1775d5a9d3b0a9792c50ea6f9b
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 86fa1b85ae7e82b11c0b37ddc6a44f18
guid: 4c6dd8db6b118aff71e1bfd659bb3433
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: b8a911c39f39f04be14f948f1af50c3b
guid: 75900d945f3416c98b1ea52769712cd1
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: a098a4cd6eea60d629ec6fe4a621ea5b
guid: c8aeace801ea33121a6093317f5a7988
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: cf6a4c56e584035f42d803b21e476e52
guid: ab26639100c0b4e24f37820ff0cbcce6
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: a283880c6b41b24c9edbac282ce4cdae
guid: f8decaaca73adb72911e18eb64fd1b8a
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: f75895feb12dcd7b14aad4597133ad9f
guid: 744d456913355e4a87aa45588ee40fd9
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: da0c1879b8583d5ee623fe9bc1ff0de0
guid: 29335d23c60032743ab545dcb470a1b1
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: aae2ee32081369354f881c5e0e26b62e
guid: 916ccd1c863ace02be72086da763aeca
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 1e48d5966288d238f5953b81f006bd33
guid: e5487dac64b814d72d8f686fc0cc47c0
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 4966400ac0a72144ca172cad8ad878a0
guid: ae805ce6166e327d0a6f274750dacc3b
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: f225b83a42780018432a188df17c5b3e
guid: 80eedefb1a7049084a8bdf51318faf50
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: fd3dc233398c7322d66faadfb8942f7f
guid: 392d3159df48278f2dcfc90d39f72878
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: ff14d8f87bb75775dc6710d308a582d7
guid: c8b9067a023ed24566e1520422da5a0f
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 8a98fd9cf8577b0bebf89fc01bf7d3bd
guid: 79037b31bf82cd5ddac828edc3a7efe7
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 18bdac4f81c338e2b69de648b8d0f033
guid: 5347aeebd2f09cebe470c4b7dadb9068
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 6ea68f7e849c396355f9a17c18a71a72
guid: 7dc11ae8602a3a0446f3e07d7a2b0e96
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 41689ec36b3e89f0f0422ddef8844428
guid: b2f100658a14591d502c504678877c00
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 80d28e6d7df2e5bd8440712c998e5f68
guid: 4f75395450b647dfa5419b8ad21321f2
DefaultImporter:
externalObjects: {}
userData:

Some files were not shown because too many files have changed in this diff Show More