Auto-publish.

This commit is contained in:
rainhong 2025-08-04 16:24:23 +08:00
parent 45e7581c92
commit fa0bcb9390
206 changed files with 2641 additions and 1936 deletions

View File

@ -6,13 +6,13 @@ Removed - 删除功能/接口
Fixed - 修复问题
Others - 其他
-->
## v0.1.27 【普通更新】
## 2025-7-10 v0.1.27 【普通更新】
### Feature
* 普通:新增 JS_Sound_GetPosition 方法用于获取音频播放位置
* 普通WebGL2变更为正式特性
* 普通:支持小游戏试玩导出
## v0.1.26 【普通更新】
## 2025-5-8 v0.1.26 【普通更新】
### Feature
* 普通:增加禁止多点触控的配置
### Fixed

8
Editor/BuildProfile.meta Normal file
View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: DytLvSj8UC9CKob0XUy9Y3usKDmX8US1YgxYmBxa1iAZ/I8JbM5wZwE=
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: XSwesi78AS28ymfR2HEhHpEBAC2DHupI1hIKP7HApjHRaZgGw+DTwWI=
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

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

View File

@ -0,0 +1,43 @@
mergeInto(LibraryManager.library, {
// 定义供 C/C++ 调用的 JS 函数
js_batchRender_malloc: function(data, size, isSync) {
// 直接从 WASM 内存创建视图(零拷贝)
const binaryData = new Uint8Array(Module.HEAPU8.buffer, data, size);
// 转换为标准 ArrayBuffer如果需要复制
const targetBuffer =
binaryData.buffer.slice(binaryData.byteOffset, binaryData.byteOffset + binaryData.byteLength);
//console.log("processBinaryData invoke");
const extBuffer = new ArrayBuffer(1);
const headerBuffer = new ArrayBuffer(8);
const headerBufferView = new DataView(headerBuffer);
headerBufferView.setUint32(0, 0xDEC0DE, true);
headerBufferView.setUint32(4, mtl.ctx.__uid(), true);
const merged = new Uint8Array(headerBuffer.byteLength + targetBuffer.byteLength);
merged.set(new Uint8Array(headerBuffer), 0);
merged.set(new Uint8Array(targetBuffer), headerBuffer.byteLength);
if(!isSync){
mtl.batchRenderAsync(merged.buffer, extBuffer);
return null;
}
const result = mtl.batchRender(merged.buffer, extBuffer).buffer;
if(result.byteLength == 0){
return null;;
}
// 申请内存空间,后续在cpp wasm部分使用记得释放
const ptr = Module._malloc(result.byteLength);
// 将数据拷贝到WASM内存
Module.HEAPU8.set(new Uint8Array(result), ptr);
// 返回结构化的数据信息(指针和长度)
const ret = new DataView(new ArrayBuffer(8));
ret.setUint32(0, ptr, true); // 指针地址4字节
ret.setUint32(4, result.byteLength, true); // 数据长度4字节
// 返回合并后的8字节缓冲区指针记得也要在cpp部分释放
const retPtr = Module._malloc(8);
Module.HEAPU8.set(new Uint8Array(ret.buffer), retPtr);
return retPtr;
},
js_swapWindow: function(){
mtl.swapWindow();
}
});

View File

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

View File

@ -5,134 +5,134 @@ using UnityEngine;
namespace WeChatWASM
{
public class WXPlayableConvertCore
{
static WXPlayableConvertCore() { }
public static WXPlayableEditorScriptObject config => UnityUtil.GetPlayableEditorConf();
public static WXConvertCore.WXExportError DoExport(bool buildWebGL = true)
public class WXPlayableConvertCore
{
WXConvertCore.isPlayableBuild = true;
// var preCheckResult = WXConvertCore.PreCheck();
// if (preCheckResult != WXConvertCore.WXExportError.SUCCEED)
// {
// WXConvertCore.isPlayableBuild = false;
// return preCheckResult;
// }
// WXConvertCore.PreInit();
var exportResult = WXConvertCore.DoExport();
static WXPlayableConvertCore() { }
public static WXPlayableEditorScriptObject config => UnityUtil.GetPlayableEditorConf();
WXConvertCore.isPlayableBuild = false;
return exportResult;
}
public static WXEditorScriptObject GetFakeScriptObject()
{
return SetDefaultProperties(ConvertPlayableConfigToCommon(config));
}
public static WXEditorScriptObject ConvertPlayableConfigToCommon(
WXPlayableEditorScriptObject source,
WXEditorScriptObject target = null)
{
// 创建或使用现有的目标实例
var newTarget = target ?? ScriptableObject.CreateInstance<WXEditorScriptObject>();
// 使用序列化方式深度拷贝公共字段
var so = new SerializedObject(newTarget);
// 遍历源对象的所有字段
var sourceType = source.GetType();
foreach (var sourceField in sourceType.GetFields(
System.Reflection.BindingFlags.Public |
System.Reflection.BindingFlags.Instance |
System.Reflection.BindingFlags.NonPublic))
{
// 跳过readonly字段
if (sourceField.IsInitOnly) continue;
// 查找目标对象中的对应字段
var targetField = typeof(WXEditorScriptObject).GetField(
sourceField.Name,
System.Reflection.BindingFlags.Public |
System.Reflection.BindingFlags.Instance |
System.Reflection.BindingFlags.NonPublic);
// if (targetField != null && !targetField.FieldType.IsValueType && !targetField.FieldType.IsEnum)
// {
// // // 复制字段值
// // var value = sourceField.GetValue(source);
// // targetField.SetValue(newTarget, value);
// // 递归复制子对象属性
// var subObj = targetField.GetValue(newTarget) ?? Activator.CreateInstance(targetField.FieldType);
// CopySubObjectProperties(value, subObj);
// targetField.SetValue(newTarget, subObj);
// }
// if (targetField != null &&
// (targetField.FieldType.IsAssignableFrom(sourceField.FieldType) ||
// (targetField.FieldType.IsValueType && sourceField.FieldType.IsValueType &&
// targetField.FieldType == sourceField.FieldType)))
// {
// 复制字段值
var value = sourceField.GetValue(source);
// 特殊处理嵌套对象类型的字段
if (value != null && !targetField.FieldType.IsValueType && !targetField.FieldType.IsEnum)
{
// 递归复制子对象属性
var subObj = targetField.GetValue(newTarget) ?? Activator.CreateInstance(targetField.FieldType);
CopySubObjectProperties(value, subObj);
targetField.SetValue(newTarget, subObj);
}
else
{
targetField.SetValue(newTarget, value);
}
// }
}
// 应用修改到序列化对象
so.ApplyModifiedProperties();
return newTarget;
}
private static void CopySubObjectProperties(object source, object target)
{
var sourceType = source.GetType();
var targetType = target.GetType();
foreach (var sourceField in sourceType.GetFields(
System.Reflection.BindingFlags.Public |
System.Reflection.BindingFlags.Instance |
System.Reflection.BindingFlags.NonPublic))
public static WXConvertCore.WXExportError DoExport(bool buildWebGL = true)
{
if (sourceField.IsInitOnly) continue;
WXConvertCore.isPlayableBuild = true;
// var preCheckResult = WXConvertCore.PreCheck();
// if (preCheckResult != WXConvertCore.WXExportError.SUCCEED)
// {
// WXConvertCore.isPlayableBuild = false;
// return preCheckResult;
// }
// WXConvertCore.PreInit();
var exportResult = WXConvertCore.DoExport();
var targetField = targetType.GetField(
sourceField.Name,
WXConvertCore.isPlayableBuild = false;
return exportResult;
}
public static WXEditorScriptObject GetFakeScriptObject()
{
return SetDefaultProperties(ConvertPlayableConfigToCommon(config));
}
public static WXEditorScriptObject ConvertPlayableConfigToCommon(
WXPlayableEditorScriptObject source,
WXEditorScriptObject target = null)
{
// 创建或使用现有的目标实例
var newTarget = target ?? ScriptableObject.CreateInstance<WXEditorScriptObject>();
// 使用序列化方式深度拷贝公共字段
var so = new SerializedObject(newTarget);
// 遍历源对象的所有字段
var sourceType = source.GetType();
foreach (var sourceField in sourceType.GetFields(
System.Reflection.BindingFlags.Public |
System.Reflection.BindingFlags.Instance |
System.Reflection.BindingFlags.NonPublic);
if (targetField != null &&
(targetField.FieldType.IsAssignableFrom(sourceField.FieldType) ||
(targetField.FieldType.IsValueType && sourceField.FieldType.IsValueType &&
targetField.FieldType == sourceField.FieldType)))
System.Reflection.BindingFlags.NonPublic))
{
// 跳过readonly字段
if (sourceField.IsInitOnly) continue;
// 查找目标对象中的对应字段
var targetField = typeof(WXEditorScriptObject).GetField(
sourceField.Name,
System.Reflection.BindingFlags.Public |
System.Reflection.BindingFlags.Instance |
System.Reflection.BindingFlags.NonPublic);
// if (targetField != null && !targetField.FieldType.IsValueType && !targetField.FieldType.IsEnum)
// {
// // // 复制字段值
// // var value = sourceField.GetValue(source);
// // targetField.SetValue(newTarget, value);
// // 递归复制子对象属性
// var subObj = targetField.GetValue(newTarget) ?? Activator.CreateInstance(targetField.FieldType);
// CopySubObjectProperties(value, subObj);
// targetField.SetValue(newTarget, subObj);
// }
// if (targetField != null &&
// (targetField.FieldType.IsAssignableFrom(sourceField.FieldType) ||
// (targetField.FieldType.IsValueType && sourceField.FieldType.IsValueType &&
// targetField.FieldType == sourceField.FieldType)))
// {
// 复制字段值
var value = sourceField.GetValue(source);
targetField.SetValue(target, value);
// 特殊处理嵌套对象类型的字段
if (value != null && !targetField.FieldType.IsValueType && !targetField.FieldType.IsEnum)
{
// 递归复制子对象属性
var subObj = targetField.GetValue(newTarget) ?? Activator.CreateInstance(targetField.FieldType);
CopySubObjectProperties(value, subObj);
targetField.SetValue(newTarget, subObj);
}
else
{
targetField.SetValue(newTarget, value);
}
// }
}
// 应用修改到序列化对象
so.ApplyModifiedProperties();
return newTarget;
}
private static void CopySubObjectProperties(object source, object target)
{
var sourceType = source.GetType();
var targetType = target.GetType();
foreach (var sourceField in sourceType.GetFields(
System.Reflection.BindingFlags.Public |
System.Reflection.BindingFlags.Instance |
System.Reflection.BindingFlags.NonPublic))
{
if (sourceField.IsInitOnly) continue;
var targetField = targetType.GetField(
sourceField.Name,
System.Reflection.BindingFlags.Public |
System.Reflection.BindingFlags.Instance |
System.Reflection.BindingFlags.NonPublic);
if (targetField != null &&
(targetField.FieldType.IsAssignableFrom(sourceField.FieldType) ||
(targetField.FieldType.IsValueType && sourceField.FieldType.IsValueType &&
targetField.FieldType == sourceField.FieldType)))
{
var value = sourceField.GetValue(source);
targetField.SetValue(target, value);
}
}
}
}
public static WXEditorScriptObject SetDefaultProperties(WXEditorScriptObject target)
{
target.ProjectConf.CDN = "";
target.ProjectConf.assetLoadType = 1;
target.ProjectConf.compressDataPackage = true;
public static WXEditorScriptObject SetDefaultProperties(WXEditorScriptObject target)
{
target.ProjectConf.CDN = "";
target.ProjectConf.assetLoadType = 1;
target.ProjectConf.compressDataPackage = true;
target.CompileOptions.showMonitorSuggestModal = false;
return target;
target.CompileOptions.showMonitorSuggestModal = false;
return target;
}
}
}
}

View File

@ -6,358 +6,354 @@ using UnityEngine;
namespace WeChatWASM
{
[InitializeOnLoad]
public class WXPlayableSettingsHelperInterface
{
public static WXPlayableSettingsHelper helper = new WXPlayableSettingsHelper();
}
public class WXPlayableSettingsHelper
{
public static string projectRootPath;
private static WXPlayableEditorScriptObject config;
private static bool m_EnablePerfTool = false;
private static string _dstCache;
public static bool UseIL2CPP
[InitializeOnLoad]
public class WXPlayableSettingsHelperInterface
{
get
{
public static WXPlayableSettingsHelper helper = new WXPlayableSettingsHelper();
}
public class WXPlayableSettingsHelper
{
public static string projectRootPath;
private static WXPlayableEditorScriptObject config;
private static bool m_EnablePerfTool = false;
public static bool UseIL2CPP
{
get
{
#if TUANJIE_2022_3_OR_NEWER
return PlayerSettings.GetScriptingBackend(BuildTargetGroup.WeixinMiniGame) == ScriptingImplementation.IL2CPP;
#else
return true;
return true;
#endif
}
}
public WXPlayableSettingsHelper()
{
projectRootPath = System.IO.Path.GetFullPath(Application.dataPath + "/../");
_dstCache = "";
}
public void OnFocus()
{
loadData();
}
public void OnLostFocus()
{
saveData();
}
public void OnDisable()
{
EditorUtility.SetDirty(config);
}
private Vector2 scrollRoot;
private bool foldBaseInfo = true;
private bool foldDebugOptions = true;
public void OnSettingsGUI(EditorWindow window)
{
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));
this.formInput("appid", "小游戏试玩AppID");
this.formInput("projectName", "小游戏试玩项目名");
this.formIntPopup("orientation", "游戏方向", new[] { "Portrait", "Landscape" }, new[] { 0, 1, 2, 3 });
this.formInput("memorySize", "UnityHeap预留内存(?)", "单位MB预分配内存值超休闲游戏256/中轻度496/重度游戏768需预估游戏最大UnityHeap值以防止内存自动扩容带来的峰值尖刺。预估方法请查看GIT文档《优化Unity WebGL的内存》");
GUILayout.BeginHorizontal();
string targetDst = "dst";
if (!formInputData.ContainsKey(targetDst))
{
formInputData[targetDst] = "";
}
}
EditorGUILayout.LabelField(string.Empty, GUILayout.Width(10));
GUILayout.Label(new GUIContent("导出路径(?)", "支持输入相对于项目根目录的相对路径wxbuild"), GUILayout.Width(140));
formInputData[targetDst] = GUILayout.TextField(formInputData[targetDst], GUILayout.MaxWidth(EditorGUIUtility.currentViewWidth - 270));
if (GUILayout.Button(new GUIContent("打开"), GUILayout.Width(40)))
public WXPlayableSettingsHelper()
{
if (!formInputData[targetDst].Trim().Equals(string.Empty))
{
EditorUtility.RevealInFinder(GetAbsolutePath(formInputData[targetDst]));
}
GUIUtility.ExitGUI();
projectRootPath = System.IO.Path.GetFullPath(Application.dataPath + "/../");
}
if (GUILayout.Button(new GUIContent("选择"), GUILayout.Width(40)))
public void OnFocus()
{
var dstPath = EditorUtility.SaveFolderPanel("选择你的游戏导出目录", string.Empty, string.Empty);
if (dstPath != string.Empty)
{
formInputData[targetDst] = dstPath;
this.saveData();
}
GUIUtility.ExitGUI();
loadData();
}
GUILayout.EndHorizontal();
EditorGUILayout.EndVertical();
}
foldDebugOptions = EditorGUILayout.Foldout(foldDebugOptions, "调试编译选项");
if (foldDebugOptions)
{
EditorGUILayout.BeginVertical("frameBox", GUILayout.ExpandWidth(true));
this.formCheckbox("developBuild", "Development Build", "", false, null, OnDevelopmentBuildToggleChanged);
this.formCheckbox("il2CppOptimizeSize", "Il2Cpp Optimize Size(?)", "对应于Il2CppCodeGeneration选项勾选时使用OptimizeSize(默认推荐)生成代码小15%左右取消勾选则使用OptimizeSpeed。游戏中大量泛型集合的高频访问建议OptimizeSpeed在使用HybridCLR等第三方组件时只能用OptimizeSpeed。(Dotnet Runtime模式下该选项无效)", !UseIL2CPP);
this.formCheckbox("profilingFuncs", "Profiling Funcs");
this.formCheckbox("webgl2", "WebGL2.0(beta)");
EditorGUILayout.EndVertical();
}
EditorGUILayout.EndScrollView();
}
public void OnBuildButtonGUI(EditorWindow window)
{
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;
EditorGUILayout.BeginHorizontal();
EditorGUILayout.LabelField(string.Empty, GUILayout.MinWidth(10));
if (GUILayout.Button(new GUIContent("生成并转换"), GUILayout.Width(100), GUILayout.Height(25)))
{
this.saveData();
if (WXPlayableConvertCore.DoExport() == WXConvertCore.WXExportError.SUCCEED)
public void OnLostFocus()
{
window.ShowNotification(new GUIContent("转换完成"));
saveData();
}
GUIUtility.ExitGUI();
}
EditorGUILayout.EndHorizontal();
}
private void OnDevelopmentBuildToggleChanged(bool InNewValue)
{
// 针对non-dev build取消性能分析工具的集成
if (!InNewValue)
{
this.setData("enablePerfAnalysis", false);
}
}
private string SDKFilePath;
private void loadData()
{
SDKFilePath = Path.Combine(UnityUtil.GetWxSDKRootPath(), "Runtime", "wechat-playable-default", "unity-sdk", "index.js");
config = UnityUtil.GetPlayableEditorConf();
_dstCache = config.ProjectConf.DST;
this.setData("projectName", config.ProjectConf.projectName);
this.setData("appid", config.ProjectConf.Appid);
this.setData("orientation", (int)config.ProjectConf.Orientation);
this.setData("dst", _dstCache);
this.setData("developBuild", config.CompileOptions.DevelopBuild);
this.setData("il2CppOptimizeSize", config.CompileOptions.Il2CppOptimizeSize);
this.setData("profilingFuncs", config.CompileOptions.profilingFuncs);
this.setData("webgl2", config.CompileOptions.Webgl2);
this.setData("customNodePath", config.CompileOptions.CustomNodePath);
this.setData("memorySize", config.ProjectConf.MemorySize.ToString());
}
private void saveData()
{
config.ProjectConf.projectName = this.getDataInput("projectName");
config.ProjectConf.Appid = this.getDataInput("appid");
config.ProjectConf.Orientation = (WXScreenOritation)this.getDataPop("orientation");
_dstCache = this.getDataInput("dst");
config.ProjectConf.DST = GetAbsolutePath(_dstCache);
config.CompileOptions.DevelopBuild = this.getDataCheckbox("developBuild");
config.CompileOptions.Il2CppOptimizeSize = this.getDataCheckbox("il2CppOptimizeSize");
config.CompileOptions.profilingFuncs = this.getDataCheckbox("profilingFuncs");
config.CompileOptions.CustomNodePath = this.getDataInput("customNodePath");
config.CompileOptions.Webgl2 = this.getDataCheckbox("webgl2");
config.ProjectConf.MemorySize = int.Parse(this.getDataInput("memorySize"));
}
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>();
private string getDataInput(string target)
{
if (this.formInputData.ContainsKey(target))
return this.formInputData[target];
return "";
}
private int getDataPop(string target)
{
if (this.formIntPopupData.ContainsKey(target))
return this.formIntPopupData[target];
return 0;
}
private bool getDataCheckbox(string target)
{
if (this.formCheckboxData.ContainsKey(target))
return this.formCheckboxData[target];
return false;
}
private void formCheckbox(string target, string label, string help = null, bool disable = false, Action<bool> setting = null, Action<bool> onValueChanged = 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);
// Toggle the checkbox value based on the disable condition
bool newValue = EditorGUILayout.Toggle(disable ? false : formCheckboxData[target]);
// Update the checkbox data if the value has changed and invoke the onValueChanged action
if (newValue != formCheckboxData[target])
{
formCheckboxData[target] = newValue;
onValueChanged?.Invoke(newValue);
}
if (setting != null)
{
EditorGUILayout.LabelField("", GUILayout.Width(10));
// 配置按钮
if (GUILayout.Button(new GUIContent("设置"), GUILayout.Width(40), GUILayout.Height(18)))
public void OnDisable()
{
setting?.Invoke(true);
EditorUtility.SetDirty(config);
}
EditorGUILayout.LabelField("", GUILayout.MinWidth(10));
}
EditorGUI.EndDisabledGroup();
private Vector2 scrollRoot;
private bool foldBaseInfo = true;
private bool foldDebugOptions = true;
public void OnSettingsGUI(EditorWindow window)
{
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;
if (setting == null)
EditorGUILayout.LabelField(string.Empty);
GUILayout.EndHorizontal();
foldBaseInfo = EditorGUILayout.Foldout(foldBaseInfo, "基本信息");
if (foldBaseInfo)
{
EditorGUILayout.BeginVertical("frameBox", GUILayout.ExpandWidth(true));
this.formInput("appid", "小游戏试玩AppID");
this.formInput("projectName", "小游戏试玩项目名");
this.formIntPopup("orientation", "游戏方向", new[] { "Portrait", "Landscape" }, new[] { 0, 1, 2, 3 });
this.formInput("memorySize", "UnityHeap预留内存(?)", "单位MB预分配内存值超休闲游戏256/中轻度496/重度游戏768需预估游戏最大UnityHeap值以防止内存自动扩容带来的峰值尖刺。预估方法请查看GIT文档《优化Unity WebGL的内存》");
GUILayout.BeginHorizontal();
string targetDst = "dst";
if (!formInputData.ContainsKey(targetDst))
{
formInputData[targetDst] = "";
}
EditorGUILayout.LabelField(string.Empty, GUILayout.Width(10));
GUILayout.Label(new GUIContent("导出路径(?)", "支持输入相对于项目根目录的相对路径wxbuild"), GUILayout.Width(140));
formInputData[targetDst] = GUILayout.TextField(formInputData[targetDst], GUILayout.MaxWidth(EditorGUIUtility.currentViewWidth - 270));
if (GUILayout.Button(new GUIContent("打开"), GUILayout.Width(40)))
{
if (!formInputData[targetDst].Trim().Equals(string.Empty))
{
EditorUtility.RevealInFinder(GetAbsolutePath(formInputData[targetDst]));
}
GUIUtility.ExitGUI();
}
if (GUILayout.Button(new GUIContent("选择"), GUILayout.Width(40)))
{
var dstPath = EditorUtility.SaveFolderPanel("选择你的游戏导出目录", string.Empty, string.Empty);
if (dstPath != string.Empty)
{
formInputData[targetDst] = dstPath;
this.saveData();
}
GUIUtility.ExitGUI();
}
GUILayout.EndHorizontal();
EditorGUILayout.EndVertical();
}
foldDebugOptions = EditorGUILayout.Foldout(foldDebugOptions, "调试编译选项");
if (foldDebugOptions)
{
EditorGUILayout.BeginVertical("frameBox", GUILayout.ExpandWidth(true));
this.formCheckbox("developBuild", "Development Build", "", false, null, OnDevelopmentBuildToggleChanged);
this.formCheckbox("il2CppOptimizeSize", "Il2Cpp Optimize Size(?)", "对应于Il2CppCodeGeneration选项勾选时使用OptimizeSize(默认推荐)生成代码小15%左右取消勾选则使用OptimizeSpeed。游戏中大量泛型集合的高频访问建议OptimizeSpeed在使用HybridCLR等第三方组件时只能用OptimizeSpeed。(Dotnet Runtime模式下该选项无效)", !UseIL2CPP);
this.formCheckbox("profilingFuncs", "Profiling Funcs");
this.formCheckbox("webgl2", "WebGL2.0(beta)");
EditorGUILayout.EndVertical();
}
EditorGUILayout.EndScrollView();
}
public void OnBuildButtonGUI(EditorWindow window)
{
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;
EditorGUILayout.BeginHorizontal();
EditorGUILayout.LabelField(string.Empty, GUILayout.MinWidth(10));
if (GUILayout.Button(new GUIContent("生成并转换"), GUILayout.Width(100), GUILayout.Height(25)))
{
this.saveData();
if (WXPlayableConvertCore.DoExport() == WXConvertCore.WXExportError.SUCCEED)
{
window.ShowNotification(new GUIContent("转换完成"));
}
GUIUtility.ExitGUI();
}
EditorGUILayout.EndHorizontal();
}
private void OnDevelopmentBuildToggleChanged(bool InNewValue)
{
// 针对non-dev build取消性能分析工具的集成
if (!InNewValue)
{
this.setData("enablePerfAnalysis", false);
}
}
private string SDKFilePath;
private void loadData()
{
SDKFilePath = Path.Combine(UnityUtil.GetWxSDKRootPath(), "Runtime", "wechat-playable-default", "unity-sdk", "index.js");
config = UnityUtil.GetPlayableEditorConf();
this.setData("projectName", config.ProjectConf.projectName);
this.setData("appid", config.ProjectConf.Appid);
this.setData("orientation", (int)config.ProjectConf.Orientation);
this.setData("dst", config.ProjectConf.relativeDST);
this.setData("developBuild", config.CompileOptions.DevelopBuild);
this.setData("il2CppOptimizeSize", config.CompileOptions.Il2CppOptimizeSize);
this.setData("profilingFuncs", config.CompileOptions.profilingFuncs);
this.setData("webgl2", config.CompileOptions.Webgl2);
this.setData("customNodePath", config.CompileOptions.CustomNodePath);
this.setData("memorySize", config.ProjectConf.MemorySize.ToString());
}
private void saveData()
{
config.ProjectConf.projectName = this.getDataInput("projectName");
config.ProjectConf.Appid = this.getDataInput("appid");
config.ProjectConf.Orientation = (WXScreenOritation)this.getDataPop("orientation");
config.ProjectConf.relativeDST = this.getDataInput("dst");
config.ProjectConf.DST = GetAbsolutePath(config.ProjectConf.relativeDST);
config.CompileOptions.DevelopBuild = this.getDataCheckbox("developBuild");
config.CompileOptions.Il2CppOptimizeSize = this.getDataCheckbox("il2CppOptimizeSize");
config.CompileOptions.profilingFuncs = this.getDataCheckbox("profilingFuncs");
config.CompileOptions.CustomNodePath = this.getDataInput("customNodePath");
config.CompileOptions.Webgl2 = this.getDataCheckbox("webgl2");
config.ProjectConf.MemorySize = int.Parse(this.getDataInput("memorySize"));
}
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>();
private string getDataInput(string target)
{
if (this.formInputData.ContainsKey(target))
return this.formInputData[target];
return "";
}
private int getDataPop(string target)
{
if (this.formIntPopupData.ContainsKey(target))
return this.formIntPopupData[target];
return 0;
}
private bool getDataCheckbox(string target)
{
if (this.formCheckboxData.ContainsKey(target))
return this.formCheckboxData[target];
return false;
}
private void formCheckbox(string target, string label, string help = null, bool disable = false, Action<bool> setting = null, Action<bool> onValueChanged = 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);
// Toggle the checkbox value based on the disable condition
bool newValue = EditorGUILayout.Toggle(disable ? false : formCheckboxData[target]);
// Update the checkbox data if the value has changed and invoke the onValueChanged action
if (newValue != formCheckboxData[target])
{
formCheckboxData[target] = newValue;
onValueChanged?.Invoke(newValue);
}
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 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 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;
}
return Path.Combine(projectRootPath, path);
}
}
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 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;
}
return Path.Combine(projectRootPath, path);
}
}
}

View File

@ -99,6 +99,14 @@ namespace WeChatWASM
#endif
}
}
// 是否使用 iOS Metal 渲染
public static bool UseiOSMetal
{
get
{
return config.CompileOptions.enableiOSMetal;
}
}
// public static void SetPlayableEnabled(bool enabled)
// {
// isPlayableBuild = enabled;
@ -112,9 +120,12 @@ namespace WeChatWASM
CheckBuildTarget();
Init();
// 可能有顺序要求?如果没要求,可挪到此函数外
if (!isPlayableBuild) {
if (!isPlayableBuild)
{
ProcessWxPerfBinaries();
}
// iOS metal 的相关特性
ProcessWxiOSMetalBinaries();
MakeEnvForLuaAdaptor();
// JSLib
SettingWXTextureMinJSLib();
@ -140,7 +151,7 @@ namespace WeChatWASM
return WXExportError.BUILD_WEBGL_FAILED;
}
dynamic config = isPlayableBuild ? UnityUtil.GetPlayableEditorConf() : UnityUtil.GetEditorConf();
if (config.ProjectConf.DST == string.Empty)
if (config.ProjectConf.relativeDST == string.Empty)
{
Debug.LogError("请先配置游戏导出路径");
return WXExportError.BUILD_WEBGL_FAILED;
@ -400,6 +411,41 @@ namespace WeChatWASM
return true;
}
private static void ProcessWxiOSMetalBinaries()
{
string[] glLibs;
string DS = WXAssetsTextTools.DS;
if (UnityUtil.GetSDKMode() == UnityUtil.SDKMode.Package)
{
glLibs = new string[]
{
$"Packages{DS}com.qq.weixin.minigame{DS}Editor{DS}BuildProfile{DS}lib{DS}libwx-metal-cpp.bc",
$"Packages{DS}com.qq.weixin.minigame{DS}Editor{DS}BuildProfile{DS}lib{DS}mtl_library.jslib",
};
}
else
{
string glLibRootDir = $"Assets{DS}WX-WASM-SDK-V2{DS}Editor{DS}BuildProfile{DS}lib{DS}";
glLibs = new string[]
{
$"{glLibRootDir}libwx-metal-cpp.bc",
$"{glLibRootDir}mtl_library.jslib",
};
}
for (int i = 0; i < glLibs.Length; i++)
{
var importer = AssetImporter.GetAtPath(glLibs[i]) as PluginImporter;
#if PLATFORM_WEIXINMINIGAME
importer.SetCompatibleWithPlatform(BuildTarget.WeixinMiniGame, config.CompileOptions.enableiOSMetal);
#else
importer.SetCompatibleWithPlatform(BuildTarget.WebGL, config.CompileOptions.enableiOSMetal);
#endif
// importer.SaveAndReimport();
SetPluginCompatibilityByModifyingMetadataFile(glLibs[i], config.CompileOptions.enableiOSMetal);
}
AssetDatabase.Refresh();
}
private static string GetLuaAdaptorPath(string filename)
{
string DS = WXAssetsTextTools.DS;
@ -523,13 +569,28 @@ namespace WeChatWASM
GraphicsDeviceType[] targets = new GraphicsDeviceType[] { };
#if PLATFORM_WEIXINMINIGAME
PlayerSettings.SetUseDefaultGraphicsAPIs(BuildTarget.WeixinMiniGame, false);
if (config.CompileOptions.Webgl2)
// 启用 iOS Metal 渲染
if (UseiOSMetal)
{
PlayerSettings.SetGraphicsAPIs(BuildTarget.WeixinMiniGame, new GraphicsDeviceType[] { GraphicsDeviceType.OpenGLES3 });
if (config.CompileOptions.Webgl2)
{
PlayerSettings.SetGraphicsAPIs(BuildTarget.WeixinMiniGame, new GraphicsDeviceType[] { GraphicsDeviceType.Metal, GraphicsDeviceType.OpenGLES3 });
}
else
{
PlayerSettings.SetGraphicsAPIs(BuildTarget.WeixinMiniGame, new GraphicsDeviceType[] { GraphicsDeviceType.Metal, GraphicsDeviceType.OpenGLES2 });
}
}
else
else
{
PlayerSettings.SetGraphicsAPIs(BuildTarget.WeixinMiniGame, new GraphicsDeviceType[] { GraphicsDeviceType.OpenGLES2 });
if (config.CompileOptions.Webgl2)
{
PlayerSettings.SetGraphicsAPIs(BuildTarget.WeixinMiniGame, new GraphicsDeviceType[] { GraphicsDeviceType.OpenGLES3 });
}
else
{
PlayerSettings.SetGraphicsAPIs(BuildTarget.WeixinMiniGame, new GraphicsDeviceType[] { GraphicsDeviceType.OpenGLES2 });
}
}
#else
PlayerSettings.SetUseDefaultGraphicsAPIs(BuildTarget.WebGL, false);
@ -819,6 +880,22 @@ namespace WeChatWASM
}
}
{
Rule[] rules =
{
new Rule()
{
old = "if (GameGlobal.unityNamespace.enableProfileStats)",
newStr = "if (GameGlobal.unityNamespace.enableProfileStats || (typeof GameGlobal.manager.getWXAppCheatMonitor === 'function' && GameGlobal.manager.getWXAppCheatMonitor().shouldForceShowPerfMonitor()))"
}
};
foreach (var rule in rules)
{
text = text.Replace(rule.old, rule.newStr);
}
}
File.WriteAllText(targetPath, text, new UTF8Encoding(false));
UnityEngine.Debug.LogFormat("[Converter] adapt framework done! ");
@ -1194,7 +1271,8 @@ namespace WeChatWASM
public static void convertDataPackageJS()
{
if (!isPlayableBuild) {
if (!isPlayableBuild)
{
checkNeedRmovePackageParallelPreload();
}
@ -1649,7 +1727,8 @@ namespace WeChatWASM
content = content.Replace("$unityVersion$", Application.unityVersion);
File.WriteAllText(Path.Combine(dst, "unity-sdk", "index.js"), content, Encoding.UTF8);
// content = File.ReadAllText(Path.Combine(Application.dataPath, "WX-WASM-SDK-V2", "Runtime", "wechat-default", "unity-sdk", "storage.js"), Encoding.UTF8);
if (!isPlayableBuild) {
if (!isPlayableBuild)
{
content = File.ReadAllText(Path.Combine(UnityUtil.GetWxSDKRootPath(), "Runtime", defaultTemplateDir, "unity-sdk", "storage.js"), Encoding.UTF8);
var PreLoadKeys = config.PlayerPrefsKeys.Count > 0 ? JsonMapper.ToJson(config.PlayerPrefsKeys) : "[]";
content = content.Replace("'$PreLoadKeys'", PreLoadKeys);
@ -1903,7 +1982,7 @@ namespace WeChatWASM
config.ProjectConf.bundleHashLength.ToString(),
bundlePathIdentifierStr,
excludeFileExtensionsStr,
config.CompileOptions.Webgl2 ? "2" : "1",
config.CompileOptions.enableiOSMetal ? "5" : (config.CompileOptions.Webgl2 ? "2" : "1"),
Application.unityVersion,
WXExtEnvDef.pluginVersion,
config.ProjectConf.dataFileSubPrefix,
@ -1951,11 +2030,14 @@ namespace WeChatWASM
config.CompileOptions.enablePerfAnalysis ? "true" : "false",
config.ProjectConf.MemorySize.ToString(),
config.SDKOptions.disableMultiTouch ? "true" : "false",
// Perfstream暂时设为false
"false"
});
List<Rule> replaceList = new List<Rule>(replaceArrayList);
List<string> files = new List<string> { "game.js", "game.json", "project.config.json", "unity-namespace.js", "check-version.js", "unity-sdk/font/index.js" };
if (isPlayableBuild) {
if (isPlayableBuild)
{
files = new List<string> { "game.js", "game.json", "project.config.json", "unity-namespace.js", "check-version.js" };
}

View File

@ -54,15 +54,11 @@ namespace WeChatWASM
foldInstantGame = WXConvertCore.IsInstantGameAutoStreaming();
projectRootPath = System.IO.Path.GetFullPath(Application.dataPath + "/../");
_dstCache = "";
}
private static WXEditorScriptObject config;
private static bool m_EnablePerfTool = false;
private static string _dstCache;
public void OnFocus()
{
loadData();
@ -187,8 +183,9 @@ namespace WeChatWASM
this.formCheckbox("il2CppOptimizeSize", "Il2Cpp Optimize Size(?)", "对应于Il2CppCodeGeneration选项勾选时使用OptimizeSize(默认推荐)生成代码小15%左右取消勾选则使用OptimizeSpeed。游戏中大量泛型集合的高频访问建议OptimizeSpeed在使用HybridCLR等第三方组件时只能用OptimizeSpeed。(Dotnet Runtime模式下该选项无效)", !UseIL2CPP);
this.formCheckbox("profilingFuncs", "Profiling Funcs");
this.formCheckbox("profilingMemory", "Profiling Memory");
this.formCheckbox("webgl2", "WebGL2.0");
this.formCheckbox("webgl2", "WebGL2.0(beta)");
this.formCheckbox("iOSPerformancePlus", "iOSPerformancePlus(?)", "是否使用iOS高性能+渲染方案有助于提升渲染兼容性、降低WebContent进程内存");
// this.formCheckbox("iOSMetal", "iOSMetal(?)", "是否使用iOSMetal渲染方案需要开启iOS高性能+模式有助于提升运行性能降低iOS功耗");
this.formCheckbox("deleteStreamingAssets", "Clear Streaming Assets");
this.formCheckbox("cleanBuild", "Clean WebGL Build");
// this.formCheckbox("cleanCloudDev", "Clean Cloud Dev");
@ -394,7 +391,6 @@ namespace WeChatWASM
// SDKFilePath = Path.Combine(Application.dataPath, "WX-WASM-SDK-V2", "Runtime", "wechat-default", "unity-sdk", "index.js");
SDKFilePath = Path.Combine(UnityUtil.GetWxSDKRootPath(), "Runtime", "wechat-default", "unity-sdk", "index.js");
config = UnityUtil.GetEditorConf();
_dstCache = config.ProjectConf.DST;
// Instant Game
if (WXConvertCore.IsInstantGameAutoStreaming())
@ -436,7 +432,7 @@ namespace WeChatWASM
this.setData("compressDataPackage", config.ProjectConf.compressDataPackage);
this.setData("videoUrl", config.ProjectConf.VideoUrl);
this.setData("orientation", (int)config.ProjectConf.Orientation);
this.setData("dst", _dstCache);
this.setData("dst", config.ProjectConf.relativeDST);
this.setData("bundleHashLength", config.ProjectConf.bundleHashLength.ToString());
this.setData("bundlePathIdentifier", config.ProjectConf.bundlePathIdentifier);
this.setData("bundleExcludeExtensions", config.ProjectConf.bundleExcludeExtensions);
@ -452,6 +448,7 @@ namespace WeChatWASM
this.setData("customNodePath", config.CompileOptions.CustomNodePath);
this.setData("webgl2", config.CompileOptions.Webgl2);
this.setData("iOSPerformancePlus", config.CompileOptions.enableIOSPerformancePlus);
this.setData("iOSMetal", config.CompileOptions.enableiOSMetal);
this.setData("fbslim", config.CompileOptions.fbslim);
this.setData("useFriendRelation", config.SDKOptions.UseFriendRelation);
this.setData("useMiniGameChat", config.SDKOptions.UseMiniGameChat);
@ -513,8 +510,8 @@ namespace WeChatWASM
config.ProjectConf.compressDataPackage = this.getDataCheckbox("compressDataPackage");
config.ProjectConf.VideoUrl = this.getDataInput("videoUrl");
config.ProjectConf.Orientation = (WXScreenOritation)this.getDataPop("orientation");
_dstCache = this.getDataInput("dst");
config.ProjectConf.DST = GetAbsolutePath(_dstCache);
config.ProjectConf.relativeDST = this.getDataInput("dst");
config.ProjectConf.DST = GetAbsolutePath(config.ProjectConf.relativeDST);
config.ProjectConf.bundleHashLength = int.Parse(this.getDataInput("bundleHashLength"));
config.ProjectConf.bundlePathIdentifier = this.getDataInput("bundlePathIdentifier");
config.ProjectConf.bundleExcludeExtensions = this.getDataInput("bundleExcludeExtensions");
@ -530,6 +527,7 @@ namespace WeChatWASM
config.CompileOptions.CustomNodePath = this.getDataInput("customNodePath");
config.CompileOptions.Webgl2 = this.getDataCheckbox("webgl2");
config.CompileOptions.enableIOSPerformancePlus = this.getDataCheckbox("iOSPerformancePlus");
config.CompileOptions.enableiOSMetal = this.getDataCheckbox("iOSMetal");
config.CompileOptions.fbslim = this.getDataCheckbox("fbslim");
config.SDKOptions.UseFriendRelation = this.getDataCheckbox("useFriendRelation");
config.SDKOptions.UseMiniGameChat = this.getDataCheckbox("useMiniGameChat");

View File

@ -125,6 +125,10 @@ namespace WeChatWASM
{
return WXConvertCore.UseIL2CPP;
});
WXExtEnvDef.RegisterAction("WXConvertCore.UseiOSMetal", (args) =>
{
return WXConvertCore.UseiOSMetal;
});
WXExtEnvDef.RegisterAction("UnityUtil.GetWxSDKRootPath", (args) =>
{
#if UNITY_2018

View File

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

Binary file not shown.

View File

@ -381,6 +381,11 @@
视频url
</summary>
</member>
<member name="F:WeChatWASM.WXProjectConf.relativeDST">
<summary>
导出路径(相对路径)
</summary>
</member>
<member name="F:WeChatWASM.WXProjectConf.DST">
<summary>
导出路径(绝对路径)
@ -643,6 +648,11 @@
是否使用iOS高性能Plus
</summary>
</member>
<member name="F:WeChatWASM.CompileOptions.enableiOSMetal">
<summary>
是否使用iOS metal指令流
</summary>
</member>
<member name="F:WeChatWASM.CompileOptions.brotliMT">
<summary>
是否使用brotli多线程压缩
@ -773,6 +783,11 @@
试玩 appid
</summary>
</member>
<member name="F:WeChatWASM.WXPlayableProjectConf.relativeDST">
<summary>
导出路径(相对路径)
</summary>
</member>
<member name="F:WeChatWASM.WXPlayableProjectConf.DST">
<summary>
导出路径(绝对路径)

View File

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

View File

@ -416,11 +416,11 @@ mergeInto(LibraryManager.library, {
WXVideoPlay: function(id) {
window.WXWASMSDK.WXVideoPlay(_WXPointer_stringify_adaptor(id));
},
WXVideoAddListener: function(id,key) {
WXVideoAddListener: function(id, key) {
window.WXWASMSDK.WXVideoAddListener(_WXPointer_stringify_adaptor(id), _WXPointer_stringify_adaptor(key));
},
WXVideoDestroy: function(id) {
window.WXWASMSDK.WXVideoDestroy(_WXPointer_stringify_adaptor(id));
WXVideoDestroy: function(id, isLast) {
window.WXWASMSDK.WXVideoDestroy(_WXPointer_stringify_adaptor(id), isLast);
},
WXVideoExitFullScreen: function(id) {
window.WXWASMSDK.WXVideoExitFullScreen(_WXPointer_stringify_adaptor(id));

View File

@ -115,8 +115,8 @@ WX_SyncFunction_tnn: function(functionName, returnType, param1, param2){
stringToUTF8((res || ''), buffer, bufferSize);
return buffer;
},
WX_ClassOneWayFunction:function(functionName, returnType, successType, failType, completeType, conf) {
var res = window.WXWASMSDK.WX_ClassOneWayFunction(_WXPointer_stringify_adaptor(functionName), _WXPointer_stringify_adaptor(returnType), _WXPointer_stringify_adaptor(successType), _WXPointer_stringify_adaptor(failType), _WXPointer_stringify_adaptor(completeType), _WXPointer_stringify_adaptor(conf));
WX_ClassConstructor:function(functionName, returnType, successType, failType, completeType, conf) {
var res = window.WXWASMSDK.WX_ClassConstructor(_WXPointer_stringify_adaptor(functionName), _WXPointer_stringify_adaptor(returnType), _WXPointer_stringify_adaptor(successType), _WXPointer_stringify_adaptor(failType), _WXPointer_stringify_adaptor(completeType), _WXPointer_stringify_adaptor(conf));
var bufferSize = lengthBytesUTF8(res || '') + 1;
var buffer = _malloc(bufferSize);
stringToUTF8((res || ''), buffer, bufferSize);
@ -156,5 +156,7 @@ WX_ClassOneWayNoFunction_vt: function(className, functionName, id, param1) {
},
WX_ClassOneWayNoFunction_vn: function(className, functionName, id, param1) {
window.WXWASMSDK.WX_ClassOneWayNoFunction_vs(_WXPointer_stringify_adaptor(className), _WXPointer_stringify_adaptor(functionName), _WXPointer_stringify_adaptor(id), param1);
},WX_ClassOneWayFunction: function(className, id, functionName, successType, failType, completeType, conf, callbackId, usePromise) {
window.WXWASMSDK.WX_ClassOneWayFunction(_WXPointer_stringify_adaptor(className), _WXPointer_stringify_adaptor(id), _WXPointer_stringify_adaptor(functionName), _WXPointer_stringify_adaptor(successType), _WXPointer_stringify_adaptor(failType), _WXPointer_stringify_adaptor(completeType), _WXPointer_stringify_adaptor(conf), _WXPointer_stringify_adaptor(callbackId), usePromise);
},
})

View File

@ -0,0 +1,55 @@
mergeInto(LibraryManager.library, {
JSStartGameDataMonitor: function() {
console.log("call JSStartGameDataMonitor \n");
if (typeof GameGlobal.manager.getGameDataMonitor === 'function')
{
GameGlobal.manager.getGameDataMonitor().start();
}
else
{
console.log("GameGlobal.manager.getGameDataMonitor is not a function \n");
}
},
JSReportUnityProfileData: function(
targetFrameRate, // fps.
monoHeapReserved, monoHeapUsed, nativeReserved, nativeUnused, nativeAllocated, // profiler.
setPassCalls, drawCalls, vertices, trianglesCount // render.
) {
console.log("call JSReportUnityProfileData \n");
let report_data = {
timestamp: new Date().getTime(),
fps: {
targetFrameRate: targetFrameRate,
avgEXFrameTime: _WXGetEXFrameTime(),
},
profiler: {
monoHeapReserved: monoHeapReserved,
monoHeapUsed: monoHeapUsed,
nativeReserved: nativeReserved,
nativeUnused: nativeUnused,
nativeAllocated: nativeAllocated,
},
render: {
setPassCalls: setPassCalls,
drawCalls: drawCalls,
vertices: vertices,
trianglesCount: trianglesCount,
},
webassembly: {
totalHeapMemory: _WXGetTotalMemorySize(),
dynamicMemory: _WXGetDynamicMemorySize(),
usedHeapMemory: _WXGetUsedMemorySize(),
unAllocatedMemory: _WXGetUnAllocatedMemorySize(),
},
assetbundle: {
numberInMemory: _WXGetBundleNumberInMemory(),
numberOnDisk: _WXGetBundleNumberOnDisk(),
sizeInMemory: _WXGetBundleSizeInMemory(),
sizeOnDisk: _WXGetBundleSizeOnDisk(),
}
}
GameGlobal.manager.getGameDataMonitor().reportUnityProfileData(report_data)
},
});

View File

@ -0,0 +1,79 @@
fileFormatVersion: 2
guid: 63a9d4fa9c3846e3704029822b94973f
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
: Any
second:
enabled: 0
settings:
Exclude Editor: 1
Exclude Linux64: 1
Exclude OSXUniversal: 1
Exclude WeixinMiniGame: 1
Exclude Win: 1
Exclude Win64: 1
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 0
settings:
CPU: AnyCPU
DefaultValueInitialized: true
OS: AnyOS
- first:
Facebook: WebGL
second:
enabled: 0
settings: {}
- first:
Standalone: Linux64
second:
enabled: 0
settings:
CPU: AnyCPU
- first:
Standalone: OSXUniversal
second:
enabled: 0
settings:
CPU: None
- first:
Standalone: Win
second:
enabled: 0
settings:
CPU: x86
- first:
Standalone: Win64
second:
enabled: 0
settings:
CPU: x86_64
- first:
WebGL: WebGL
second:
enabled: 1
settings: {}
- first:
WeixinMiniGame: WeixinMiniGame
second:
enabled: 1
settings: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@ -1699,26 +1699,6 @@
如果返回的是字符串,则数据在这个字段
</summary>
</member>
<member name="F:WeChatWASM.WXStatInfo.mode">
<summary>
文件的类型和存取的权限,对应 POSIX stat.st_mode
</summary>
</member>
<member name="F:WeChatWASM.WXStatInfo.size">
<summary>
文件大小单位B对应 POSIX stat.st_size
</summary>
</member>
<member name="F:WeChatWASM.WXStatInfo.lastAccessedTime">
<summary>
文件最近一次被存取或被执行的时间UNIX 时间戳,对应 POSIX stat.st_atime
</summary>
</member>
<member name="F:WeChatWASM.WXStatInfo.lastModifiedTime">
<summary>
文件最后一次被修改的时间UNIX 时间戳,对应 POSIX stat.st_mtime
</summary>
</member>
<member name="F:WeChatWASM.WXStat.path">
<summary>
文件的路径
@ -1769,116 +1749,126 @@
视频的总时长,单位为秒
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.x">
<summary>
视频的左上角横坐标
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.y">
<summary>
视频的左上角纵坐标
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.width">
<summary>
视频的宽度
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.height">
<summary>
视频的高度
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.src">
<member name="F:WeChatWASM.CreateVideoOption.src">
<summary>
视频的资源地址
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.poster">
<summary>
视频的封面
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.initialTime">
<summary>
视频的初始播放位置,单位为 s 秒
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.playbackRate">
<summary>
视频的播放速率,有效值有 0.5、0.8、1.0、1.25、1.5
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.live">
<summary>
视频是否为直播
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.objectFit">
<summary>
视频的缩放模式
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.controls">
<summary>
视频是否显示控件
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.showProgress">
<summary>
是否显示视频底部进度条
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.showProgressInControlMode">
<summary>
是否显示控制栏的进度条
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.backgroundColor">
<summary>
视频背景颜色
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.autoplay">
<member name="F:WeChatWASM.CreateVideoOption.autoplay">
<summary>
视频是否自动播放
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.loop">
<member name="F:WeChatWASM.CreateVideoOption.backgroundColor">
<summary>
视频是否是否循环播放
视频背景颜色
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.muted">
<member name="F:WeChatWASM.CreateVideoOption.controls">
<summary>
视频是否禁音播放
视频是否显示控件
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.obeyMuteSwitch">
<summary>
视频是否遵循系统静音开关设置仅iOS
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.enableProgressGesture">
<summary>
是否启用手势控制播放进度
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.enablePlayGesture">
<member name="F:WeChatWASM.CreateVideoOption.enablePlayGesture">
<summary>
是否开启双击播放的手势
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.showCenterPlayBtn">
<member name="F:WeChatWASM.CreateVideoOption.enableProgressGesture">
<summary>
是否启用手势控制播放进度
</summary>
</member>
<member name="F:WeChatWASM.CreateVideoOption.height">
<summary>
视频的高度
</summary>
</member>
<member name="F:WeChatWASM.CreateVideoOption.initialTime">
<summary>
视频的初始播放位置,单位为 s 秒
</summary>
</member>
<member name="F:WeChatWASM.CreateVideoOption.live">
<summary>
视频是否为直播
</summary>
</member>
<member name="F:WeChatWASM.CreateVideoOption.loop">
<summary>
视频是否是否循环播放
</summary>
</member>
<member name="F:WeChatWASM.CreateVideoOption.muted">
<summary>
视频是否禁音播放
</summary>
</member>
<member name="F:WeChatWASM.CreateVideoOption.obeyMuteSwitch">
<summary>
视频是否遵循系统静音开关设置仅iOS
</summary>
</member>
<member name="F:WeChatWASM.CreateVideoOption.objectFit">
<summary>
视频的缩放模式
</summary>
</member>
<member name="F:WeChatWASM.CreateVideoOption.playbackRate">
<summary>
视频的播放速率,有效值有 0.5、0.8、1.0、1.25、1.5
</summary>
</member>
<member name="F:WeChatWASM.CreateVideoOption.poster">
<summary>
视频的封面
</summary>
</member>
<member name="F:WeChatWASM.CreateVideoOption.showCenterPlayBtn">
<summary>
是否显示视频中央的播放按钮
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.underGameView">
<member name="F:WeChatWASM.CreateVideoOption.showProgress">
<summary>
是否显示视频底部进度条
</summary>
</member>
<member name="F:WeChatWASM.CreateVideoOption.showProgressInControlMode">
<summary>
是否显示控制栏的进度条
</summary>
</member>
<member name="F:WeChatWASM.CreateVideoOption.width">
<summary>
视频的宽度
</summary>
</member>
<member name="F:WeChatWASM.CreateVideoOption.x">
<summary>
视频的左上角横坐标
</summary>
</member>
<member name="F:WeChatWASM.CreateVideoOption.y">
<summary>
视频的左上角纵坐标
</summary>
</member>
<member name="F:WeChatWASM.CreateVideoOption.underGameView">
<summary>
视频是否显示在游戏画布之下
</summary>
</member>
<member name="F:WeChatWASM.CreateVideoOption.autoPauseIfNavigate">
<summary>
视频跳转后自动暂停播放
</summary>
</member>
<member name="F:WeChatWASM.CreateVideoOption.autoPauseIfOpenNative">
<summary>
视频跳转原生页后自动暂停播放
</summary>
</member>
<member name="F:WeChatWASM.EnvVersion.develop">
<summary>
开发版
@ -3129,19 +3119,172 @@
 是否结束
</summary>
</member>
<member name="P:WeChatWASM.NotifyMiniProgramPlayableStatusOption.complete">
<member name="F:WeChatWASM.LoadOption.openlink">
<summary>
接口调用结束的回调函数(调用成功、失败都会执行)
从不同渠道获得的OPENLINK字符串
</summary>
</member>
<member name="P:WeChatWASM.NotifyMiniProgramPlayableStatusOption.fail">
<member name="F:WeChatWASM.LoadOption.query">
<summary>
接口调用失败的回调函数
选填部分活动、功能允许接收自定义query参数请参阅渠道说明默认可不填
</summary>
</member>
<member name="P:WeChatWASM.NotifyMiniProgramPlayableStatusOption.success">
<member name="F:WeChatWASM.ShowOption.openlink">
<summary>
接口调用成功的回调函数
从不同渠道获得的OPENLINK字符串
</summary>
</member>
<member name="F:WeChatWASM.ShowOption.query">
<summary>
选填部分活动、功能允许接收自定义query参数请参阅渠道说明默认可不填
</summary>
</member>
<member name="F:WeChatWASM.VirtualPaymentError.errMsg">
错误信息
| 错误码 | 错误信息 | 说明 |
| - | - | - |
| 1001 | | 参数错误 |
| -1 | | 支付失败 |
| -2 | | 支付取消 |
| -4 | | 风控拦截 |
| -5 | | 开通签约结果未知 |
| -15001 | | 参数错误,具体原因见err_msg |
| -15002 | | outTradeNo重复使用,请换新单号重试 |
| -15003 | | 系统错误 |
| -15004 | | currencyType错误,目前只能填CNY |
| -15005 | | 用户态签名signature错误 |
| -15006 | | 支付签名paySig错误 |
| -15007 | | session_key过期 |
| -15008 | | 二级商户进件未完成 |
| -15009 | | 代币未发布 |
| -15010 | | 道具productId未发布 |
| -15011 | | 现网版本的env只能是0,不能填1(沙盒环境) |
| -15012 | | 调用米大师失败导致关单,请换新单号重试 |
| -15013 | | goodsPrice道具价格错误 |
| -15014 | | 道具/代币发布未生效禁止下单大概10分钟后生效 |
| -15016 | | signData格式有问题 |
| -15017 | | 此商家涉嫌违规,收款功能已被限制,暂无法支付。商家可以登录微信商户平台/微信支付商家助手小程序查看原因和解决方案 |
| -15018 | | 代币或者道具productId审核不通过 |
| -15019 | | 调微信报商户受限,商家可以登录微信商户平台/微信支付商家助手小程序查看原因和解决方案 |
| -15020 | | 操作过快,请稍候再试 |
| -15021 | | 小程序被限频交易 |
</member>
<member name="F:WeChatWASM.VirtualPaymentError.errCode">
错误码
| 错误码 | 错误信息 | 说明 |
| - | - | - |
| 1001 | | 参数错误 |
| -1 | | 支付失败 |
| -2 | | 支付取消 |
| -4 | | 风控拦截 |
| -5 | | 开通签约结果未知 |
| -15001 | | 参数错误,具体原因见err_msg |
| -15002 | | outTradeNo重复使用,请换新单号重试 |
| -15003 | | 系统错误 |
| -15004 | | currencyType错误,目前只能填CNY |
| -15005 | | 用户态签名signature错误 |
| -15006 | | 支付签名paySig错误 |
| -15007 | | session_key过期 |
| -15008 | | 二级商户进件未完成 |
| -15009 | | 代币未发布 |
| -15010 | | 道具productId未发布 |
| -15011 | | 现网版本的env只能是0,不能填1(沙盒环境) |
| -15012 | | 调用米大师失败导致关单,请换新单号重试 |
| -15013 | | goodsPrice道具价格错误 |
| -15014 | | 道具/代币发布未生效禁止下单大概10分钟后生效 |
| -15016 | | signData格式有问题 |
| -15017 | | 此商家涉嫌违规,收款功能已被限制,暂无法支付。商家可以登录微信商户平台/微信支付商家助手小程序查看原因和解决方案 |
| -15018 | | 代币或者道具productId审核不通过 |
| -15019 | | 调微信报商户受限,商家可以登录微信商户平台/微信支付商家助手小程序查看原因和解决方案 |
| -15020 | | 操作过快,请稍候再试 |
| -15021 | | 小程序被限频交易 |
</member>
<member name="F:WeChatWASM.RequestVirtualPaymentFailCallbackErr.errCode">
错误码
</member>
<member name="F:WeChatWASM.RequestVirtualPaymentFailCallbackErr.errMsg">
错误信息
</member>
<member name="F:WeChatWASM.RequestCommonPaymentSuccessCallbackResult.errMsg">
调用成功信息
</member>
<member name="F:WeChatWASM.RequestVirtualPaymentOption.mode">
<summary>
支付的类型, 不同的支付类型有各自额外要传的附加参数
可选值:
- 'short_series_goods': 道具直购;
- 'short_series_coin': 代币充值;
</summary>
</member>
<member name="F:WeChatWASM.RequestVirtualPaymentOption.paySig">
<summary>
支付签名, 详见[《签名详解》](https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/virtual-payment.html)
</summary>
</member>
<member name="F:WeChatWASM.RequestVirtualPaymentOption.signData">
<summary>
具体支付参数见signData, 该参数需以string形式传递, 例如signData: '{"offerId":"123","buyQuantity":1,"env":0,"currencyType":"CNY","productId":"testproductId","goodsPrice":10,"outTradeNo":"xxxxxx","attach":"testdata"}'
</summary>
</member>
<member name="F:WeChatWASM.RequestVirtualPaymentOption.signature">
<summary>
用户态签名, 详见[《签名详解》](https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/virtual-payment.html)
</summary>
</member>
<member name="F:WeChatWASM.RequestMidasPaymentOption.extraInfo">
<summary>
内部预留字段,开发者无需关注
</summary>
</member>
<member name="F:WeChatWASM.RequestMidasPaymentOption.currencyType">
<summary>
币种
可选值:
- 'CNY': 人民币;
</summary>
</member>
<member name="F:WeChatWASM.RequestMidasPaymentOption.mode">
<summary>
支付的类型,不同的支付类型有各自额外要传的附加参数。
可选值:
- 'game': 购买游戏币;
</summary>
</member>
<member name="F:WeChatWASM.RequestMidasPaymentOption.offerId">
<summary>
在米大师侧申请的应用 id
</summary>
</member>
<member name="F:WeChatWASM.RequestMidasPaymentOption.outTradeNo">
<summary>
业务订单号每个订单号只能使用一次重复使用会失败。开发者需要确保该订单号在对应游戏下的唯一性平台会尽可能校验该唯一性约束但极端情况下可能会跳过对该约束的校验。要求32个字符内只能是数字、大小写字母、符号_-|*组成,不能以下划线()开头。建议每次调用wx.requestMidasPayment都换新的outTradeNo。若没有传入则平台会自动填充一个并以下划线开头
</summary>
</member>
<member name="F:WeChatWASM.RequestMidasPaymentOption.buyQuantity">
<summary>
购买数量。mode=game 时必填。购买数量。详见 [buyQuantity 限制说明](#buyquantity-限制说明)。
</summary>
</member>
<member name="F:WeChatWASM.RequestMidasPaymentOption.env">
<summary>
环境配置
可选值:
- 0: 米大师正式环境;
- 1: 米大师沙箱环境;
</summary>
</member>
<member name="F:WeChatWASM.RequestMidasPaymentOption.platform">
<summary>
申请接入时的平台platform 与应用id有关。
可选值:
- 'android': android;
</summary>
</member>
<member name="F:WeChatWASM.RequestMidasPaymentOption.zoneId">
<summary>
分区 ID
</summary>
</member>
<member name="F:WeChatWASM.Gamepad.axes">
@ -4138,26 +4281,6 @@
取值为0/1取值为0表示会把 `App`、`Page` 的生命周期函数和 `wx` 命名空间下的函数调用写入日志取值为1则不会。默认值是 0
</summary>
</member>
<member name="F:WeChatWASM.LoadOption.openlink">
<summary>
从不同渠道获得的OPENLINK字符串
</summary>
</member>
<member name="F:WeChatWASM.LoadOption.query">
<summary>
选填部分活动、功能允许接收自定义query参数请参阅渠道说明默认可不填
</summary>
</member>
<member name="F:WeChatWASM.ShowOption.openlink">
<summary>
从不同渠道获得的OPENLINK字符串
</summary>
</member>
<member name="F:WeChatWASM.ShowOption.query">
<summary>
选填部分活动、功能允许接收自定义query参数请参阅渠道说明默认可不填
</summary>
</member>
<member name="F:WeChatWASM.OnCheckForUpdateListenerResult.hasUpdate">
<summary>
是否有新版本
@ -7098,55 +7221,6 @@
加密算法的初始向量,详细见[加密数据解密算法](https://developers.weixin.qq.com/minigame/dev/guide/open-ability/signature.html)
</summary>
</member>
<member name="F:WeChatWASM.RequestMidasPaymentOption.currencyType">
<summary>
币种
可选值:
- 'CNY': 人民币;
</summary>
</member>
<member name="F:WeChatWASM.RequestMidasPaymentOption.mode">
<summary>
支付的类型,不同的支付类型有各自额外要传的附加参数。
可选值:
- 'game': 购买游戏币;
</summary>
</member>
<member name="F:WeChatWASM.RequestMidasPaymentOption.offerId">
<summary>
在米大师侧申请的应用 id
</summary>
</member>
<member name="F:WeChatWASM.RequestMidasPaymentOption.outTradeNo">
<summary>
业务订单号每个订单号只能使用一次重复使用会失败。开发者需要确保该订单号在对应游戏下的唯一性平台会尽可能校验该唯一性约束但极端情况下可能会跳过对该约束的校验。要求32个字符内只能是数字、大小写字母、符号_-|*组成,不能以下划线()开头。建议每次调用wx.requestMidasPayment都换新的outTradeNo。若没有传入则平台会自动填充一个并以下划线开头
</summary>
</member>
<member name="F:WeChatWASM.RequestMidasPaymentOption.buyQuantity">
<summary>
购买数量。mode=game 时必填。购买数量。详见 [buyQuantity 限制说明](#buyquantity-限制说明)。
</summary>
</member>
<member name="F:WeChatWASM.RequestMidasPaymentOption.env">
<summary>
环境配置
可选值:
- 0: 米大师正式环境;
- 1: 米大师沙箱环境;
</summary>
</member>
<member name="F:WeChatWASM.RequestMidasPaymentOption.platform">
<summary>
申请接入时的平台platform 与应用id有关。
可选值:
- 'android': android;
</summary>
</member>
<member name="F:WeChatWASM.RequestMidasPaymentOption.zoneId">
<summary>
分区 ID
</summary>
</member>
<member name="F:WeChatWASM.MidasPaymentError.errMsg">
<summary>
错误信息
@ -8544,22 +8618,44 @@
显示用户信息按钮
</summary>
</member>
<member name="T:WeChatWASM.WXVideo">
<summary>
微信小游戏视频组件
</summary>
</member>
<member name="F:WeChatWASM.WXVideo._Dict">
<summary>
视频实例字典 (内部使用,请不要访问)
</summary>
</member>
<member name="F:WeChatWASM.WXVideo.instanceId">
<summary>
视频实例ID
</summary>
</member>
<member name="F:WeChatWASM.WXVideo.param">
<summary>
视频创建参数
</summary>
</member>
<member name="M:WeChatWASM.WXVideo.#ctor(System.String,WeChatWASM.CreateVideoOption)">
<summary>
创建视频实例
</summary>
<param name="id">实例ID</param>
<param name="param">创建参数</param>
</member>
<member name="M:WeChatWASM.WXVideo.InitializeProperties">
<summary>
初始化属性
</summary>
</member>
<member name="M:WeChatWASM.WXVideo._HandleCallBack(WeChatWASM.WXVideoCallback)">
<summary>
内部函数,请不要调用
</summary>
<param name="key"></param>
</member>
<member name="P:WeChatWASM.WXVideo.src">
<summary>
视频的资源地址
</summary>
</member>
<member name="P:WeChatWASM.WXVideo.poster">
<summary>
视频的封面
</summary>
</member>
<member name="P:WeChatWASM.WXVideo.x">
<summary>
视频的左上角横坐标
@ -8580,9 +8676,69 @@
视频的高度
</summary>
</member>
<member name="P:WeChatWASM.WXVideo.isPlaying">
<member name="P:WeChatWASM.WXVideo.src">
<summary>
Gets a value indicating whether 是否正在播放
视频的资源地址
</summary>
</member>
<member name="P:WeChatWASM.WXVideo.poster">
<summary>
视频的封面
</summary>
</member>
<member name="P:WeChatWASM.WXVideo.live">
<summary>
是否为直播
</summary>
</member>
<member name="P:WeChatWASM.WXVideo.objectFit">
<summary>
当视频大小与 video 容器大小不一致时,视频的表现形式
</summary>
</member>
<member name="P:WeChatWASM.WXVideo.controls">
<summary>
是否显示默认播放控件(播放/暂停按钮、播放进度、时间)
</summary>
</member>
<member name="P:WeChatWASM.WXVideo.showProgress">
<summary>
是否显示播放进度
</summary>
</member>
<member name="P:WeChatWASM.WXVideo.showProgressInControlMode">
<summary>
在非全屏模式下,是否开启亮度和音量调节手势
</summary>
</member>
<member name="P:WeChatWASM.WXVideo.backgroundColor">
<summary>
视频的背景色
</summary>
</member>
<member name="P:WeChatWASM.WXVideo.obeyMuteSwitch">
<summary>
是否遵循系统静音开关
</summary>
</member>
<member name="P:WeChatWASM.WXVideo.enableProgressGesture">
<summary>
是否开启控制进度的手势
</summary>
</member>
<member name="P:WeChatWASM.WXVideo.enablePlayGesture">
<summary>
是否开启播放手势
</summary>
</member>
<member name="P:WeChatWASM.WXVideo.showCenterPlayBtn">
<summary>
是否显示视频中间的播放按钮
</summary>
</member>
<member name="M:WeChatWASM.WXVideo.Destroy">
<summary>
销毁当前实例
</summary>
</member>
<member name="M:WeChatWASM.WXVideo.Play">
@ -8590,44 +8746,31 @@
播放视频
</summary>
</member>
<member name="M:WeChatWASM.WXVideo.OnPlay(System.Action)">
<member name="M:WeChatWASM.WXVideo.Pause">
<summary>
监听视频播放事件
暂停
</summary>
</member>
<member name="M:WeChatWASM.WXVideo.OffPlay(System.Action)">
<member name="M:WeChatWASM.WXVideo.Stop">
<summary>
取消监听视频播放事件,action 为空表示移除全部事件监听
停止视频
</summary>
</member>
<member name="M:WeChatWASM.WXVideo.OnEnded(System.Action)">
<member name="M:WeChatWASM.WXVideo.Seek(System.Int32)">
<summary>
监听视频播放到末尾事件
视频跳转
</summary>
<param name="time">视频跳转到指定位置,单位为 s 秒</param>
</member>
<member name="M:WeChatWASM.WXVideo.OffEnded(System.Action)">
<member name="M:WeChatWASM.WXVideo.RequestFullScreen(System.Int32)">
<summary>
取消监听视频播放到末尾事件
视频全屏
</summary>
<param name="direction">设置全屏时视频的方向 0: 正常竖向, 90: 屏幕逆时针90度 . -90: 屏幕顺时针90度</param>
</member>
<member name="M:WeChatWASM.WXVideo.OnError(System.Action)">
<member name="M:WeChatWASM.WXVideo.ExitFullScreen">
<summary>
监听视频错误事件
</summary>
</member>
<member name="M:WeChatWASM.WXVideo.OffError(System.Action)">
<summary>
取消监听视频错误事件,action 为空表示移除全部事件监听
</summary>
</member>
<member name="M:WeChatWASM.WXVideo.OnPause(System.Action)">
<summary>
监听视频暂停事件
</summary>
</member>
<member name="M:WeChatWASM.WXVideo.OffPause(System.Action)">
<summary>
取消监听视频暂停事件,action 为空表示移除全部事件监听
视频退出全屏
</summary>
</member>
<member name="M:WeChatWASM.WXVideo.OnWaiting(System.Action)">
@ -8640,36 +8783,45 @@
取消监听视频由于需要缓冲下一帧而停止时触发,action 为空表示移除全部事件监听
</summary>
</member>
<member name="M:WeChatWASM.WXVideo.Destroy">
<member name="M:WeChatWASM.WXVideo.OnProgress(System.Action{WeChatWASM.WXVideoProgress})">
<summary>
销毁当前实例
监听视频下载(缓冲)事件
</summary>
<param name="action"></param>
</member>
<member name="M:WeChatWASM.WXVideo.OffProgress(System.Action{WeChatWASM.WXVideoProgress})">
<summary>
取消监听视频下载(缓冲)事件 ,action 为空表示移除全部事件监听
</summary>
</member>
<member name="M:WeChatWASM.WXVideo.ExitFullScreen">
<member name="M:WeChatWASM.WXVideo.OnPlay(System.Action)">
<summary>
视频退出全屏
监听视频播放事件
</summary>
</member>
<member name="M:WeChatWASM.WXVideo.Pause">
<member name="M:WeChatWASM.WXVideo.OffPlay(System.Action)">
<summary>
暂停
取消监听视频播放事件,action 为空表示移除全部事件监听
</summary>
</member>
<member name="M:WeChatWASM.WXVideo.RequestFullScreen(System.Int32)">
<member name="M:WeChatWASM.WXVideo.OnPause(System.Action)">
<summary>
视频全屏
监听视频暂停事件
</summary>
<param name="direction">设置全屏时视频的方向 0: 正常竖向, 90: 屏幕逆时针90度 . -90: 屏幕顺时针90度</param>
</member>
<member name="M:WeChatWASM.WXVideo.Seek(System.Int32)">
<member name="M:WeChatWASM.WXVideo.OffPause(System.Action)">
<summary>
视频跳转
取消监听视频暂停事件,action 为空表示移除全部事件监听
</summary>
<param name="time">视频跳转到指定位置,单位为 s 秒</param>
</member>
<member name="M:WeChatWASM.WXVideo.Stop">
<member name="M:WeChatWASM.WXVideo.OnEnded(System.Action)">
<summary>
停止视频
监听视频播放到末尾事件
</summary>
</member>
<member name="M:WeChatWASM.WXVideo.OffEnded(System.Action)">
<summary>
取消监听视频播放到末尾事件
</summary>
</member>
<member name="M:WeChatWASM.WXVideo.OnTimeUpdate(System.Action{WeChatWASM.WXVideoTimeUpdate})">
@ -8683,15 +8835,14 @@
取消监听视频播放进度更新事件,action 为空表示移除全部事件监听
</summary>
</member>
<member name="M:WeChatWASM.WXVideo.OnProgress(System.Action{WeChatWASM.WXVideoProgress})">
<member name="M:WeChatWASM.WXVideo.OnError(System.Action{WeChatWASM.WXVideoError})">
<summary>
监听视频下载(缓冲)事件
监听视频错误事件
</summary>
<param name="action"></param>
</member>
<member name="M:WeChatWASM.WXVideo.OffProgress(System.Action{WeChatWASM.WXVideoProgress})">
<member name="M:WeChatWASM.WXVideo.OffError(System.Action{WeChatWASM.WXVideoError})">
<summary>
取消监听视频下载(缓冲)事件 ,action 为空表示移除全部事件监听
取消监听视频错误事件,action 为空表示移除全部事件监听
</summary>
</member>
<member name="M:WeChatWASM.WXVideoDecoder.GetFrameData">

View File

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

Binary file not shown.

View File

@ -1705,26 +1705,6 @@
如果返回的是字符串,则数据在这个字段
</summary>
</member>
<member name="F:WeChatWASM.WXStatInfo.mode">
<summary>
文件的类型和存取的权限,对应 POSIX stat.st_mode
</summary>
</member>
<member name="F:WeChatWASM.WXStatInfo.size">
<summary>
文件大小单位B对应 POSIX stat.st_size
</summary>
</member>
<member name="F:WeChatWASM.WXStatInfo.lastAccessedTime">
<summary>
文件最近一次被存取或被执行的时间UNIX 时间戳,对应 POSIX stat.st_atime
</summary>
</member>
<member name="F:WeChatWASM.WXStatInfo.lastModifiedTime">
<summary>
文件最后一次被修改的时间UNIX 时间戳,对应 POSIX stat.st_mtime
</summary>
</member>
<member name="F:WeChatWASM.WXStat.path">
<summary>
文件的路径
@ -1775,116 +1755,126 @@
视频的总时长,单位为秒
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.x">
<summary>
视频的左上角横坐标
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.y">
<summary>
视频的左上角纵坐标
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.width">
<summary>
视频的宽度
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.height">
<summary>
视频的高度
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.src">
<member name="F:WeChatWASM.CreateVideoOption.src">
<summary>
视频的资源地址
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.poster">
<summary>
视频的封面
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.initialTime">
<summary>
视频的初始播放位置,单位为 s 秒
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.playbackRate">
<summary>
视频的播放速率,有效值有 0.5、0.8、1.0、1.25、1.5
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.live">
<summary>
视频是否为直播
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.objectFit">
<summary>
视频的缩放模式
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.controls">
<summary>
视频是否显示控件
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.showProgress">
<summary>
是否显示视频底部进度条
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.showProgressInControlMode">
<summary>
是否显示控制栏的进度条
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.backgroundColor">
<summary>
视频背景颜色
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.autoplay">
<member name="F:WeChatWASM.CreateVideoOption.autoplay">
<summary>
视频是否自动播放
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.loop">
<member name="F:WeChatWASM.CreateVideoOption.backgroundColor">
<summary>
视频是否是否循环播放
视频背景颜色
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.muted">
<member name="F:WeChatWASM.CreateVideoOption.controls">
<summary>
视频是否禁音播放
视频是否显示控件
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.obeyMuteSwitch">
<summary>
视频是否遵循系统静音开关设置仅iOS
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.enableProgressGesture">
<summary>
是否启用手势控制播放进度
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.enablePlayGesture">
<member name="F:WeChatWASM.CreateVideoOption.enablePlayGesture">
<summary>
是否开启双击播放的手势
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.showCenterPlayBtn">
<member name="F:WeChatWASM.CreateVideoOption.enableProgressGesture">
<summary>
是否启用手势控制播放进度
</summary>
</member>
<member name="F:WeChatWASM.CreateVideoOption.height">
<summary>
视频的高度
</summary>
</member>
<member name="F:WeChatWASM.CreateVideoOption.initialTime">
<summary>
视频的初始播放位置,单位为 s 秒
</summary>
</member>
<member name="F:WeChatWASM.CreateVideoOption.live">
<summary>
视频是否为直播
</summary>
</member>
<member name="F:WeChatWASM.CreateVideoOption.loop">
<summary>
视频是否是否循环播放
</summary>
</member>
<member name="F:WeChatWASM.CreateVideoOption.muted">
<summary>
视频是否禁音播放
</summary>
</member>
<member name="F:WeChatWASM.CreateVideoOption.obeyMuteSwitch">
<summary>
视频是否遵循系统静音开关设置仅iOS
</summary>
</member>
<member name="F:WeChatWASM.CreateVideoOption.objectFit">
<summary>
视频的缩放模式
</summary>
</member>
<member name="F:WeChatWASM.CreateVideoOption.playbackRate">
<summary>
视频的播放速率,有效值有 0.5、0.8、1.0、1.25、1.5
</summary>
</member>
<member name="F:WeChatWASM.CreateVideoOption.poster">
<summary>
视频的封面
</summary>
</member>
<member name="F:WeChatWASM.CreateVideoOption.showCenterPlayBtn">
<summary>
是否显示视频中央的播放按钮
</summary>
</member>
<member name="F:WeChatWASM.WXCreateVideoParam.underGameView">
<member name="F:WeChatWASM.CreateVideoOption.showProgress">
<summary>
是否显示视频底部进度条
</summary>
</member>
<member name="F:WeChatWASM.CreateVideoOption.showProgressInControlMode">
<summary>
是否显示控制栏的进度条
</summary>
</member>
<member name="F:WeChatWASM.CreateVideoOption.width">
<summary>
视频的宽度
</summary>
</member>
<member name="F:WeChatWASM.CreateVideoOption.x">
<summary>
视频的左上角横坐标
</summary>
</member>
<member name="F:WeChatWASM.CreateVideoOption.y">
<summary>
视频的左上角纵坐标
</summary>
</member>
<member name="F:WeChatWASM.CreateVideoOption.underGameView">
<summary>
视频是否显示在游戏画布之下
</summary>
</member>
<member name="F:WeChatWASM.CreateVideoOption.autoPauseIfNavigate">
<summary>
视频跳转后自动暂停播放
</summary>
</member>
<member name="F:WeChatWASM.CreateVideoOption.autoPauseIfOpenNative">
<summary>
视频跳转原生页后自动暂停播放
</summary>
</member>
<member name="F:WeChatWASM.EnvVersion.develop">
<summary>
开发版
@ -3135,19 +3125,172 @@
 是否结束
</summary>
</member>
<member name="P:WeChatWASM.NotifyMiniProgramPlayableStatusOption.complete">
<member name="F:WeChatWASM.LoadOption.openlink">
<summary>
接口调用结束的回调函数(调用成功、失败都会执行)
从不同渠道获得的OPENLINK字符串
</summary>
</member>
<member name="P:WeChatWASM.NotifyMiniProgramPlayableStatusOption.fail">
<member name="F:WeChatWASM.LoadOption.query">
<summary>
接口调用失败的回调函数
选填部分活动、功能允许接收自定义query参数请参阅渠道说明默认可不填
</summary>
</member>
<member name="P:WeChatWASM.NotifyMiniProgramPlayableStatusOption.success">
<member name="F:WeChatWASM.ShowOption.openlink">
<summary>
接口调用成功的回调函数
从不同渠道获得的OPENLINK字符串
</summary>
</member>
<member name="F:WeChatWASM.ShowOption.query">
<summary>
选填部分活动、功能允许接收自定义query参数请参阅渠道说明默认可不填
</summary>
</member>
<member name="F:WeChatWASM.VirtualPaymentError.errMsg">
错误信息
| 错误码 | 错误信息 | 说明 |
| - | - | - |
| 1001 | | 参数错误 |
| -1 | | 支付失败 |
| -2 | | 支付取消 |
| -4 | | 风控拦截 |
| -5 | | 开通签约结果未知 |
| -15001 | | 参数错误,具体原因见err_msg |
| -15002 | | outTradeNo重复使用,请换新单号重试 |
| -15003 | | 系统错误 |
| -15004 | | currencyType错误,目前只能填CNY |
| -15005 | | 用户态签名signature错误 |
| -15006 | | 支付签名paySig错误 |
| -15007 | | session_key过期 |
| -15008 | | 二级商户进件未完成 |
| -15009 | | 代币未发布 |
| -15010 | | 道具productId未发布 |
| -15011 | | 现网版本的env只能是0,不能填1(沙盒环境) |
| -15012 | | 调用米大师失败导致关单,请换新单号重试 |
| -15013 | | goodsPrice道具价格错误 |
| -15014 | | 道具/代币发布未生效禁止下单大概10分钟后生效 |
| -15016 | | signData格式有问题 |
| -15017 | | 此商家涉嫌违规,收款功能已被限制,暂无法支付。商家可以登录微信商户平台/微信支付商家助手小程序查看原因和解决方案 |
| -15018 | | 代币或者道具productId审核不通过 |
| -15019 | | 调微信报商户受限,商家可以登录微信商户平台/微信支付商家助手小程序查看原因和解决方案 |
| -15020 | | 操作过快,请稍候再试 |
| -15021 | | 小程序被限频交易 |
</member>
<member name="F:WeChatWASM.VirtualPaymentError.errCode">
错误码
| 错误码 | 错误信息 | 说明 |
| - | - | - |
| 1001 | | 参数错误 |
| -1 | | 支付失败 |
| -2 | | 支付取消 |
| -4 | | 风控拦截 |
| -5 | | 开通签约结果未知 |
| -15001 | | 参数错误,具体原因见err_msg |
| -15002 | | outTradeNo重复使用,请换新单号重试 |
| -15003 | | 系统错误 |
| -15004 | | currencyType错误,目前只能填CNY |
| -15005 | | 用户态签名signature错误 |
| -15006 | | 支付签名paySig错误 |
| -15007 | | session_key过期 |
| -15008 | | 二级商户进件未完成 |
| -15009 | | 代币未发布 |
| -15010 | | 道具productId未发布 |
| -15011 | | 现网版本的env只能是0,不能填1(沙盒环境) |
| -15012 | | 调用米大师失败导致关单,请换新单号重试 |
| -15013 | | goodsPrice道具价格错误 |
| -15014 | | 道具/代币发布未生效禁止下单大概10分钟后生效 |
| -15016 | | signData格式有问题 |
| -15017 | | 此商家涉嫌违规,收款功能已被限制,暂无法支付。商家可以登录微信商户平台/微信支付商家助手小程序查看原因和解决方案 |
| -15018 | | 代币或者道具productId审核不通过 |
| -15019 | | 调微信报商户受限,商家可以登录微信商户平台/微信支付商家助手小程序查看原因和解决方案 |
| -15020 | | 操作过快,请稍候再试 |
| -15021 | | 小程序被限频交易 |
</member>
<member name="F:WeChatWASM.RequestVirtualPaymentFailCallbackErr.errCode">
错误码
</member>
<member name="F:WeChatWASM.RequestVirtualPaymentFailCallbackErr.errMsg">
错误信息
</member>
<member name="F:WeChatWASM.RequestCommonPaymentSuccessCallbackResult.errMsg">
调用成功信息
</member>
<member name="F:WeChatWASM.RequestVirtualPaymentOption.mode">
<summary>
支付的类型, 不同的支付类型有各自额外要传的附加参数
可选值:
- 'short_series_goods': 道具直购;
- 'short_series_coin': 代币充值;
</summary>
</member>
<member name="F:WeChatWASM.RequestVirtualPaymentOption.paySig">
<summary>
支付签名, 详见[《签名详解》](https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/virtual-payment.html)
</summary>
</member>
<member name="F:WeChatWASM.RequestVirtualPaymentOption.signData">
<summary>
具体支付参数见signData, 该参数需以string形式传递, 例如signData: '{"offerId":"123","buyQuantity":1,"env":0,"currencyType":"CNY","productId":"testproductId","goodsPrice":10,"outTradeNo":"xxxxxx","attach":"testdata"}'
</summary>
</member>
<member name="F:WeChatWASM.RequestVirtualPaymentOption.signature">
<summary>
用户态签名, 详见[《签名详解》](https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/virtual-payment.html)
</summary>
</member>
<member name="F:WeChatWASM.RequestMidasPaymentOption.extraInfo">
<summary>
内部预留字段,开发者无需关注
</summary>
</member>
<member name="F:WeChatWASM.RequestMidasPaymentOption.currencyType">
<summary>
币种
可选值:
- 'CNY': 人民币;
</summary>
</member>
<member name="F:WeChatWASM.RequestMidasPaymentOption.mode">
<summary>
支付的类型,不同的支付类型有各自额外要传的附加参数。
可选值:
- 'game': 购买游戏币;
</summary>
</member>
<member name="F:WeChatWASM.RequestMidasPaymentOption.offerId">
<summary>
在米大师侧申请的应用 id
</summary>
</member>
<member name="F:WeChatWASM.RequestMidasPaymentOption.outTradeNo">
<summary>
业务订单号每个订单号只能使用一次重复使用会失败。开发者需要确保该订单号在对应游戏下的唯一性平台会尽可能校验该唯一性约束但极端情况下可能会跳过对该约束的校验。要求32个字符内只能是数字、大小写字母、符号_-|*组成,不能以下划线()开头。建议每次调用wx.requestMidasPayment都换新的outTradeNo。若没有传入则平台会自动填充一个并以下划线开头
</summary>
</member>
<member name="F:WeChatWASM.RequestMidasPaymentOption.buyQuantity">
<summary>
购买数量。mode=game 时必填。购买数量。详见 [buyQuantity 限制说明](#buyquantity-限制说明)。
</summary>
</member>
<member name="F:WeChatWASM.RequestMidasPaymentOption.env">
<summary>
环境配置
可选值:
- 0: 米大师正式环境;
- 1: 米大师沙箱环境;
</summary>
</member>
<member name="F:WeChatWASM.RequestMidasPaymentOption.platform">
<summary>
申请接入时的平台platform 与应用id有关。
可选值:
- 'android': android;
</summary>
</member>
<member name="F:WeChatWASM.RequestMidasPaymentOption.zoneId">
<summary>
分区 ID
</summary>
</member>
<member name="F:WeChatWASM.Gamepad.axes">
@ -4144,26 +4287,6 @@
取值为0/1取值为0表示会把 `App`、`Page` 的生命周期函数和 `wx` 命名空间下的函数调用写入日志取值为1则不会。默认值是 0
</summary>
</member>
<member name="F:WeChatWASM.LoadOption.openlink">
<summary>
从不同渠道获得的OPENLINK字符串
</summary>
</member>
<member name="F:WeChatWASM.LoadOption.query">
<summary>
选填部分活动、功能允许接收自定义query参数请参阅渠道说明默认可不填
</summary>
</member>
<member name="F:WeChatWASM.ShowOption.openlink">
<summary>
从不同渠道获得的OPENLINK字符串
</summary>
</member>
<member name="F:WeChatWASM.ShowOption.query">
<summary>
选填部分活动、功能允许接收自定义query参数请参阅渠道说明默认可不填
</summary>
</member>
<member name="F:WeChatWASM.OnCheckForUpdateListenerResult.hasUpdate">
<summary>
是否有新版本
@ -7104,55 +7227,6 @@
加密算法的初始向量,详细见[加密数据解密算法](https://developers.weixin.qq.com/minigame/dev/guide/open-ability/signature.html)
</summary>
</member>
<member name="F:WeChatWASM.RequestMidasPaymentOption.currencyType">
<summary>
币种
可选值:
- 'CNY': 人民币;
</summary>
</member>
<member name="F:WeChatWASM.RequestMidasPaymentOption.mode">
<summary>
支付的类型,不同的支付类型有各自额外要传的附加参数。
可选值:
- 'game': 购买游戏币;
</summary>
</member>
<member name="F:WeChatWASM.RequestMidasPaymentOption.offerId">
<summary>
在米大师侧申请的应用 id
</summary>
</member>
<member name="F:WeChatWASM.RequestMidasPaymentOption.outTradeNo">
<summary>
业务订单号每个订单号只能使用一次重复使用会失败。开发者需要确保该订单号在对应游戏下的唯一性平台会尽可能校验该唯一性约束但极端情况下可能会跳过对该约束的校验。要求32个字符内只能是数字、大小写字母、符号_-|*组成,不能以下划线()开头。建议每次调用wx.requestMidasPayment都换新的outTradeNo。若没有传入则平台会自动填充一个并以下划线开头
</summary>
</member>
<member name="F:WeChatWASM.RequestMidasPaymentOption.buyQuantity">
<summary>
购买数量。mode=game 时必填。购买数量。详见 [buyQuantity 限制说明](#buyquantity-限制说明)。
</summary>
</member>
<member name="F:WeChatWASM.RequestMidasPaymentOption.env">
<summary>
环境配置
可选值:
- 0: 米大师正式环境;
- 1: 米大师沙箱环境;
</summary>
</member>
<member name="F:WeChatWASM.RequestMidasPaymentOption.platform">
<summary>
申请接入时的平台platform 与应用id有关。
可选值:
- 'android': android;
</summary>
</member>
<member name="F:WeChatWASM.RequestMidasPaymentOption.zoneId">
<summary>
分区 ID
</summary>
</member>
<member name="F:WeChatWASM.MidasPaymentError.errMsg">
<summary>
错误信息
@ -8550,22 +8624,44 @@
显示用户信息按钮
</summary>
</member>
<member name="T:WeChatWASM.WXVideo">
<summary>
微信小游戏视频组件
</summary>
</member>
<member name="F:WeChatWASM.WXVideo._Dict">
<summary>
视频实例字典 (内部使用,请不要访问)
</summary>
</member>
<member name="F:WeChatWASM.WXVideo.instanceId">
<summary>
视频实例ID
</summary>
</member>
<member name="F:WeChatWASM.WXVideo.param">
<summary>
视频创建参数
</summary>
</member>
<member name="M:WeChatWASM.WXVideo.#ctor(System.String,WeChatWASM.CreateVideoOption)">
<summary>
创建视频实例
</summary>
<param name="id">实例ID</param>
<param name="param">创建参数</param>
</member>
<member name="M:WeChatWASM.WXVideo.InitializeProperties">
<summary>
初始化属性
</summary>
</member>
<member name="M:WeChatWASM.WXVideo._HandleCallBack(WeChatWASM.WXVideoCallback)">
<summary>
内部函数,请不要调用
</summary>
<param name="key"></param>
</member>
<member name="P:WeChatWASM.WXVideo.src">
<summary>
视频的资源地址
</summary>
</member>
<member name="P:WeChatWASM.WXVideo.poster">
<summary>
视频的封面
</summary>
</member>
<member name="P:WeChatWASM.WXVideo.x">
<summary>
视频的左上角横坐标
@ -8586,9 +8682,69 @@
视频的高度
</summary>
</member>
<member name="P:WeChatWASM.WXVideo.isPlaying">
<member name="P:WeChatWASM.WXVideo.src">
<summary>
Gets a value indicating whether 是否正在播放
视频的资源地址
</summary>
</member>
<member name="P:WeChatWASM.WXVideo.poster">
<summary>
视频的封面
</summary>
</member>
<member name="P:WeChatWASM.WXVideo.live">
<summary>
是否为直播
</summary>
</member>
<member name="P:WeChatWASM.WXVideo.objectFit">
<summary>
当视频大小与 video 容器大小不一致时,视频的表现形式
</summary>
</member>
<member name="P:WeChatWASM.WXVideo.controls">
<summary>
是否显示默认播放控件(播放/暂停按钮、播放进度、时间)
</summary>
</member>
<member name="P:WeChatWASM.WXVideo.showProgress">
<summary>
是否显示播放进度
</summary>
</member>
<member name="P:WeChatWASM.WXVideo.showProgressInControlMode">
<summary>
在非全屏模式下,是否开启亮度和音量调节手势
</summary>
</member>
<member name="P:WeChatWASM.WXVideo.backgroundColor">
<summary>
视频的背景色
</summary>
</member>
<member name="P:WeChatWASM.WXVideo.obeyMuteSwitch">
<summary>
是否遵循系统静音开关
</summary>
</member>
<member name="P:WeChatWASM.WXVideo.enableProgressGesture">
<summary>
是否开启控制进度的手势
</summary>
</member>
<member name="P:WeChatWASM.WXVideo.enablePlayGesture">
<summary>
是否开启播放手势
</summary>
</member>
<member name="P:WeChatWASM.WXVideo.showCenterPlayBtn">
<summary>
是否显示视频中间的播放按钮
</summary>
</member>
<member name="M:WeChatWASM.WXVideo.Destroy">
<summary>
销毁当前实例
</summary>
</member>
<member name="M:WeChatWASM.WXVideo.Play">
@ -8596,44 +8752,31 @@
播放视频
</summary>
</member>
<member name="M:WeChatWASM.WXVideo.OnPlay(System.Action)">
<member name="M:WeChatWASM.WXVideo.Pause">
<summary>
监听视频播放事件
暂停
</summary>
</member>
<member name="M:WeChatWASM.WXVideo.OffPlay(System.Action)">
<member name="M:WeChatWASM.WXVideo.Stop">
<summary>
取消监听视频播放事件,action 为空表示移除全部事件监听
停止视频
</summary>
</member>
<member name="M:WeChatWASM.WXVideo.OnEnded(System.Action)">
<member name="M:WeChatWASM.WXVideo.Seek(System.Int32)">
<summary>
监听视频播放到末尾事件
视频跳转
</summary>
<param name="time">视频跳转到指定位置,单位为 s 秒</param>
</member>
<member name="M:WeChatWASM.WXVideo.OffEnded(System.Action)">
<member name="M:WeChatWASM.WXVideo.RequestFullScreen(System.Int32)">
<summary>
取消监听视频播放到末尾事件
视频全屏
</summary>
<param name="direction">设置全屏时视频的方向 0: 正常竖向, 90: 屏幕逆时针90度 . -90: 屏幕顺时针90度</param>
</member>
<member name="M:WeChatWASM.WXVideo.OnError(System.Action)">
<member name="M:WeChatWASM.WXVideo.ExitFullScreen">
<summary>
监听视频错误事件
</summary>
</member>
<member name="M:WeChatWASM.WXVideo.OffError(System.Action)">
<summary>
取消监听视频错误事件,action 为空表示移除全部事件监听
</summary>
</member>
<member name="M:WeChatWASM.WXVideo.OnPause(System.Action)">
<summary>
监听视频暂停事件
</summary>
</member>
<member name="M:WeChatWASM.WXVideo.OffPause(System.Action)">
<summary>
取消监听视频暂停事件,action 为空表示移除全部事件监听
视频退出全屏
</summary>
</member>
<member name="M:WeChatWASM.WXVideo.OnWaiting(System.Action)">
@ -8646,36 +8789,45 @@
取消监听视频由于需要缓冲下一帧而停止时触发,action 为空表示移除全部事件监听
</summary>
</member>
<member name="M:WeChatWASM.WXVideo.Destroy">
<member name="M:WeChatWASM.WXVideo.OnProgress(System.Action{WeChatWASM.WXVideoProgress})">
<summary>
销毁当前实例
监听视频下载(缓冲)事件
</summary>
<param name="action"></param>
</member>
<member name="M:WeChatWASM.WXVideo.OffProgress(System.Action{WeChatWASM.WXVideoProgress})">
<summary>
取消监听视频下载(缓冲)事件 ,action 为空表示移除全部事件监听
</summary>
</member>
<member name="M:WeChatWASM.WXVideo.ExitFullScreen">
<member name="M:WeChatWASM.WXVideo.OnPlay(System.Action)">
<summary>
视频退出全屏
监听视频播放事件
</summary>
</member>
<member name="M:WeChatWASM.WXVideo.Pause">
<member name="M:WeChatWASM.WXVideo.OffPlay(System.Action)">
<summary>
暂停
取消监听视频播放事件,action 为空表示移除全部事件监听
</summary>
</member>
<member name="M:WeChatWASM.WXVideo.RequestFullScreen(System.Int32)">
<member name="M:WeChatWASM.WXVideo.OnPause(System.Action)">
<summary>
视频全屏
监听视频暂停事件
</summary>
<param name="direction">设置全屏时视频的方向 0: 正常竖向, 90: 屏幕逆时针90度 . -90: 屏幕顺时针90度</param>
</member>
<member name="M:WeChatWASM.WXVideo.Seek(System.Int32)">
<member name="M:WeChatWASM.WXVideo.OffPause(System.Action)">
<summary>
视频跳转
取消监听视频暂停事件,action 为空表示移除全部事件监听
</summary>
<param name="time">视频跳转到指定位置,单位为 s 秒</param>
</member>
<member name="M:WeChatWASM.WXVideo.Stop">
<member name="M:WeChatWASM.WXVideo.OnEnded(System.Action)">
<summary>
停止视频
监听视频播放到末尾事件
</summary>
</member>
<member name="M:WeChatWASM.WXVideo.OffEnded(System.Action)">
<summary>
取消监听视频播放到末尾事件
</summary>
</member>
<member name="M:WeChatWASM.WXVideo.OnTimeUpdate(System.Action{WeChatWASM.WXVideoTimeUpdate})">
@ -8689,15 +8841,14 @@
取消监听视频播放进度更新事件,action 为空表示移除全部事件监听
</summary>
</member>
<member name="M:WeChatWASM.WXVideo.OnProgress(System.Action{WeChatWASM.WXVideoProgress})">
<member name="M:WeChatWASM.WXVideo.OnError(System.Action{WeChatWASM.WXVideoError})">
<summary>
监听视频下载(缓冲)事件
监听视频错误事件
</summary>
<param name="action"></param>
</member>
<member name="M:WeChatWASM.WXVideo.OffProgress(System.Action{WeChatWASM.WXVideoProgress})">
<member name="M:WeChatWASM.WXVideo.OffError(System.Action{WeChatWASM.WXVideoError})">
<summary>
取消监听视频下载(缓冲)事件 ,action 为空表示移除全部事件监听
取消监听视频错误事件,action 为空表示移除全部事件监听
</summary>
</member>
<member name="M:WeChatWASM.WXVideoDecoder.GetFrameData">

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: b521413075c053e47a06a3b8bc3b7725
guid: 73f0f5fde7193ea9d6786ceb70926356
DefaultImporter:
externalObjects: {}
userData:

View File

@ -4036,32 +4036,6 @@ namespace WeChatWASM
return WXSDKManagerHandler.Instance.GetLogManager(option);
}
/// <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`
/// 小游戏开放页面管理器用于启动微信内置的各种小游戏活动、功能页面。具体OPENLINK值由不同的能力渠道获得。
/// **示例代码**
/// ```js
/// const pageManager = wx.createPageManager();
/// pageManager.load({
/// openlink: 'xxxxxxx-xxxxxx', // 由不同渠道获得的OPENLINK值
/// }).then((res) => {
/// // 加载成功res 可能携带不同活动、功能返回的特殊回包信息(具体请参阅渠道说明)
/// console.log(res);
/// // 加载成功后按需显示
/// pageManager.show();
/// }).catch((err) => {
/// // 加载失败,请查阅 err 给出的错误信息
/// console.error(err);
/// })
/// ```
/// </summary>
/// <returns></returns>
public static WXPageManager CreatePageManager()
{
return WXSDKManagerHandler.Instance.CreatePageManager();
}
/// <summary>
/// [[RealtimeLogManager](https://developers.weixin.qq.com/minigame/dev/api/base/debug/RealtimeLogManager.html) wx.getRealtimeLogManager()](https://developers.weixin.qq.com/minigame/dev/api/base/debug/wx.getRealtimeLogManager.html)
/// 需要基础库: `2.14.4`

View File

@ -535,7 +535,7 @@ namespace WeChatWASM
/// </summary>
/// <param name="param"></param>
/// <returns></returns>
public static WXVideo CreateVideo(WXCreateVideoParam param)
public static WXVideo CreateVideo(CreateVideoOption param)
{
return WXSDKManagerHandler.Instance.CreateVideo(param);
}
@ -1127,6 +1127,41 @@ namespace WeChatWASM
WXSDKManagerHandler.Instance.NotifyMiniProgramPlayableStatus(option);
}
#endregion
#region
/// <summary>
/// 请求虚拟支付
/// </summary>
public static void RequestVirtualPayment(RequestVirtualPaymentOption option)
{
WXSDKManagerHandler.Instance.RequestVirtualPayment(option);
}
#endregion
/// <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`
/// 小游戏开放页面管理器用于启动微信内置的各种小游戏活动、功能页面。具体OPENLINK值由不同的能力渠道获得。
/// **示例代码**
/// ```js
/// const pageManager = wx.createPageManager();
/// pageManager.load({
/// openlink: 'xxxxxxx-xxxxxx', // 由不同渠道获得的OPENLINK值
/// }).then((res) => {
/// // 加载成功res 可能携带不同活动、功能返回的特殊回包信息(具体请参阅渠道说明)
/// console.log(res);
/// // 加载成功后按需显示
/// pageManager.show();
/// }).catch((err) => {
/// // 加载失败,请查阅 err 给出的错误信息
/// console.error(err);
/// })
/// ```
/// </summary>
/// <returns></returns>
public static WXPageManager CreatePageManager()
{
return WXSDKManagerHandler.Instance.CreatePageManager();
}
}
}
#endif

View File

@ -8,6 +8,10 @@ using UnityEngine;
using UnityEngine.Scripting;
using System.IO;
using Unity.Profiling;
using UnityEngine.Profiling;
using Debug = UnityEngine.Debug;
#if PLATFORM_WEIXINMINIGAME || PLATFORM_WEBGL || UNITY_EDITOR
@ -20,17 +24,17 @@ namespace WXSDKPerf
public class WXPerfEngine
{
#if !UNITY_EDITOR
static WXPerfEngine_Implementation m_PerfEngineImplementation = null;
static WXPerfEngine_Implementation m_PerfEngineImplementation = null;
#endif
[RuntimeInitializeOnLoadMethod]
public static void StartWXPerfEngine()
{
#if UNITY_EDITOR
return;
return;
#else
m_PerfEngineImplementation = new WXPerfEngine_Implementation();
m_PerfEngineImplementation.StartPerfEngine();
m_PerfEngineImplementation.StartPerfEngine();
#endif
}
@ -45,7 +49,7 @@ namespace WXSDKPerf
public static void Annotation(string InAnnotationString)
{
#if UNITY_EDITOR
return;
return;
#else
// Don't record annotation if we are not recording.
if (!IsRecording())
@ -68,7 +72,7 @@ namespace WXSDKPerf
#endif
}
/// <summary>
/// 检查是否正在录制性能数据
/// </summary>
@ -89,14 +93,14 @@ namespace WXSDKPerf
#else
DateTime timestamp = DateTime.Now;
var dateString = timestamp.ToLocalTime().ToString("yyyy-MM-dd_HH-mm-ss", System.Globalization.CultureInfo.InvariantCulture);
var snapshotFileName = $"{dateString}.snap";
var snapshotFileName = $"{dateString}.snap";
#if UNITY_2018_3_OR_NEWER && !UNITY_2022_2_OR_NEWER
UnityEngine.Profiling.Memory.Experimental.MemoryProfiler.TakeSnapshot(Path.Combine(Application.persistentDataPath, snapshotFileName),
UnityEngine.Profiling.Memory.Experimental.MemoryProfiler.TakeSnapshot(Path.Combine(Application.persistentDataPath, snapshotFileName),
WXPerfEngine_Implementation.CaptureSnapshotCallback, (UnityEngine.Profiling.Memory.Experimental.CaptureFlags)31);
#elif UNITY_2022_2_OR_NEWER
Unity.Profiling.Memory.MemoryProfiler.TakeSnapshot(Path.Combine(Application.persistentDataPath, snapshotFileName),
Unity.Profiling.Memory.MemoryProfiler.TakeSnapshot(Path.Combine(Application.persistentDataPath, snapshotFileName),
WXPerfEngine_Implementation.CaptureSnapshotCallback, (Unity.Profiling.Memory.CaptureFlags)31);
#endif
#endif
@ -109,7 +113,7 @@ namespace WXSDKPerf
public static void SetLuaState(IntPtr L)
{
#if UNITY_EDITOR
return;
return;
#else
if (m_PerfEngineImplementation == null)
{
@ -120,7 +124,7 @@ namespace WXSDKPerf
m_PerfEngineImplementation.SetLuaState(L);
#endif
}
/// <summary>
/// 声明自定义性能指标
/// </summary>
@ -130,7 +134,7 @@ namespace WXSDKPerf
public static void DeclareCustomStatInfo(string inStatName, string inStatCategory, int inStatInterpType = 1)
{
#if UNITY_EDITOR
return;
return;
#else
if (m_PerfEngineImplementation == null)
{
@ -151,7 +155,7 @@ namespace WXSDKPerf
public static void SetCustomStatValue(string inStatName, float inValue)
{
#if UNITY_EDITOR
return;
return;
#else
if (m_PerfEngineImplementation == null)
{
@ -171,7 +175,7 @@ namespace WXSDKPerf
public static void AddCustomStatInfoBy(string inStatName, float inValue)
{
#if UNITY_EDITOR
return;
return;
#else
if (m_PerfEngineImplementation == null)
{
@ -179,9 +183,9 @@ namespace WXSDKPerf
return;
}
m_PerfEngineImplementation.AddCustomStatInfoBy(inStatName, inValue);
m_PerfEngineImplementation.AddCustomStatInfoBy(inStatName, inValue);
#endif
}
@ -195,11 +199,11 @@ namespace WXSDKPerf
/// <param name="inEnableCaptureResource">是否启用资源捕获</param>
/// <param name="inEnableLuaMemoryMonitor">是否启用Lua内存监控</param>
/// <param name="inEnableLuaFunctionMemoryTracking">是否启用Lua函数内存跟踪</param>
public static void StartRecordManually(bool inEnableStackTrace, bool inEnableStatInfo, bool inFrequentScreenShot, bool inEnablebRenderInst,
public static void StartRecordManually(bool inEnableStackTrace, bool inEnableStatInfo, bool inFrequentScreenShot, bool inEnablebRenderInst,
bool inEnableCaptureResource, bool inEnableLuaMemoryMonitor, bool inEnableLuaFunctionMemoryTracking)
{
#if UNITY_EDITOR
return;
return;
#else
if (m_PerfEngineImplementation == null)
{
@ -207,7 +211,7 @@ namespace WXSDKPerf
return;
}
m_PerfEngineImplementation.StartRecordManually(inEnableStackTrace, inEnableStatInfo, inFrequentScreenShot, inEnablebRenderInst,
m_PerfEngineImplementation.StartRecordManually(inEnableStackTrace, inEnableStatInfo, inFrequentScreenShot, inEnablebRenderInst,
inEnableCaptureResource, inEnableLuaMemoryMonitor, inEnableLuaFunctionMemoryTracking);
#endif
}
@ -218,7 +222,7 @@ namespace WXSDKPerf
public static void StopRecordManually()
{
#if UNITY_EDITOR
return;
return;
#else
if (m_PerfEngineImplementation == null)
{

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: e5108f88099bb61c1ac7bce85c058bbb
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: 8d3e8e044df6c2205ce1819e5a59ce45
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 0273befd5791516c05640b866a4057ac
guid: 4a31dd202fa1d4587a85cba4f0c667cc
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: 92af1c93c32d8868b037a614a7c51557
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: fc9b81dcc97ac15f78c67b22645b5156
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: 82a6bdd86dff7182973b291cb71e97cf
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: 6d2369838be13214bd54aa0fc21b7d44
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: 531515f3324b0cf5a249ca868fbb957e
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: e0df799a91a2d21cebe277c71f6f1b47
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: 3b395b6e591cc8b3668e0b64e63fc88b
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: 829a267043b8efe45ec32538e04e38cb
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

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

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: 9bcc1936d8e45b5791c599fe8253919c
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: e9ba345b6a1cfac5e5b1baece5818f32
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: d52a1b6e1c06472f3a3a461209736492
guid: 0415e69a2d982ea2f4e243b28fa26929
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: bbec39b14da95d130e2852e718bcee52
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: 8460d6ded5618c2fe3c2e26ab171d528
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: 5811c5c2d62fc7802c64f1d2b23745f1
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: 2d594a8f2c696984c5aec107164e76f9
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: 6dae963d59fa4418d09722a93e87d793
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: 3382ae1c51f722f746a53c8397691245
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

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

View File

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

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 31f9cc6cd458af9ae649ac0f4cc8772e
guid: fe863fbe7df4acac64ba936b76981a87
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: 2a92708403fe30f324cbf69ccf64a5ca
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: 5667dda7d63d3e790db64d20a50e53d7
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: d0a26195cb9a986d48760de79dc69c05
guid: 796b04fbf1fa2b3bfcfa2b80f4d2e837
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: ceec02b40e3331d02d75fa809a9760a7
guid: 84881ed29a07b082c2056962365f976d
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: a5bfd354ed4424c67e796543113905e3
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: 9a9b82828681d31f3bf8dbd1070f233e
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: 3a4d82e9de0cb38b0c9224360f3ad139
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: 83e05223787367362bb499322ebcbcd2
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: 23b767c936834d1b790a40ea00e26d64
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: 06859dca228ca66fea3992ed30fba8e5
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: 968b47eba0189213d3a4cfabbadee54c
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: e49d3c13e975031b70c483e1ed603afe
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: 710313a81f77482d26012751c5d6592a
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: d248c4018fb61ecb908ba00739d01f07
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1018,6 +1018,9 @@ export default {
if (WEBAudio.audioWebSupport === 0 || WEBAudio.audioWebEnabled === 0) {
return;
}
if (WEBAudio.audioContext && WEBAudio.audioContext.state !== 'suspended') {
return;
}
resumeWebAudio();
},
_JS_Sound_Set3D(channelInstance, threeD) {

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: 8342caa71b7edf46f906aa855aea4ef3
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: 718c91781714a7b6e55192f71021c111
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: c92653458db092aae35564ef3edd6252
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: 87fd398552f71fc18b7081ae7ffdef57
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: 6e3f60a883fb2f8249ce74acf2c14acd
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: 9c5773dae458d8d31c7f11fc0add3690
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: cdaa05d30f80a46dddcc25d674615153
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: 6b8b462632c2f7613e7cc0c1119025ac
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: 95650874bc818949f578987590377532
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: 84fba3d688f27373813d8b76f49bacb5
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: 7e863e19487a6cda9d53bbfc8e3fbd03
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: 028168a2cac97f16c8ebf98e5b676723
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: 9733080f2e9cef0f03c3d0ee1dad8983
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: 146c71b4b08001e55ca1333402310e8c
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

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

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: 745ed2f1262c74198123f00a889f2b22
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: 54cbff6ff1c1bb0c4045d7ad1dff8c71
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: 23879d36971922e903eddd9885892fb3
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: 487beba01cc78d65dce5dd0e0dfded2e
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 481df7275cffcd473c8a1114f7d73979
guid: 848a7bcc88d983f42b19e6c85a7a3865
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: 62febf55450b14dd5e6d76f19bbd702a
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: 846c2b864d1f3ada23aa9c83cb45e872
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

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

View File

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

View File

@ -1,4 +1,11 @@
export const ResType = {
Gamepad: {
axes: 'IAnyObject[]',
buttons: 'IAnyObject[]',
connected: 'bool',
id: 'string',
index: 'string',
},
AccountInfo: {
miniProgram: 'MiniProgram',
plugin: 'Plugin',
@ -496,7 +503,7 @@ export const ResType = {
headUrl: 'string',
nickname: 'string',
nonceId: 'string',
otherInfos: 'AnyKeyword[]',
otherInfos: 'any[]',
replayStatus: 'number',
status: 'number',
errMsg: 'string',
@ -505,7 +512,7 @@ export const ResType = {
headUrl: 'string',
nickname: 'string',
noticeId: 'string',
otherInfos: 'AnyKeyword[]',
otherInfos: 'any[]',
reservable: 'bool',
startTime: 'string',
status: 'number',
@ -574,6 +581,11 @@ export const ResType = {
weakNet: 'bool',
errMsg: 'string',
},
GetPhoneNumberSuccessCallbackResult: {
code: 'string',
errMsg: 'string',
errno: 'number',
},
GetPrivacySettingSuccessCallbackResult: {
needAuthorization: 'bool',
privacyContractName: 'string',
@ -598,6 +610,10 @@ export const ResType = {
mainSwitch: 'bool',
itemSettings: 'object',
},
GetShowSplashAdStatusSuccessCallbackResult: {
status: 'string',
errMsg: 'string',
},
GetStorageInfoSuccessCallbackOption: {
currentSize: 'number',
keys: 'string[]',
@ -724,6 +740,12 @@ export const ResType = {
message: 'string',
stack: 'string',
},
OnGamepadConnectedListenerResult: {
gamepad: 'string',
},
OnGamepadDisconnectedListenerResult: {
gamepad: 'string',
},
OnHandoffListenerResult: {
query: 'string',
},
@ -741,14 +763,6 @@ export const ResType = {
OnMemoryWarningListenerResult: {
level: 'number',
},
OnMenuButtonBoundingClientRectWeightChangeListenerResult: {
bottom: 'number',
height: 'number',
left: 'number',
right: 'number',
top: 'number',
width: 'number',
},
OnMouseDownListenerResult: {
button: 'number',
timeStamp: 'long',
@ -849,17 +863,6 @@ export const ResType = {
subscriptionsSetting: 'SubscriptionsSetting',
errMsg: 'string',
},
OperateGameRecorderVideoOption: {
atempo: 'number',
audioMix: 'bool',
bgm: 'string',
desc: 'string',
path: 'string',
query: 'string',
timeRange: 'number[]',
title: 'string',
volume: 'number',
},
MediaSource: {
url: 'string',
poster: 'string',

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: 4804e01bf66b4037ae3257077b1fa612
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: 2ec2332fcb9a2cee2781f7fde8e4577d
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

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

View File

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

View File

@ -23,7 +23,7 @@ function getClassObject(className, id) {
// eslint-disable-next-line @typescript-eslint/naming-convention
function WX_OneWayNoFunction(functionName, ...params) {
wx[functionName.replace(/^\w/, a => a.toLowerCase())](...params);
wx[functionName.replace(/^\w/, (a) => a.toLowerCase())](...params);
}
@ -33,7 +33,7 @@ const onlyReadyResponse = [
];
// eslint-disable-next-line @typescript-eslint/naming-convention
function WX_SyncFunction(functionName, ...params) {
return wx[functionName.replace(/^\w/, a => a.toLowerCase())](...params);
return wx[functionName.replace(/^\w/, (a) => a.toLowerCase())](...params);
}
// eslint-disable-next-line @typescript-eslint/naming-convention
@ -42,13 +42,22 @@ function WX_ClassOneWayNoFunction(className, functionName, id, ...params) {
if (!obj) {
return;
}
obj[functionName.replace(/^\w/, a => a.toLowerCase())](...params);
obj[functionName.replace(/^\w/, (a) => a.toLowerCase())](...params);
}
function classFormatAndSend(id, callbackId, callbackName, callbackType, resType, res) {
formatResponse(resType, res);
moduleHelper.send(callbackName, classGetMsg(id, callbackId, callbackType, res));
}
function classGetMsg(id, callbackId, resType, res) {
return JSON.stringify({
id, callbackId, type: resType, res: JSON.stringify(res) || '',
});
}
export default {
WX_OneWayFunction(functionName, successType, failType, completeType, conf, callbackId) {
const lowerFunctionName = functionName.replace(/^\w/, a => a.toLowerCase());
const lowerFunctionName = functionName.replace(/^\w/, (a) => a.toLowerCase());
const config = formatJsonStr(conf);
// specialJS
if (lowerFunctionName === 'login') {
if (!config.timeout) {
delete config.timeout;
@ -111,7 +120,7 @@ export default {
moduleHelper.send(`_${functionName}Callback`, resStr);
};
onEventLists[functionName].push(callback);
wx[functionName.replace(/^\w/, a => a.toLowerCase())](callback);
wx[functionName.replace(/^\w/, (a) => a.toLowerCase())](callback);
},
WX_OffEventRegister(functionName) {
(onEventLists[functionName] || []).forEach((v) => {
@ -225,7 +234,7 @@ export default {
},
WX_SyncFunction_t(functionName, returnType) {
const res = WX_SyncFunction(functionName);
if (onlyReadyResponse.includes(functionName.replace(/^\w/, a => a.toLowerCase()))) {
if (onlyReadyResponse.includes(functionName.replace(/^\w/, (a) => a.toLowerCase()))) {
formatResponse(returnType, JSON.parse(JSON.stringify(res)));
return JSON.stringify(res);
}
@ -262,10 +271,10 @@ export default {
formatResponse(returnType, res);
return JSON.stringify(res);
},
WX_ClassOneWayFunction(functionName, returnType, successType, failType, completeType, conf) {
WX_ClassConstructor(functionName, returnType, successType, failType, completeType, conf) {
const config = formatJsonStr(conf);
const callbackId = uid();
const obj = wx[functionName.replace(/^\w/, a => a.toLowerCase())]({
const obj = wx[functionName.replace(/^\w/, (a) => a.toLowerCase())]({
...config,
success(res) {
formatResponse(successType, res);
@ -293,7 +302,7 @@ export default {
return callbackId;
},
WX_ClassFunction(functionName, returnType, option) {
const obj = wx[functionName.replace(/^\w/, a => a.toLowerCase())](formatJsonStr(option));
const obj = wx[functionName.replace(/^\w/, (a) => a.toLowerCase())](formatJsonStr(option));
const id = uid();
if (!ClassLists[returnType]) {
ClassLists[returnType] = {};
@ -347,10 +356,10 @@ export default {
ClassOnEventLists[className + functionName][id + eventName].push(callback);
// WXVideoDecoder OnEvent 不规范 特殊处理
if (className === 'WXVideoDecoder') {
obj[functionName.replace(/^\w/, a => a.toLowerCase())](eventName, callback);
obj[functionName.replace(/^\w/, (a) => a.toLowerCase())](eventName, callback);
}
else {
obj[functionName.replace(/^\w/, a => a.toLowerCase())](callback);
obj[functionName.replace(/^\w/, (a) => a.toLowerCase())](callback);
}
},
WX_ClassOffEventFunction(className, functionName, id, eventName) {
@ -389,7 +398,7 @@ export default {
if (!obj) {
return JSON.stringify(formatResponse(returnType));
}
const res = obj[functionName.replace(/^\w/, a => a.toLowerCase())]();
const res = obj[functionName.replace(/^\w/, (a) => a.toLowerCase())]();
return JSON.stringify(formatResponse(returnType, res, id));
},
WX_ClassOneWayNoFunction_vt(className, functionName, id, param1) {
@ -399,4 +408,41 @@ export default {
WX_ClassOneWayNoFunction_vn(className, functionName, id, param1) {
WX_ClassOneWayNoFunction(className, functionName, id, param1);
},
WX_ClassOneWayFunction(className, functionName, id, successType, failType, completeType, conf, callbackId, usePromise = false) {
const obj = getClassObject(className, id);
if (!obj) {
return;
}
const lowerFunctionName = functionName.replace(/^\w/, (a) => a.toLowerCase());
const config = formatJsonStr(conf);
if (usePromise) {
obj[lowerFunctionName]({
...config,
}).then((res) => {
classFormatAndSend(id, callbackId, `_${className}${functionName}Callback`, 'success', successType, res);
})
.catch((res) => {
classFormatAndSend(id, callbackId, `_${className}${functionName}Callback`, 'fail', failType, res);
})
.finally((res) => {
classFormatAndSend(id, callbackId, `_${className}${functionName}Callback`, 'complete', completeType, res);
});
}
else {
obj[lowerFunctionName]({
...config,
success(res) {
classFormatAndSend(id, callbackId, `_${className}${functionName}Callback`, 'success', successType, res);
},
fail(res) {
classFormatAndSend(id, callbackId, `_${className}${functionName}Callback`, 'fail', failType, res);
},
complete(res) {
classFormatAndSend(id, callbackId, `_${className}${functionName}Callback`, 'complete', completeType, res);
},
});
}
},
};

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: 45586bcf2aec8da319b74e07858c2427
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: 9d1d40e411062d95d5e5a826fca7407f
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: 38fecf1cc6b371057e50349b5f3551cd
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: 9824f48deb66fd456ff9911fb139edaa
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

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

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 4b807ee5567f2a193edfca4bdffbd798
guid: fd914dbcd84e84df6f9074252d40b203
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: 8a6e150eef26403510c814e0e93a2694
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: 5f882f41fe48cd2b2b49f8c15b4ecdea
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: 4c10ebb6213c7a7fa92a91ba5c9649ee
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: 101716bf913536da0fb256ead631e637
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

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

View File

@ -18,12 +18,15 @@ export default {
if (!obj) {
return;
}
if (key === 'x' || key === 'y' || key === 'width' || key === 'height') {
if (key === 'x' || key === 'y' || key === 'width' || key === 'height' || key === 'playbackRate' || key === 'initialTime') {
obj[key] = +value;
}
else if (key === 'src' || key === 'poster') {
obj[key] = value;
}
else if (key === 'loop' || key === 'muted') {
obj[key] = value === 'true';
}
},
WXVideoPlay(id) {
const obj = getObject(id);
@ -40,10 +43,11 @@ export default {
obj[key]((e) => {
moduleHelper.send('OnVideoCallback', JSON.stringify({
callbackId: id,
errMsg: key,
type: key,
position: e && e.position,
buffered: e && e.buffered,
duration: e && e.duration,
errMsg: e && e.errMsg,
}));
if (key === 'onError') {
GameGlobal.enableTransparentCanvas = false;

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: 828f84320fa56abfa00ee9a5c916cbb9
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: 44cf08284567651420e4d64d58a7e1e8
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 4b8a6a9e53972c103f0eb844fed1ea99
guid: bdefd516a8438d7e7f7faa8df19d7bfb
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

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

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 88c2c4f8b42d569b8094feb74e6da2a1
guid: 0f652f89c49eb7aa92930e1f0b596900
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

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

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: 73905f6b06e6cb50adcc24a126ed8b65
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: 9445f040d635c13f13b3b643840b8407
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: 042f851fc2cd2b760f52c343668c5cc8
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: 59c0860588a7e28be51c6919dfaf854c
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 67ff1f029018f30663345cd163b89865
guid: 83e567848cb130003ef0cd51a0b5776e
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

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

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: c21e4f9445ab1354e004ee6806d36b1c
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: 39f79669acebffb769578e26a8e73021
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: c4e3d01e4d70fba53c1b8add5d1d79d6
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: 4fc2f3d647d1e059d7e9e98e8a71f61e
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -23,7 +23,7 @@
],
"plugins": {
"UnityPlugin": {
"version": "1.2.74",
"version": "1.2.79",
"provider": "wxe5a48f1ed5f544b7",
"contexts": [
{
@ -32,7 +32,7 @@
]
},
"Layout": {
"version": "1.0.7",
"version": "1.0.16",
"provider": "wx7a727ff7d940bb3f",
"contexts": [
{

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: e336f4b63e6dfc217c3b2a4de7b8811b
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: 8855516a171c4c3581c4a8964e30a88f
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: ebace106ae81525b2d597de54b319641
guid: 5948b7350d6f2d478e7ef36602fdb2b0
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: 961219c24017591be9f7387b32c99dda
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: 07d73230d68ed493bc77da4c718aaae4
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: 1512252be1263bff0bad2706fd57721b
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: 2d39d9cac5ca9352a3b707992185097e
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 9b7a4b7182bc265e1f19186313e10f47
guid: 64f903afe7940992a79fc094a1d99d70
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 0b8738d6b9bb9fd55482c734e21beb13
guid: b2ae0bf6e1f3bf096756f07df329ee97
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: 5b2baee358014e8ac3e76cf8b8a2efda
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
guid: db4fec9e0a330e91d98afb3338e7c2e3
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

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