mirror of
https://github.com/wechat-miniprogram/minigame-tuanjie-transform-sdk.git
synced 2025-11-13 11:45:55 +08:00
Auto-publish.
This commit is contained in:
parent
9090d7c510
commit
323450e40d
8
Editor/BuildProfile.meta
Normal file
8
Editor/BuildProfile.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: DytLvSj8UC9CKob0XUy9Y3usKDmX8US1YgxYmBxa1iAZ/I8JbM5wZwE=
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
Editor/BuildProfile/lib.meta
Normal file
8
Editor/BuildProfile/lib.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: XSwesi78AS28ymfR2HEhHpEBAC2DHupI1hIKP7HApjHRaZgGw+DTwWI=
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Editor/BuildProfile/lib/libwx-metal-cpp.bc
Normal file
BIN
Editor/BuildProfile/lib/libwx-metal-cpp.bc
Normal file
Binary file not shown.
7
Editor/BuildProfile/lib/libwx-metal-cpp.bc.meta
Normal file
7
Editor/BuildProfile/lib/libwx-metal-cpp.bc.meta
Normal file
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c113acfee35db6b5c61fd4a76596cfd3
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
43
Editor/BuildProfile/lib/mtl_library.jslib
Normal file
43
Editor/BuildProfile/lib/mtl_library.jslib
Normal 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();
|
||||
}
|
||||
});
|
||||
7
Editor/BuildProfile/lib/mtl_library.jslib.meta
Normal file
7
Editor/BuildProfile/lib/mtl_library.jslib.meta
Normal file
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: dda1926f3454e003333e8085a4f2c0fd
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -6,354 +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;
|
||||
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 + "/../");
|
||||
}
|
||||
|
||||
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();
|
||||
|
||||
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)))
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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();
|
||||
@ -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);
|
||||
@ -1194,7 +1255,8 @@ namespace WeChatWASM
|
||||
|
||||
public static void convertDataPackageJS()
|
||||
{
|
||||
if (!isPlayableBuild) {
|
||||
if (!isPlayableBuild)
|
||||
{
|
||||
checkNeedRmovePackageParallelPreload();
|
||||
}
|
||||
|
||||
@ -1650,7 +1712,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);
|
||||
@ -1904,7 +1967,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,
|
||||
@ -1956,7 +2019,8 @@ namespace WeChatWASM
|
||||
|
||||
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" };
|
||||
}
|
||||
|
||||
|
||||
@ -185,6 +185,7 @@ namespace WeChatWASM
|
||||
this.formCheckbox("profilingMemory", "Profiling Memory");
|
||||
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");
|
||||
@ -447,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);
|
||||
@ -525,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");
|
||||
|
||||
@ -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
|
||||
|
||||
@ -2,7 +2,7 @@ namespace WeChatWASM
|
||||
{
|
||||
public class WXPluginVersion
|
||||
{
|
||||
public static string pluginVersion = "202506230315"; // 这一行不要改他,导出的时候会自动替换
|
||||
public static string pluginVersion = "202507240352"; // 这一行不要改他,导出的时候会自动替换
|
||||
}
|
||||
|
||||
public class WXPluginConf
|
||||
|
||||
Binary file not shown.
@ -648,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多线程压缩
|
||||
|
||||
@ -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));
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@ -3109,6 +3109,100 @@
|
||||
是否结束
|
||||
</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.Gamepad.axes">
|
||||
<summary>
|
||||
一个表示控制器设备上存在的坐标轴的数组 (比如控制器摇杆)。
|
||||
@ -8575,12 +8669,12 @@
|
||||
取消监听视频播放到末尾事件
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:WeChatWASM.WXVideo.OnError(System.Action)">
|
||||
<member name="M:WeChatWASM.WXVideo.OnError(System.Action{WeChatWASM.WXVideoError})">
|
||||
<summary>
|
||||
监听视频错误事件
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:WeChatWASM.WXVideo.OffError(System.Action)">
|
||||
<member name="M:WeChatWASM.WXVideo.OffError(System.Action{WeChatWASM.WXVideoError})">
|
||||
<summary>
|
||||
取消监听视频错误事件,action 为空表示移除全部事件监听
|
||||
</summary>
|
||||
|
||||
Binary file not shown.
@ -3115,6 +3115,100 @@
|
||||
是否结束
|
||||
</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.Gamepad.axes">
|
||||
<summary>
|
||||
一个表示控制器设备上存在的坐标轴的数组 (比如控制器摇杆)。
|
||||
@ -8581,12 +8675,12 @@
|
||||
取消监听视频播放到末尾事件
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:WeChatWASM.WXVideo.OnError(System.Action)">
|
||||
<member name="M:WeChatWASM.WXVideo.OnError(System.Action{WeChatWASM.WXVideoError})">
|
||||
<summary>
|
||||
监听视频错误事件
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:WeChatWASM.WXVideo.OffError(System.Action)">
|
||||
<member name="M:WeChatWASM.WXVideo.OffError(System.Action{WeChatWASM.WXVideoError})">
|
||||
<summary>
|
||||
取消监听视频错误事件,action 为空表示移除全部事件监听
|
||||
</summary>
|
||||
|
||||
@ -1126,6 +1126,15 @@ namespace WeChatWASM
|
||||
{
|
||||
WXSDKManagerHandler.Instance.NotifyMiniProgramPlayableStatus(option);
|
||||
}
|
||||
#endregion
|
||||
#region 虚拟支付
|
||||
/// <summary>
|
||||
/// 请求虚拟支付
|
||||
/// </summary>
|
||||
public static void RequestVirtualPayment(RequestVirtualPaymentOption option)
|
||||
{
|
||||
WXSDKManagerHandler.Instance.RequestVirtualPayment(option);
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0b402e77a1e32407ab43026b35db3f2f
|
||||
guid: 86cc56dc16ace72f4d9aa3c96ccb2cb1
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0d4d8eae711f70671e8af2df78e40d5c
|
||||
guid: 86beefc22a745c091ddfa63ba4232188
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f47355397dc8d5859f5d8369d0cc6f13
|
||||
guid: 1ce01ccfffeca614c1199fb47081874c
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 39c0a0082c5fc9259282cbff0518e828
|
||||
guid: c7c56a35d0b466be65b8bf0b13374430
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 129c449558e1572d22d05e1eaccb4b4e
|
||||
guid: cb8b37a6bd788f03d91430aebfe5fabe
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 692360a9bbe08903fc19f158a57ba4e0
|
||||
guid: 856cf40cc8aa8c46f28bc5838f0d0ac2
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e91d3a975af852db45d4bc034e222abf
|
||||
guid: 58fefea9de5bbf73736ae93821a08390
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5d8df9369bc1089131cad15a424beb96
|
||||
guid: f3d482929b9086a8daf1fe47fec392ce
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ec20d4114628a10d08b582e39cc4c32b
|
||||
guid: 3b0a431952db89bb1796b492716cd141
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 795b78ca6116a9261ed082e57fa5dddd
|
||||
guid: 852c00d8327f8f6d665c00f7e57f41c0
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c81ff0b506de7764561e45bcd4fe984a
|
||||
guid: 2d9f82d22055dcf550525ff1a96c6346
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 406e27bc9eed040c0701005d7cc5a539
|
||||
guid: fa5e1f60a38487d2988c20593c7d8e06
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 919474b046ef9daf691b50a5ba4ed016
|
||||
guid: 6e214cba005a1bced63599364f365b8f
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 02f8a03a590c56ac22a9013f81947308
|
||||
guid: 9b953376d3f19edf1686eb8e258c5012
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7ed307f0fbac5f264a74607f162d64d2
|
||||
guid: 7452b4c8b3c442136c0e36de1aec7e63
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7b56155e9bd09de979130dd0a3932c51
|
||||
guid: 66b538606086917b67560a6311044707
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 76fbf977f56ee3685ab55b05cf7d1652
|
||||
guid: e89cbb04b1b52c30454cddaa37506438
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1ce61dd0242988ca3a1e57274ad89108
|
||||
guid: c1e95aa320cc063c108e228a753a4287
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1f32fd2b09829e8bb5880d858db1c726
|
||||
guid: 7c12e0e8568bcb86223f402d390f360b
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 88230c6986d48139d0aad929c531c57c
|
||||
guid: ccb9fb9f5709c7cf6313e3479daa1dfe
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d62619bb5c4437c80b99adb0e74e54ae
|
||||
guid: 1a279f80cd255a792e3d98f36aa07c6b
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 59967a594916e13ec1eafd7b1327812f
|
||||
guid: cb44277bbdb66d96140af30fd348d65f
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 360552244434d54355b95ae1eaefbe38
|
||||
guid: 829d7be669866433a75a11fe14d50fd2
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a62d4b63bb75a9eeee5605396e540b02
|
||||
guid: fc8ecfa955a9fa2102075fdc803897a9
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f527f6f82687765714a0fc9e23d4d056
|
||||
guid: 4856f42eae498a93e1d3d1c03e799282
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a98fcb4d4e3d8a9845f90a4ef426d726
|
||||
guid: 188e04d498ee21449f85b0df4054d908
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 26230df9d28c33a1e887f00d467fe0e5
|
||||
guid: f1f26b651e3548aafefb2b6f26ff4f3a
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9a88ee12602d3f2ba22f1ca96e2bdbb1
|
||||
guid: 67fee6b9fac9aa3990ee454dbcdf647c
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6ea931499f35dab85e803d2b4096e8fc
|
||||
guid: 7df623d0f1fbc924efb81d36cabced4c
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9b3217ee602811fc18af907517443b38
|
||||
guid: 8edba4cb6925bc712239050c3c74efa9
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c0f59b0590674b0751f05117caa59891
|
||||
guid: 2258b243bf834e811dbe079b559036c5
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1889e82bc569091b2b97c7a8639ab06a
|
||||
guid: 242264843d2217863095ef8be4390cd0
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6ec5f6a51ada5608131faac8c8dbae2e
|
||||
guid: 26c0bc2f66e769228a2a37fdb24f2c74
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 991b87812c69bae9654ea0e602cf5d17
|
||||
guid: 2283e83d2ad1253a981770bd11ae5bc0
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a8c70eace40359290bc332a8bac1367d
|
||||
guid: 45867668e9336da658a53574613cfad3
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: aafcb03f44e948136d0a4d1f7f9ff8bd
|
||||
guid: 6ddcf429379d3c0412bda0885cf89345
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1db8d7c90690f5f090d138da313af789
|
||||
guid: 109d45fc7fd4be7113eef7cdfe29e23a
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 20ec07504fb82ea4898cfe65595929fc
|
||||
guid: 952896a73d84ab95645f529a8d1ecc15
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0c5cf13c775753db345267d47289153b
|
||||
guid: 26f35d03874d05d9baf4c03d1a0acdae
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 71976a68819a23958b538948709a053c
|
||||
guid: 087e9b81aa26d1343ecf0f8a62e442c0
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: aefb9b8071495ba38389dd1e5553ed32
|
||||
guid: e53e0023183229aaf1e926e7fd62d2df
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 762d8d5fabf8836673d14fe22672e80f
|
||||
guid: d3718529b4ad9c38a6012d22cfeeaeaf
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3e6a31188b1fe265a645102ca6288e8d
|
||||
guid: fde5064c0b8d8811b93ffdd893cf8b45
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: addf75d548edb49aa853d3ea87f9798d
|
||||
guid: e118f4c01aa409ba70ef7a0621e37f8b
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -65,8 +65,8 @@ const isMobileBrotliInvalid = isMobile && !compareVersion(SDKVersion, '2.21.1');
|
||||
const isBrotliInvalid = $COMPRESS_DATA_PACKAGE && (isPcBrotliInvalid || isMobileBrotliInvalid);
|
||||
// iOS系统版本>=17.5时,小游戏退后台会导致异常
|
||||
export const isIOS175 = compareVersion(systemVersion, '17.5') && isH5Renderer;
|
||||
// 是否支持开放数据域渲染模式,使用ScreenCanvas模式可以优化ToTempFilePath的使用
|
||||
export const isSupportSharedCanvasMode = compareVersion(SDKVersion, '3.6.6');
|
||||
// 是否支持开放数据域渲染模式,使用ScreenCanvas模式可以优化ToTempFilePath的使用,PC 上 ScreenCanvas 模式事件处理有问题,PC 先禁止这个模式
|
||||
export const isSupportSharedCanvasMode = compareVersion(SDKVersion, '3.6.6') && !isPc;
|
||||
// 是否能以iOS高性能模式运行
|
||||
// 请勿修改GameGlobal.canUseH5Renderer赋值!!!
|
||||
GameGlobal.canUseH5Renderer = isH5Renderer && isH5LibVersionValid;
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3a1bd0d5f326844f1ada0c5f6f6406b0
|
||||
guid: f642169ad16c10208ac09559a7b8c868
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9b5c4016c4514024fb7a594c9f3539e9
|
||||
guid: fbe47c4652d7f1125f6d6837dfc243c7
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: abe3b3fa43b72f04d14694b2513d1882
|
||||
guid: 168456a36e428f227aedddaeb8514bc7
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b47fd73222b10c64353a408656895728
|
||||
guid: 09e04be65ddc9f059f2f524d54e5c025
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 91a22a1323c3d28f7f5cb135a0946a19
|
||||
guid: b17484b7b91a60d3d3690f727ad1d273
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d7fc8c4ae43042abb298c7c25ddfa63e
|
||||
guid: 67c93ad77b482c5b8147aa93bc6d1407
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3d79f33bef21c0bb9c0b9bde81456999
|
||||
guid: 08ae9d03dc43a2f0ffd41c68e732a002
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ed0904ba00324c015b996a9683a01963
|
||||
guid: 8a23f72c0a01a3dd47bfc0275716e287
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 504b736e668772651a67c2ea377a925f
|
||||
guid: 2a7f956b89588664b1043083cbc797e2
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c98fcfacef696dad78264c3c6c97f1f2
|
||||
guid: 5505006745cb60148181fb39edcf60a5
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 58d6de98b381654340f95b2191afc4eb
|
||||
guid: 9a84adbaa7a9dc2e5bc593352f81c2e8
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a69dcfe5dfaf3a8fdfd04d87e88654c1
|
||||
guid: e473cff1afbf2585721425e248d84353
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5a0a03135021596136e9a5aa342c7eb4
|
||||
guid: 082138fade4dd01a450366d721aa90a9
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 230d16020e58bc34736d233567700249
|
||||
guid: fd7a26c8143e2f54165b90a647e75452
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8608ee4dd726bb10d1d8f0531ca475eb
|
||||
guid: 1d9410f32b08708340a684f5313c8694
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8112429034873a386c1a4c3218a4c3f3
|
||||
guid: 2b746771ad8fac0e2d4129cd6ef3ae0f
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e8bacb303e8af9fdf406eafd4e35cd77
|
||||
guid: 5edb4a8c9de7c8036c250bc704c03a4c
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8f620115fdfbc88084837d9bf9046317
|
||||
guid: 739b80f498602fc31fb82cfb81b71a8d
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ef8802c445b97092844698b5b0bebe79
|
||||
guid: 2f92c32e92e2202d965e82343d7c9a6a
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b9667dbf1c08396c0b52f5541eaf1d10
|
||||
guid: df3d29ec19a8030ef936cdde6f59f642
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 05b37b4d47a3ea78902777fc8d421acb
|
||||
guid: d2c30a36853d7c5994d2023db7de1c8c
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 236b28bfd47cff2bb463223be3747d17
|
||||
guid: 61e519032e0214eac608a25da79ff48d
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 27c8b8dd9a99e24d78520f27a92545d6
|
||||
guid: 785fd7abea772e05f5989a988a16044e
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 63311f1eb758cbc639e55fb36a7ac79b
|
||||
guid: 42faf4213e4210e775fbe95fa0789940
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 00f41691cb4cc5c09ba38b3d9a563bf2
|
||||
guid: ca5d4b61ca4cef7fab289e223ae214be
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 19ebec93a0396166ee52308b80ec37aa
|
||||
guid: 23f791fecd06a1ec03da290325e840e2
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0a81dd9e3f7dc05eea7425ee1e694c22
|
||||
guid: f8652f17cf39119df0b5e3ee3bf5249c
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 492aaedd32d949adc6ed91920c7aefb3
|
||||
guid: d0f70684bcdeab09fea9774ed271d169
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6db14c268abc77b96ce30e715f822e26
|
||||
guid: 559b09520775f20fcd7e417ffbbfb522
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b67050c0357d9782c24f252105360153
|
||||
guid: 4dfad702be6da835fcb76786abd23234
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b3654990a42299dbf2080234c707706d
|
||||
guid: e97ccd158f5a590cb5f3c8ecf93595d4
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 44978f8f5badd7425408f11b8f3bcbf4
|
||||
guid: d9b587492c3079aedee085a9df7171e4
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1a91da4b56e73573d8ff0f4b071cf655
|
||||
guid: 1e0408e9a1485f5f34375f80bb4b9fca
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user