Auto-publish.

This commit is contained in:
loancoldli 2026-04-07 19:37:16 +08:00
parent f67e7851c3
commit 3691f52e2f
184 changed files with 902 additions and 1549 deletions

View File

@ -6,32 +6,6 @@ Removed - 删除功能/接口
Fixed - 修复问题
Others - 其他
-->
## 2026-3-15 v0.1.32 【普通更新】
### Feature
* 普通:更新基础库版本
* 普通擂台赛api新增subScoreKey参数
* 普通支持gameeventreport试玩
* 普通添加WX数据保护插件支持游戏数据加密存储和篡改检测
### Fixed
* 普通:修复订阅消息报错问题
## 2026-1-13 v0.1.31 【普通更新】
### Fixed
* 普通修复glx模式下 createVideo underGameView为true 黑屏的问题
* 普通修复build profile在团结1.6之后的导出问题
## 2025-11-6 v0.1.30 【重要更新】
### Feature
* 重要EmscriptenGLX支持微信压缩纹理
* 普通EmscriptenGLX支持Android glReadpixels
* 普通EmscriptenGLX优化Android CPU与功耗
* 普通Metal高帧率下功耗优化
* 普通团结引擎buildprofile支持
### Fixed
* 重要Metal编码库batch size修复
* 普通PageManager相关问题修复
* 普通iOS18的微信字体修复
## 2025-9-8 v0.1.29 【重要更新】
### Feature
* 普通本地缓存存在时UnityWebRequest支持同步方式(APIwx.SetSyncReadCacheEnabled)以加快读取速度

File diff suppressed because it is too large Load Diff

View File

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

Binary file not shown.

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 7330c57dbe403f6a6825fe311f4436ca
guid: fa0cf28c42641e1b1908525909a5e545
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,7 +1,7 @@
var WXAssetBundleLibrary = {
$WXFS: {},
WXFSInit: function (ttl, capacity) {
WXFSInit: function (ttl, capacity, prefetchSize, fdCacheCount) {
function _instanceof(left, right) { if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) { return !!right[Symbol.hasInstance](left); } else { return left instanceof right; } }
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
function _classCallCheck(instance, Constructor) { if (!_instanceof(instance, Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
@ -104,7 +104,7 @@ var WXAssetBundleLibrary = {
this.hash.set(key, temp);
return temp.ab;
}
return -1;
return null;
}
}, {
key: "put",
@ -122,14 +122,12 @@ var WXAssetBundleLibrary = {
this.hash.delete(key);
this.hash.set(key, value);
} else {
if (this.capacity !== undefined && this.size >= this.capacity) {
while (this.capacity !== undefined && this.size >= this.capacity) {
var idx = this.hash.keys().next().value;
this.size -= idx.ab.byteLength;
this.size -= this.hash.get(idx).ab.byteLength;
this.hash.delete(idx);
this.hash.set(key, value);
} else {
this.hash.set(key, value);
}
this.hash.set(key, value);
}
this.size += value.ab.byteLength;
this.maxSize = Math.max(this.size, this.maxSize);
@ -187,6 +185,39 @@ var WXAssetBundleLibrary = {
}();
WXFS.cache = new WXFileCache(ttl, capacity);
WXFS.prefetchSize = prefetchSize || 1024; // iOS prefetch bytes, default 1024
// Per-frame perf counters
WXFS.perfReadCount = 0; // WXFS.read call count per frame
WXFS.perfCacheMissCount = 0; // LoadPartialFromFile / LoadBundleFromFile count per frame
WXFS.perfFdCacheMissCount = 0; // fd cache miss (close old + open new) count per frame
WXFS.perfOpenSyncCount = 0; // fs.openSync call count per frame
WXFS.perfStatSyncCount = 0; // fs.statSync call count per frame
WXFS.perfReadSyncCount = 0; // fs.readSync call count per frame
// LRU cache for wx file descriptors, max 10, default 1
WXFS.fdCacheCount = Math.min(fdCacheCount || 1, 10);
WXFS.wxFdCache = new Map(); // path -> wxFd
WXFS.getWxFd = function(path) {
var wxFd = WXFS.wxFdCache.get(path);
if (wxFd !== undefined) {
// Move to end (most recently used)
WXFS.wxFdCache.delete(path);
WXFS.wxFdCache.set(path, wxFd);
return wxFd;
}
// Evict oldest if at capacity
if (WXFS.wxFdCache.size >= WXFS.fdCacheCount) {
var oldestPath = WXFS.wxFdCache.keys().next().value;
var oldestFd = WXFS.wxFdCache.get(oldestPath);
WXFS.fs.closeSync({ fd: oldestFd });
WXFS.wxFdCache.delete(oldestPath);
WXFS.perfFdCacheMissCount++;
}
// Open new fd and cache
wxFd = WXFS.fs.openSync({ filePath: path, flag: 'r' });
WXFS.perfOpenSyncCount++;
WXFS.wxFdCache.set(path, wxFd);
return wxFd;
};
if(unityNamespace.isIOS && unityNamespace.isH5Renderer) {
WXFS.cache.RegularCleaning(1);
}
@ -195,9 +226,10 @@ var WXAssetBundleLibrary = {
try {
var fd = WXFS.path2fd.get(path)
if (fd !== undefined){
var wxStream = WXFS.fd2wxStream.get(fd);
var stat = {
mode: 33206,
size: WXFS.cache.get(fd).byteLength,
size: wxStream.node.usedBytes,
dev: 1,
ino: 1,
nlink: 1,
@ -213,7 +245,7 @@ var WXAssetBundleLibrary = {
return stat;
}
var stat = WXFS.fs.statSync(path);
// something not in wx.FileSystemManager, just fill in 0/1
WXFS.perfStatSyncCount++;
stat.dev = 1;
stat.ino = 1;
stat.nlink = 1;
@ -278,17 +310,75 @@ var WXAssetBundleLibrary = {
}
return res;
};
WXFS.read = function(stream, buffer, offset, length, position){
var contents = WXFS.cache.get(stream.fd);
if (contents === -1) {
var res = WXFS.LoadBundleFromFile(stream.path);
WXFS.cache.put(stream.fd, res);
contents = res;
// iOS: read partial file content on demand
WXFS.LoadPartialFromFile = function(path, position, length) {
var wxFd = WXFS.getWxFd(path);
var ab = new ArrayBuffer(length);
var res = WXFS.fs.readSync({ fd: wxFd, arrayBuffer: ab, offset: 0, length: length, position: position });
WXFS.perfReadSyncCount++;
return { ab: ab, bytesRead: res.bytesRead };
};
// Open file, construct wxStream and store in related maps
WXFS.open = function(pathname) {
var numberfd = WXFS.path2fd.get(pathname);
if (numberfd !== undefined) {
return numberfd;
}
numberfd = WXFS.newfd();
var fileSize;
if (unityNamespace.isIOS && WXFS.prefetchSize > 0) {
// iOS: only get file size via statSync, do not read file content
fileSize = WXFS.fs.statSync(pathname).size;
WXFS.perfStatSyncCount++;
} else {
// Non-iOS: read file and cache
var res = WXFS.LoadBundleFromFile(pathname);
fileSize = new Uint8Array(res).length;
WXFS.cache.put(numberfd, res);
}
var wxStream = {
fd: numberfd,
path: pathname,
seekable: true,
position: 0,
stream_ops: MEMFS.stream_ops,
ungotten: [],
node: { mode: 32768, usedBytes: fileSize },
error: false
};
wxStream.stream_ops.read = WXFS.read;
WXFS.path2fd.set(pathname, numberfd);
WXFS.fd2wxStream.set(numberfd, wxStream);
return numberfd;
};
WXFS.read = function(stream, buffer, offset, length, position){
if (position >= stream.node.usedBytes) return 0;
var size = Math.min(stream.node.usedBytes - position, length);
assert(size >= 0);
buffer.set(new Uint8Array(contents.slice(position, position + size)), offset);
WXFS.perfReadCount++;
// Check cache first
var contents = WXFS.cache.get(stream.fd);
if (contents && position + size <= contents.byteLength) {
buffer.set(new Uint8Array(contents, position, size), offset);
return size;
}
WXFS.perfCacheMissCount++;
// iOS: read on demand
if (unityNamespace.isIOS && WXFS.prefetchSize > 0) {
var readLen = position === 0 ? Math.max(size, Math.min(WXFS.prefetchSize, stream.node.usedBytes)) : size;
var res = WXFS.LoadPartialFromFile(stream.path, position, readLen);
if (position === 0) {
WXFS.cache.put(stream.fd, res.ab, true);
}
buffer.set(new Uint8Array(res.ab, 0, size), offset);
return size;
}
// Non-iOS: load full file
if (!contents) {
contents = WXFS.LoadBundleFromFile(stream.path);
WXFS.cache.put(stream.fd, contents);
}
buffer.set(new Uint8Array(contents, position, size), offset);
return size;
};
},
@ -439,6 +529,34 @@ var WXAssetBundleLibrary = {
},
WXGetBundleSizeOnDisk: function () {
return WXFS&&WXFS.disk&&WXFS.disk.size;
},
WXGetReadCount: function () {
return WXFS ? WXFS.perfReadCount : 0;
},
WXGetCacheMissCount: function () {
return WXFS ? WXFS.perfCacheMissCount : 0;
},
WXGetFdCacheMissCount: function () {
return WXFS ? WXFS.perfFdCacheMissCount : 0;
},
WXGetOpenSyncCount: function () {
return WXFS ? WXFS.perfOpenSyncCount : 0;
},
WXGetStatSyncCount: function () {
return WXFS ? WXFS.perfStatSyncCount : 0;
},
WXGetReadSyncCount: function () {
return WXFS ? WXFS.perfReadSyncCount : 0;
},
WXResetPerfCounters: function () {
if (WXFS) {
WXFS.perfReadCount = 0;
WXFS.perfCacheMissCount = 0;
WXFS.perfFdCacheMissCount = 0;
WXFS.perfOpenSyncCount = 0;
WXFS.perfStatSyncCount = 0;
WXFS.perfReadSyncCount = 0;
}
}
};

View File

@ -48,6 +48,12 @@ mergeInto(LibraryManager.library, {
numberOnDisk: _WXGetBundleNumberOnDisk(),
sizeInMemory: _WXGetBundleSizeInMemory(),
sizeOnDisk: _WXGetBundleSizeOnDisk(),
readCount: _WXGetReadCount(),
cacheMissCount: _WXGetCacheMissCount(),
fdCacheMissCount: _WXGetFdCacheMissCount(),
openSyncCount: _WXGetOpenSyncCount(),
statSyncCount: _WXGetStatSyncCount(),
readSyncCount: _WXGetReadSyncCount(),
}
}

Binary file not shown.

View File

@ -3486,11 +3486,6 @@
允许微信读写日历的开关
</summary>
</member>
<member name="F:WeChatWASM.AppBaseInfo.PCKernelVersion">
<summary>
PC 内核版本号,仅在 PC 端存在该值
</summary>
</member>
<member name="F:WeChatWASM.AppBaseInfo.SDKVersion">
<summary>
客户端基础库版本
@ -3754,86 +3749,11 @@
宽度单位px
</summary>
</member>
<member name="F:WeChatWASM.OfficialComponentsInfo.challengeRewardsComponentInfo">
<summary>
擂台赛组件领奖信息
</summary>
</member>
<member name="F:WeChatWASM.OfficialComponentsInfo.notificationComponentInfo">
<summary>
通知组件信息
</summary>
</member>
<member name="F:WeChatWASM.OfficialComponentsInfo.rewardsComponentInfo">
<summary>
福利组件信息
</summary>
</member>
<member name="F:WeChatWASM.ChallengeRewardsComponentInfo.name">
<summary>
组件的名称
</summary>
</member>
<member name="F:WeChatWASM.ChallengeRewardsComponentInfo.receiveDetail">
<summary>
领取事件详情只在onOfficialComponentsInfoChange回调中返回
</summary>
</member>
<member name="F:WeChatWASM.ChallengeReceiveDetail.awardResult">
<summary>
奖励领取结果1-全部成功, 2-部分成功(礼物达到领取上限), 3-领奖失败
</summary>
</member>
<member name="F:WeChatWASM.ChallengeReceiveDetail.receivedRareReward">
<summary>
是否收到了稀有奖励
</summary>
</member>
<member name="F:WeChatWASM.ChallengeReceiveDetail.userSourceList">
<summary>
用户领取的奖励列表
</summary>
</member>
<member name="F:WeChatWASM.UserSource.sourceType">
<summary>
奖励类型0-道具礼包, 1-微信蓝包, 2-h5商家券, 3-现金红包, 4-小程序券, 5-盲盒
</summary>
</member>
<member name="F:WeChatWASM.UserSource.source">
<summary>
奖励来源信息
</summary>
</member>
<member name="F:WeChatWASM.UserSource.sourceNum">
<summary>
获取的奖励数量
</summary>
</member>
<member name="F:WeChatWASM.SourceInfo.propList">
<summary>
道具列表
</summary>
</member>
<member name="F:WeChatWASM.SourceInfo.type">
<summary>
奖励类型1-普通奖励, 2-稀有奖励
</summary>
</member>
<member name="F:WeChatWASM.SourceInfo.sourceName">
<summary>
礼包名称
</summary>
</member>
<member name="F:WeChatWASM.PropInfo.propName">
<summary>
道具名称
</summary>
</member>
<member name="F:WeChatWASM.PropInfo.propNum">
<summary>
道具数量
</summary>
</member>
<member name="F:WeChatWASM.OfficialComponentInfo.boundingClientRect">
<summary>
组件的布局位置信息
@ -3849,46 +3769,6 @@
组件的名称
</summary>
</member>
<member name="F:WeChatWASM.RewardsComponentInfo.canReceiveFriendGiftCount">
<summary>
可领取的好友礼包数量
</summary>
</member>
<member name="F:WeChatWASM.RewardsComponentInfo.canReceiveGiftCount">
<summary>
可领取的礼包数量
</summary>
</member>
<member name="F:WeChatWASM.RewardsComponentInfo.name">
<summary>
组件的名称
</summary>
</member>
<member name="F:WeChatWASM.RewardsComponentInfo.receiveDetail">
<summary>
领取事件详情只在onOfficialComponentsInfoChange回调中返回
</summary>
</member>
<member name="F:WeChatWASM.ReceiveDetail.desc">
<summary>
礼包描述,只有 gift 类型才有
</summary>
</member>
<member name="F:WeChatWASM.ReceiveDetail.icon">
<summary>
礼包图标,只有 gift 类型才有
</summary>
</member>
<member name="F:WeChatWASM.ReceiveDetail.name">
<summary>
礼包名称,只有 gift 类型才有
</summary>
</member>
<member name="F:WeChatWASM.ReceiveDetail.type">
<summary>
gift: 礼包, friendGift: 好友礼包
</summary>
</member>
<member name="F:WeChatWASM.GetStorageInfoSyncOption.currentSize">
<summary>
当前占用的空间大小, 单位 KB
@ -4691,36 +4571,6 @@
是否被添加至 「我的小程序」
</summary>
</member>
<member name="F:WeChatWASM.CheckIsSupportMidasPaymentFailCallbackErr.errMsg">
<summary>
错误信息
</summary>
</member>
<member name="F:WeChatWASM.CheckIsSupportMidasPaymentSuccessCallbackResult.data">
<summary>
支付支持信息对象
</summary>
</member>
<member name="F:WeChatWASM.CheckIsSupportMidasPaymentSuccessCallbackResult.errMsg">
<summary>
调用结果信息,格式为 "checkIsSupportMidasPayment:ok"
</summary>
</member>
<member name="F:WeChatWASM.CheckIsSupportMidasPaymentSuccessCallbackDataResult.allow_pay">
<summary>
是否支持支付true 表示支持false 表示不支持
</summary>
</member>
<member name="F:WeChatWASM.CheckIsSupportMidasPaymentSuccessCallbackDataResult.err_code">
<summary>
错误码0 表示成功
</summary>
</member>
<member name="F:WeChatWASM.CheckIsSupportMidasPaymentSuccessCallbackDataResult.err_msg">
<summary>
错误信息,"success" 表示成功
</summary>
</member>
<member name="F:WeChatWASM.ChooseImageOption.count">
<summary>
最多可以选择的图片张数
@ -6868,11 +6718,6 @@
用短链打开小程序时当前页面携带的查询字符串。小程序中使用时,应在进入页面时调用 `wx.onCopyUrl` 自定义 `query`,退出页面时调用 `wx.offCopyUrl`,防止影响其它页面。
</summary>
</member>
<member name="F:WeChatWASM.OnCopyUrlListenerResult.title">
<summary>
短链中的自定义标题,显示在小程序名称之后,可以不填
</summary>
</member>
<member name="F:WeChatWASM.OnDeviceMotionChangeListenerResult.alpha">
<summary>
当 手机坐标 X/Y 和 地球 X/Y 重合时,绕着 Z 轴转动的夹角为 alpha范围值为 [0, 2*PI)。逆时针转动为正。
@ -7635,7 +7480,7 @@
| 2002004 | 人脸识别失败 | |
| 2002006 | 用户取消/超时/不同意,导致未完成人脸识别 | |
| 2002007 | 本用户7天内人脸识别已通过通过日期为XX | |
| 2002008 | 本日已调起过人脸识别或者本月调用次数已达上限 | |
| 2002008 | 本日已调起过人脸识别 | or本月调用次数已达上限 |
| 2002009 | 无权限发起人脸识别 | |
</summary>
</member>
@ -7648,31 +7493,10 @@
| 2002004 | 人脸识别失败 | |
| 2002006 | 用户取消/超时/不同意,导致未完成人脸识别 | |
| 2002007 | 本用户7天内人脸识别已通过通过日期为XX | |
| 2002008 | 本日已调起过人脸识别或者本月调用次数已达上限 | |
| 2002008 | 本日已调起过人脸识别 | or本月调用次数已达上限 |
| 2002009 | 无权限发起人脸识别 | |
</summary>
</member>
<member name="F:WeChatWASM.RequestFacialVerifyOption.verifyId">
<summary>
人脸核身会话唯一标识(小程序后台根据「用户实名信息(姓名+身份证)」调用微信后台[getVerifyId](https://developers.weixin.qq.com/miniprogram/dev/server/API/face/api_getverifyid.html)接口获取)
</summary>
</member>
<member name="F:WeChatWASM.RequestFacialVerifyError.errMsg">
<summary>
错误信息
| 错误码 | 错误信息 | 说明 |
| - | - | - |
| 0 | 人脸识别完成(需要通过[queryVerifyInfo](https://developers.weixin.qq.com/miniprogram/dev/server/API/face/api_queryverifyinfo.html)接口查询人脸核身真实验证结果) | |
</summary>
</member>
<member name="F:WeChatWASM.RequestFacialVerifyError.errCode">
<summary>
错误码
| 错误码 | 错误信息 | 说明 |
| - | - | - |
| 0 | 人脸识别完成(需要通过[queryVerifyInfo](https://developers.weixin.qq.com/miniprogram/dev/server/API/face/api_queryverifyinfo.html)接口查询人脸核身真实验证结果) | |
</summary>
</member>
<member name="F:WeChatWASM.RequestMidasFriendPaymentOption.buyQuantity">
<summary>
购买数量。mode=game 时必填。购买数量。详见 [buyQuantity 限制说明](#buyQuantity限制说明)。

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 59f30477a8bb77aeb6d56b69f0799388
guid: 278cbcb16b55256aead61177fefb8b90
DefaultImporter:
externalObjects: {}
userData:

Binary file not shown.

View File

@ -3486,11 +3486,6 @@
允许微信读写日历的开关
</summary>
</member>
<member name="F:WeChatWASM.AppBaseInfo.PCKernelVersion">
<summary>
PC 内核版本号,仅在 PC 端存在该值
</summary>
</member>
<member name="F:WeChatWASM.AppBaseInfo.SDKVersion">
<summary>
客户端基础库版本
@ -3754,86 +3749,11 @@
宽度单位px
</summary>
</member>
<member name="F:WeChatWASM.OfficialComponentsInfo.challengeRewardsComponentInfo">
<summary>
擂台赛组件领奖信息
</summary>
</member>
<member name="F:WeChatWASM.OfficialComponentsInfo.notificationComponentInfo">
<summary>
通知组件信息
</summary>
</member>
<member name="F:WeChatWASM.OfficialComponentsInfo.rewardsComponentInfo">
<summary>
福利组件信息
</summary>
</member>
<member name="F:WeChatWASM.ChallengeRewardsComponentInfo.name">
<summary>
组件的名称
</summary>
</member>
<member name="F:WeChatWASM.ChallengeRewardsComponentInfo.receiveDetail">
<summary>
领取事件详情只在onOfficialComponentsInfoChange回调中返回
</summary>
</member>
<member name="F:WeChatWASM.ChallengeReceiveDetail.awardResult">
<summary>
奖励领取结果1-全部成功, 2-部分成功(礼物达到领取上限), 3-领奖失败
</summary>
</member>
<member name="F:WeChatWASM.ChallengeReceiveDetail.receivedRareReward">
<summary>
是否收到了稀有奖励
</summary>
</member>
<member name="F:WeChatWASM.ChallengeReceiveDetail.userSourceList">
<summary>
用户领取的奖励列表
</summary>
</member>
<member name="F:WeChatWASM.UserSource.sourceType">
<summary>
奖励类型0-道具礼包, 1-微信蓝包, 2-h5商家券, 3-现金红包, 4-小程序券, 5-盲盒
</summary>
</member>
<member name="F:WeChatWASM.UserSource.source">
<summary>
奖励来源信息
</summary>
</member>
<member name="F:WeChatWASM.UserSource.sourceNum">
<summary>
获取的奖励数量
</summary>
</member>
<member name="F:WeChatWASM.SourceInfo.propList">
<summary>
道具列表
</summary>
</member>
<member name="F:WeChatWASM.SourceInfo.type">
<summary>
奖励类型1-普通奖励, 2-稀有奖励
</summary>
</member>
<member name="F:WeChatWASM.SourceInfo.sourceName">
<summary>
礼包名称
</summary>
</member>
<member name="F:WeChatWASM.PropInfo.propName">
<summary>
道具名称
</summary>
</member>
<member name="F:WeChatWASM.PropInfo.propNum">
<summary>
道具数量
</summary>
</member>
<member name="F:WeChatWASM.OfficialComponentInfo.boundingClientRect">
<summary>
组件的布局位置信息
@ -3849,46 +3769,6 @@
组件的名称
</summary>
</member>
<member name="F:WeChatWASM.RewardsComponentInfo.canReceiveFriendGiftCount">
<summary>
可领取的好友礼包数量
</summary>
</member>
<member name="F:WeChatWASM.RewardsComponentInfo.canReceiveGiftCount">
<summary>
可领取的礼包数量
</summary>
</member>
<member name="F:WeChatWASM.RewardsComponentInfo.name">
<summary>
组件的名称
</summary>
</member>
<member name="F:WeChatWASM.RewardsComponentInfo.receiveDetail">
<summary>
领取事件详情只在onOfficialComponentsInfoChange回调中返回
</summary>
</member>
<member name="F:WeChatWASM.ReceiveDetail.desc">
<summary>
礼包描述,只有 gift 类型才有
</summary>
</member>
<member name="F:WeChatWASM.ReceiveDetail.icon">
<summary>
礼包图标,只有 gift 类型才有
</summary>
</member>
<member name="F:WeChatWASM.ReceiveDetail.name">
<summary>
礼包名称,只有 gift 类型才有
</summary>
</member>
<member name="F:WeChatWASM.ReceiveDetail.type">
<summary>
gift: 礼包, friendGift: 好友礼包
</summary>
</member>
<member name="F:WeChatWASM.GetStorageInfoSyncOption.currentSize">
<summary>
当前占用的空间大小, 单位 KB
@ -4691,36 +4571,6 @@
是否被添加至 「我的小程序」
</summary>
</member>
<member name="F:WeChatWASM.CheckIsSupportMidasPaymentFailCallbackErr.errMsg">
<summary>
错误信息
</summary>
</member>
<member name="F:WeChatWASM.CheckIsSupportMidasPaymentSuccessCallbackResult.data">
<summary>
支付支持信息对象
</summary>
</member>
<member name="F:WeChatWASM.CheckIsSupportMidasPaymentSuccessCallbackResult.errMsg">
<summary>
调用结果信息,格式为 "checkIsSupportMidasPayment:ok"
</summary>
</member>
<member name="F:WeChatWASM.CheckIsSupportMidasPaymentSuccessCallbackDataResult.allow_pay">
<summary>
是否支持支付true 表示支持false 表示不支持
</summary>
</member>
<member name="F:WeChatWASM.CheckIsSupportMidasPaymentSuccessCallbackDataResult.err_code">
<summary>
错误码0 表示成功
</summary>
</member>
<member name="F:WeChatWASM.CheckIsSupportMidasPaymentSuccessCallbackDataResult.err_msg">
<summary>
错误信息,"success" 表示成功
</summary>
</member>
<member name="F:WeChatWASM.ChooseImageOption.count">
<summary>
最多可以选择的图片张数
@ -6868,11 +6718,6 @@
用短链打开小程序时当前页面携带的查询字符串。小程序中使用时,应在进入页面时调用 `wx.onCopyUrl` 自定义 `query`,退出页面时调用 `wx.offCopyUrl`,防止影响其它页面。
</summary>
</member>
<member name="F:WeChatWASM.OnCopyUrlListenerResult.title">
<summary>
短链中的自定义标题,显示在小程序名称之后,可以不填
</summary>
</member>
<member name="F:WeChatWASM.OnDeviceMotionChangeListenerResult.alpha">
<summary>
当 手机坐标 X/Y 和 地球 X/Y 重合时,绕着 Z 轴转动的夹角为 alpha范围值为 [0, 2*PI)。逆时针转动为正。
@ -7635,7 +7480,7 @@
| 2002004 | 人脸识别失败 | |
| 2002006 | 用户取消/超时/不同意,导致未完成人脸识别 | |
| 2002007 | 本用户7天内人脸识别已通过通过日期为XX | |
| 2002008 | 本日已调起过人脸识别或者本月调用次数已达上限 | |
| 2002008 | 本日已调起过人脸识别 | or本月调用次数已达上限 |
| 2002009 | 无权限发起人脸识别 | |
</summary>
</member>
@ -7648,31 +7493,10 @@
| 2002004 | 人脸识别失败 | |
| 2002006 | 用户取消/超时/不同意,导致未完成人脸识别 | |
| 2002007 | 本用户7天内人脸识别已通过通过日期为XX | |
| 2002008 | 本日已调起过人脸识别或者本月调用次数已达上限 | |
| 2002008 | 本日已调起过人脸识别 | or本月调用次数已达上限 |
| 2002009 | 无权限发起人脸识别 | |
</summary>
</member>
<member name="F:WeChatWASM.RequestFacialVerifyOption.verifyId">
<summary>
人脸核身会话唯一标识(小程序后台根据「用户实名信息(姓名+身份证)」调用微信后台[getVerifyId](https://developers.weixin.qq.com/miniprogram/dev/server/API/face/api_getverifyid.html)接口获取)
</summary>
</member>
<member name="F:WeChatWASM.RequestFacialVerifyError.errMsg">
<summary>
错误信息
| 错误码 | 错误信息 | 说明 |
| - | - | - |
| 0 | 人脸识别完成(需要通过[queryVerifyInfo](https://developers.weixin.qq.com/miniprogram/dev/server/API/face/api_queryverifyinfo.html)接口查询人脸核身真实验证结果) | |
</summary>
</member>
<member name="F:WeChatWASM.RequestFacialVerifyError.errCode">
<summary>
错误码
| 错误码 | 错误信息 | 说明 |
| - | - | - |
| 0 | 人脸识别完成(需要通过[queryVerifyInfo](https://developers.weixin.qq.com/miniprogram/dev/server/API/face/api_queryverifyinfo.html)接口查询人脸核身真实验证结果) | |
</summary>
</member>
<member name="F:WeChatWASM.RequestMidasFriendPaymentOption.buyQuantity">
<summary>
购买数量。mode=game 时必填。购买数量。详见 [buyQuantity 限制说明](#buyQuantity限制说明)。

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 33778f932d74b9c0309d7573c86c9e5b
guid: 03b7951cb7213f781bd9a1a9f9574629
DefaultImporter:
externalObjects: {}
userData:

View File

@ -107,69 +107,6 @@ namespace WeChatWASM
WXSDKManagerHandler.Instance.CheckIsAddedToMyMiniProgram(callback);
}
/// <summary>
/// [wx.checkIsSupportFacialRecognition(Object object)](https://developers.weixin.qq.com/minigame/dev/api/open-api/face/wx.checkIsSupportFacialRecognition.html)
/// 需要基础库: `3.8.12`
/// 检查当前设备是否支持人脸识别能力
/// **示例代码**
/// ```js
/// wx.checkIsSupportFacialRecognition({
/// success() {
/// // 支持人脸识别
/// },
/// fail() {
/// // 不支持人脸识别
/// },
/// })
/// ```
/// </summary>
public static void CheckIsSupportFacialRecognition(CheckIsSupportFacialRecognitionOption callback)
{
WXSDKManagerHandler.Instance.CheckIsSupportFacialRecognition(callback);
}
/// <summary>
/// [wx.checkIsSupportMidasPayment(Object object)](https://developers.weixin.qq.com/minigame/dev/api/midas-payment/wx.checkIsSupportMidasPayment.html)
/// 需要基础库: `3.10.3`
/// 检查当前环境是否支持虚拟支付。使用前请注意阅读[相关说明](https://developers.weixin.qq.com/minigame/dev/guide/open-ability/virtual-payment/virtual-payment2.html)。
/// **平台支持说明**
/// - Android、Windows、OHOS 平台:默认支持虚拟支付,接口直接返回支持
/// - iOS 平台:需满足以下环境要求才可能支持虚拟支付
/// - 操作系统要求:使用 iPhone 或者 iPadiOS 15 及以上版本
/// - 基础库版本要求3.10.3 及以上
/// - 客户端版本要求8.0.68 及以上
/// - 苹果支付不支持使用沙箱环境,仅支持使用现网环境
/// **注意事项**
/// 若该 API 都不存在,则 iOS 一定不支持虚拟支付,请保持旧版本逻辑。
/// **示例代码**
/// ```js
/// if (wx.checkIsSupportMidasPayment) {
/// wx.checkIsSupportMidasPayment({
/// success(res) {
/// console.log('支持检查结果:', res)
/// if (res.data.allow_pay) {
/// console.log('当前环境支持支付')
/// // 可以继续调用支付相关接口
/// } else {
/// console.log('当前环境不支持支付')
/// // 请自行适配用户提示文案
/// }
/// },
/// fail(err) {
/// console.error('检查支持情况失败:', err)
/// },
/// complete() {
/// console.log('检查完成')
/// }
/// })
/// }
/// ```
/// </summary>
public static void CheckIsSupportMidasPayment(CheckIsSupportMidasPaymentOption callback)
{
WXSDKManagerHandler.Instance.CheckIsSupportMidasPayment(callback);
}
/// <summary>
/// [wx.checkSession(Object object)](https://developers.weixin.qq.com/minigame/dev/api/open-api/login/wx.checkSession.html)
/// 检查登录态 session_key 是否过期。
@ -1794,92 +1731,35 @@ namespace WeChatWASM
/// <summary>
/// [wx.requestFacialRecognition(Object object)](https://developers.weixin.qq.com/minigame/dev/api/open-api/account-info/wx.requestFacialRecognition.html)
/// 需要基础库: `3.11.2`
/// 腾讯游戏人脸识别验证功能是基于健康系统防沉迷体系,用于识别疑似未成年人冒用成年人账号游玩游戏的行为,是防止未成年人沉迷网络游戏的一项重要措施。本接口是为开通虚拟支付功能的小游戏开发者提供的,此接口是基于人脸识别的未成年人身份核验接口。本次识别是根据用户在腾讯健康系统中留存的实名信息进行验证,结果将直接返回至开发者。
/// **接口限额**
/// - 超出限额后将返回错误码 2002008频率控制
/// - 1天内全部游戏对一个用户只能调起1次人脸识别
/// - 若用户人脸识别通过7天内不能再被弹出人脸识别
/// - 根据小游戏评级每个月限制使用次数,一旦发现恶意滥用接口,会取消使用资格。具体使用次数如下:
/// - S级300次/月
/// - A级100次/月
/// - B级30次/月
/// 发起人脸识别验证,用于对可疑用户进行身份验证和防沉迷检查。该接口会调起微信的人脸识别系统,验证用户身份以确保游戏安全和合规性。
/// **处理流程**
/// <img src="https://mmgame.qpic.cn/image/2034b86e1e8f3541629d4b4d16cf41ff84fd99efe25f4fac181603edd8a29e14/0" width="600" alt="人脸识别流程图" />
/// 1. 开发者调用 `wx.requestFacialRecognition` 发起人脸识别。
/// 2. 系统根据策略判定是否需要展示授权弹窗。
/// - 若判定为"不展示弹窗":立即回调结果,示例:`{ errCode: 0, errMsg: '本用户7天内人脸识别已通过' }`
/// - 若判定为"需展示弹窗":进入步骤 3。
/// 3. 系统展示授权弹窗。
/// - 玩家拒绝:立即回调 `fail``errCode = 2002006`
/// - 玩家同意:进入步骤 4。
/// 4. 系统开始进行人脸识别验证
/// - 玩家在跳转页面中完成活体/人脸识别;关闭页面返回游戏。
/// 5. 系统回调最终识别结果返回
/// **示例代码**
/// ```js
/// // 实际业务场景:防沉迷身份验证
/// function checkUserIdentity() {
/// wx.requestFacialRecognition({
/// success(res) {
/// // 场景 1本次人脸识别通过
/// // res = { errCode: 0, errMsg: 'ok' }
/// console.log('人脸识别成功:', res)
/// // 允许继续游戏
/// startGame()
/// // 人脸识别通过或 7 天内已通过
/// // 形如:{ errCode: 0, errMsg: 'ok' }
/// console.log('requestFacialRecognition success:', res)
/// },
/// fail(err) {
/// console.error('人脸识别失败:', err)
/// let tipMessage = ''
/// let shouldBlock = false // 是否需要阻断游戏
/// // 根据错误码进行不同处理
/// switch (err.errCode) {
/// case 2002004:
/// // 人脸识别失败(需要阻断)
/// // err = { errCode: 2002004, errMsg: '人脸识别失败' }
/// tipMessage = '识别失败,请稍后重试'
/// shouldBlock = true
/// break
/// case 2002006:
/// // 用户取消/超时/不同意,导致未完成人脸识别(需要阻断)
/// // err = { errCode: 2002006, errMsg: '用户取消' }
/// tipMessage = '您已取消验证,无法继续游戏'
/// shouldBlock = true
/// break
/// case 2002007:
/// // 本用户7天内人脸识别已通过可以继续游戏
/// // err = { errCode: 2002007, errMsg: '本用户7天内人脸识别已通过通过日期为2024-01-15' }
/// tipMessage = '您已完成验证'
/// shouldBlock = false
/// break
/// case 2002008:
/// // 频率控制:本日已调起过人脸识别 or 本月调用次数已达上限(可以继续游戏)
/// // err = { errCode: 2002008, errMsg: '本日已调起过人脸识别' }
/// // 或 err = { errCode: 2002008, errMsg: '本月调用次数已达上限' }
/// tipMessage = '今日验证次数已达上限'
/// shouldBlock = false
/// break
/// case 2002009:
/// // 无权限发起人脸识别(可以继续游戏)
/// // err = { errCode: 2002009, errMsg: '无权限发起人脸识别' }
/// tipMessage = '暂无权限使用此功能'
/// shouldBlock = false
/// break
/// default:
/// // 系统异常等其他错误(可以继续游戏,避免影响正常用户)
/// tipMessage = '系统异常,请稍后重试'
/// shouldBlock = false
/// }
/// if (tipMessage) {
/// wx.showModal({
/// title: '提示',
/// content: tipMessage,
/// showCancel: false
/// })
/// }
/// if (shouldBlock) {
/// // 仅对识别失败(2002004)和用户取消(2002006)阻断游戏
/// restrictGameFeatures()
/// } else {
/// // 其他情况允许继续游戏
/// startGame()
/// }
/// // 失败或受限等场景
/// console.log('requestFacialRecognition fail:', err)
/// },
/// complete(res) {
/// // 无论成功失败均会触发
/// console.log('人脸识别流程结束:', res)
/// console.log('requestFacialRecognition complete:', res)
/// }
/// })
/// }
/// ```
/// </summary>
public static void RequestFacialRecognition(RequestFacialRecognitionOption callback)
@ -1887,29 +1767,6 @@ namespace WeChatWASM
WXSDKManagerHandler.Instance.RequestFacialRecognition(callback);
}
/// <summary>
/// [wx.requestFacialVerify(Object object)](https://developers.weixin.qq.com/minigame/dev/api/open-api/face/wx.requestFacialVerify.html)
/// 需要基础库: `3.8.12`
/// 对用户实名信息进行基于生物识别的人脸核身验证
/// **示例代码**
/// ```js
/// wx.requestFacialVerify({
/// // 人脸核身会话唯一标识
/// verifyId: 'xxx',
/// success() {
/// // 人脸核身验证成功,需要通知小程序后台根据本次人脸核身会话唯一标识 verifyId 字段调用微信后台 queryVerifyInfo 接口查询人脸核身真实验证结果。
/// },
/// fail() {
/// // 人脸核身验证失败
/// },
/// })
/// ```
/// </summary>
public static void RequestFacialVerify(RequestFacialVerifyOption callback)
{
WXSDKManagerHandler.Instance.RequestFacialVerify(callback);
}
/// <summary>
/// [wx.requestMidasFriendPayment(Object object)](https://developers.weixin.qq.com/minigame/dev/api/midas-payment/wx.requestMidasFriendPayment.html)
/// 需要基础库: `2.11.0`
@ -3248,7 +3105,6 @@ namespace WeChatWASM
/// 监听搜索到新设备的事件
/// **注意**
/// - 若在 [wx.onBluetoothDeviceFound](https://developers.weixin.qq.com/minigame/dev/api/device/bluetooth/wx.onBluetoothDeviceFound.html) 回调了某个设备,则此设备会添加到 [wx.getBluetoothDevices](https://developers.weixin.qq.com/minigame/dev/api/device/bluetooth/wx.getBluetoothDevices.html) 接口获取到的数组中。
/// - 地址变化这个是鸿蒙系统特性,小程序可以不缓存地址,重新搜索连接。
/// **示例代码**
/// [在微信开发者工具中查看示例](https://developers.weixin.qq.com/s/pQU51zmz7a3K)
/// ```js

View File

@ -643,6 +643,62 @@ namespace WeChatWASM
{
return WXSDKManagerHandler.Instance.GetBundleSizeOnDisk();
}
/// <summary>
/// 获取当前帧WXFS.read的执行次数
/// </summary>
public static uint GetReadCount()
{
return WXSDKManagerHandler.Instance.GetReadCount();
}
/// <summary>
/// 获取当前帧WXFS.read的Cache Miss次数
/// </summary>
public static uint GetCacheMissCount()
{
return WXSDKManagerHandler.Instance.GetCacheMissCount();
}
/// <summary>
/// 获取当前帧fd缓存的Cache Miss次数
/// </summary>
public static uint GetFdCacheMissCount()
{
return WXSDKManagerHandler.Instance.GetFdCacheMissCount();
}
/// <summary>
/// 获取当前帧openSync的调用次数
/// </summary>
public static uint GetOpenSyncCount()
{
return WXSDKManagerHandler.Instance.GetOpenSyncCount();
}
/// <summary>
/// 获取当前帧statSync的调用次数
/// </summary>
public static uint GetStatSyncCount()
{
return WXSDKManagerHandler.Instance.GetStatSyncCount();
}
/// <summary>
/// 获取当前帧readSync的调用次数
/// </summary>
public static uint GetReadSyncCount()
{
return WXSDKManagerHandler.Instance.GetReadSyncCount();
}
/// <summary>
/// 重置WXFS性能计数器
/// </summary>
public static void ResetPerfCounters()
{
WXSDKManagerHandler.Instance.ResetPerfCounters();
}
#endregion
/// <summary>

View File

@ -231,6 +231,13 @@ public class WXProfileStatsScript : MonoBehaviour, WeChatWASM.WXSDKManagerHandle
UpdateValue("NumberOnDisk", WeChatWASM.WXSDKManagerHandler.Instance.GetBundleNumberOnDisk(), sb);
UpdateValue("SizeInMemory", WeChatWASM.WXSDKManagerHandler.Instance.GetBundleSizeInMemory() / toMB, sb);
UpdateValue("SizeOnDisk", WeChatWASM.WXSDKManagerHandler.Instance.GetBundleSizeOnDisk() / toMB, sb);
UpdateValue("ReadCount", WeChatWASM.WXSDKManagerHandler.Instance.GetReadCount(), sb);
UpdateValue("CacheMissCount", WeChatWASM.WXSDKManagerHandler.Instance.GetCacheMissCount(), sb);
UpdateValue("FdCacheMissCount", WeChatWASM.WXSDKManagerHandler.Instance.GetFdCacheMissCount(), sb);
UpdateValue("OpenSyncCount", WeChatWASM.WXSDKManagerHandler.Instance.GetOpenSyncCount(), sb);
UpdateValue("StatSyncCount", WeChatWASM.WXSDKManagerHandler.Instance.GetStatSyncCount(), sb);
UpdateValue("ReadSyncCount", WeChatWASM.WXSDKManagerHandler.Instance.GetReadSyncCount(), sb);
WeChatWASM.WXSDKManagerHandler.Instance.ResetPerfCounters();
#if UNITY_2021_2_OR_NEWER
// sb.AppendLine("-------------MemoryRecorder-----");
@ -278,29 +285,37 @@ public class WXProfileStatsScript : MonoBehaviour, WeChatWASM.WXSDKManagerHandle
if(!WeChatWASM.WXSDKManagerHandler.Instance.IsCloudTest()) {
GUI.backgroundColor = new Color(0, 0, 0, 0.5f);
#if UNITY_EDITOR
GUI.skin.button.fontSize = 10;
GUI.skin.label.fontSize = 10;
int fontSize = 10;
int btnWidth = 150;
int btnHeight = 20;
int padding = 5;
#else
GUI.skin.button.fontSize = 30;
GUI.skin.label.fontSize = 30;
int fontSize = 30;
int btnWidth = 400;
int btnHeight = 50;
int padding = 10;
#endif
if (GUILayout.Button("Performance Stats", GUILayout.ExpandWidth(false)))
GUI.skin.button.fontSize = fontSize;
GUI.skin.label.fontSize = fontSize;
float curY = padding;
if (GUI.Button(new Rect(padding, curY, btnWidth, btnHeight), "Performance Stats"))
{
m_isShow = !m_isShow;
}
curY += btnHeight + padding;
if (GUILayout.Button("ProfilingMemory Dump", GUILayout.ExpandWidth(false)))
if (GUI.Button(new Rect(padding, curY, btnWidth, btnHeight), "ProfilingMemory Dump"))
{
WeChatWASM.WXSDKManagerHandler.Instance.ProfilingMemoryDump();
}
curY += btnHeight + padding;
GUILayout.BeginVertical(m_bgStyle);
if (m_isShow)
{
GUILayout.Label(statsText);
GUI.Box(new Rect(padding, curY, Screen.width - padding * 2, Screen.height - curY - padding), "", m_bgStyle);
GUI.Label(new Rect(padding * 2, curY + padding, Screen.width - padding * 4, Screen.height - curY - padding * 2), statsText);
}
GUILayout.EndVertical();
}
}

View File

@ -0,0 +1,186 @@
#if UNITY_WEBGL || WEIXINMINIGAME || UNITY_EDITOR
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems;
using UnityEngine.UI;
/**
* WxTouch输入模块 WXTouchInputOverride 使
* Button事件调用
* Button ExecuteEvents.pointerClickHandler StandaloneInputModule
* WXTouchInputOverride 使 StandaloneInputModule
*/
public class WXTouchInputModule : StandaloneInputModule
{
private const float doubleClickTime = 0.3f;
public override void Process()
{
if (!eventSystem.isFocused && ShouldIgnoreEventsOnNoFocus())
return;
bool usedEvent = SendUpdateEventToSelectedObject();
if (!ProcessTouchEvents() && input.mousePresent)
ProcessMouseEvent();
if (eventSystem.sendNavigationEvents)
{
if (!usedEvent)
usedEvent |= SendMoveEventToSelectedObject();
if (!usedEvent)
SendSubmitEventToSelectedObject();
}
}
private bool ShouldIgnoreEventsOnNoFocus()
{
#if UNITY_EDITOR
return !UnityEditor.EditorApplication.isRemoteConnected;
#else
return true;
#endif
}
private bool ProcessTouchEvents()
{
for (int i = 0; i < input.touchCount; ++i)
{
Touch touch = input.GetTouch(i);
if (touch.type == TouchType.Indirect)
continue;
bool released;
bool pressed;
var pointer = GetTouchPointerEventData(touch, out pressed, out released);
ProcessTouchPress(pointer, pressed, released);
if (!released)
{
ProcessMove(pointer);
ProcessDrag(pointer);
}
else
RemovePointerData(pointer);
}
return input.touchCount > 0;
}
// released 后会拦截 Button 的 ExecuteEvents.pointerClickHandler ,其余逻辑与 StandaloneInputModule 保持一致
protected new void ProcessTouchPress(PointerEventData pointerEvent, bool pressed, bool released)
{
var currentOverGo = pointerEvent.pointerCurrentRaycast.gameObject;
// PointerDown notification
if (pressed)
{
pointerEvent.eligibleForClick = true;
pointerEvent.delta = Vector2.zero;
pointerEvent.dragging = false;
pointerEvent.useDragThreshold = true;
pointerEvent.pressPosition = pointerEvent.position;
pointerEvent.pointerPressRaycast = pointerEvent.pointerCurrentRaycast;
DeselectIfSelectionChanged(currentOverGo, pointerEvent);
if (pointerEvent.pointerEnter != currentOverGo)
{
// send a pointer enter to the touched element if it isn't the one to select...
HandlePointerExitAndEnter(pointerEvent, currentOverGo);
pointerEvent.pointerEnter = currentOverGo;
}
var resetDiffTime = Time.unscaledTime - pointerEvent.clickTime;
if (resetDiffTime >= doubleClickTime)
{
pointerEvent.clickCount = 0;
}
// search for the control that will receive the press
// if we can't find a press handler set the press
// handler to be what would receive a click.
var newPressed = ExecuteEvents.ExecuteHierarchy(currentOverGo, pointerEvent, ExecuteEvents.pointerDownHandler);
var newClick = ExecuteEvents.GetEventHandler<IPointerClickHandler>(currentOverGo);
// didnt find a press handler... search for a click handler
if (newPressed == null)
newPressed = newClick;
// Debug.Log("Pressed: " + newPressed);
float time = Time.unscaledTime;
if (newPressed == pointerEvent.lastPress)
{
var diffTime = time - pointerEvent.clickTime;
if (diffTime < doubleClickTime)
++pointerEvent.clickCount;
else
pointerEvent.clickCount = 1;
pointerEvent.clickTime = time;
}
else
{
pointerEvent.clickCount = 1;
}
pointerEvent.pointerPress = newPressed;
pointerEvent.rawPointerPress = currentOverGo;
pointerEvent.pointerClick = newClick;
pointerEvent.clickTime = time;
// Save the drag handler as well
pointerEvent.pointerDrag = ExecuteEvents.GetEventHandler<IDragHandler>(currentOverGo);
if (pointerEvent.pointerDrag != null)
ExecuteEvents.Execute(pointerEvent.pointerDrag, pointerEvent, ExecuteEvents.initializePotentialDrag);
}
// PointerUp notification
if (released)
{
// Debug.Log("Executing pressup on: " + pointer.pointerPress);
ExecuteEvents.Execute(pointerEvent.pointerPress, pointerEvent, ExecuteEvents.pointerUpHandler);
// Debug.Log("KeyCode: " + pointer.eventData.keyCode);
// see if we mouse up on the same element that we clicked on...
var pointerClickHandler = ExecuteEvents.GetEventHandler<IPointerClickHandler>(currentOverGo);
// PointerClick and Drop events
if (pointerEvent.pointerClick == pointerClickHandler && pointerEvent.eligibleForClick)
{
bool shouldHandleInWx = currentOverGo != null && currentOverGo.GetComponentInParent<UnityEngine.UI.Button>() != null;
if (!shouldHandleInWx)
{
ExecuteEvents.Execute(pointerEvent.pointerClick, pointerEvent, ExecuteEvents.pointerClickHandler);
}
}
if (pointerEvent.pointerDrag != null && pointerEvent.dragging)
{
ExecuteEvents.ExecuteHierarchy(currentOverGo, pointerEvent, ExecuteEvents.dropHandler);
}
pointerEvent.eligibleForClick = false;
pointerEvent.pointerPress = null;
pointerEvent.rawPointerPress = null;
pointerEvent.pointerClick = null;
if (pointerEvent.pointerDrag != null && pointerEvent.dragging)
ExecuteEvents.Execute(pointerEvent.pointerDrag, pointerEvent, ExecuteEvents.endDragHandler);
pointerEvent.dragging = false;
pointerEvent.pointerDrag = null;
// send exit events as we need to simulate this on touch up on touch device
ExecuteEvents.ExecuteHierarchy(pointerEvent.pointerEnter, pointerEvent, ExecuteEvents.pointerExitHandler);
pointerEvent.pointerEnter = null;
}
//m_InputPointerEvent = pointerEvent;
}
}
#endif

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 6226ce8c6cf3dd24d95cfa430c9755d3
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -21,17 +21,17 @@ internal class TouchData
* 使WX的触控接口重新覆盖Unity的BaseInput关于触控方面的接口
* StandaloneInputModule.inputOverride的方式来实现
*/
[RequireComponent(typeof(StandaloneInputModule))]
[RequireComponent(typeof(WXTouchInputModule))]
public class WXTouchInputOverride : BaseInput
{
private bool _isInitWechatSDK;
private readonly List<TouchData> _touches = new List<TouchData>();
private StandaloneInputModule _standaloneInputModule = null;
private WXTouchInputModule _standaloneInputModule = null;
protected override void Awake()
{
base.Awake();
_standaloneInputModule = GetComponent<StandaloneInputModule>();
_standaloneInputModule = GetComponent<WXTouchInputModule>();
}
protected override void OnEnable()
@ -138,11 +138,16 @@ public class WXTouchInputOverride : BaseInput
Button button = selectedObject.GetComponent<Button>();
if (button != null)
{
int clickListenerCount = button.onClick.GetPersistentEventCount();
if (clickListenerCount > 0) {
button.onClick.SetPersistentListenerState(0, UnityEventCallState.EditorAndRuntime);
button.onClick.Invoke();
button.onClick.SetPersistentListenerState(0, UnityEventCallState.Off);
bool touchInButtonArea = false;
foreach (var wxTouch in touchEvent.changedTouches)
{
TouchData data = FindTouchData(wxTouch.identifier);
touchInButtonArea = touchInButtonArea || IsTouchInButtonArea(data, button);
}
if(touchInButtonArea)
{
button.OnPointerClick(new PointerEventData(EventSystem.current));
// button.onClick.Invoke();
}
}
#if !UNITY_EDITOR
@ -175,6 +180,12 @@ public class WXTouchInputOverride : BaseInput
}
}
private static bool IsTouchInButtonArea(TouchData data, Button button)
{
RectTransform rect = button.GetComponent<RectTransform>();
return RectTransformUtility.RectangleContainsScreenPoint(rect, data.touch.position, null);
}
private void OnWxTouchCancel(OnTouchStartListenerResult touchEvent)
{
foreach (var wxTouch in touchEvent.changedTouches)

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: d3d5d2167fc6b91f7fa3e08ea84c3cda
guid: c1c94d3058d4e630bf62641c3202fdb2
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 6c06693e00be3ab1fde2607590ab4e6d
guid: 27ad33a6ffa5d371fa6b0d285bbb7898
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: a02513af1cc852341848d1ee2622c3aa
guid: c31dcf42c4276563ba976caebdb749d0
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: de11e750d070e1521430f1ea7d7e9b10
guid: a7c2451197fc8ba01044823556011748
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 75c495849e8b58894c4df4019c28990f
guid: 3c44dee219712fa066ac4eddfc897f63
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 2676c806e8720f27b3c91d7b88934aea
guid: 217f9f9cdd9e8e2e739376de81011ebe
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: f98ab3c051a738848f5f25b3963ff875
guid: baa9c990b0140a3c52f8f44f7a21a74b
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 14b4dacf147a2eb0b690def4fd2a25f8
guid: 714357e1290ad4cb6778c6cb14c5d056
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: fdc5a07bfe255668c4bc90b063ab0439
guid: 73512ef38b4029a910bd246b9160f85e
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: cc12ac5f1dcfb4041e5b88bdb3d39df1
guid: dd6633f9728238c2fdcbbf2f75dc479c
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 3a78826b373fd69d30b14736655164fc
guid: 8186617594c84cd966b79f3866f18248
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 7e3a00c4051da2b6217cd8e156b32adc
guid: 17415bb26fd419f8bea676b030f0ef76
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: fa4490b63d04c3666e7d5bd6dbbe4a58
guid: 992f6bd0d542edd7db92283edbccb867
DefaultImporter:
externalObjects: {}
userData:

View File

@ -33,6 +33,12 @@ const unityNamespace = {
needCacheTextures: $NEED_CACHE_TEXTURES,
// AssetBundle在内存中的存活时间
ttlAssetBundle: 5,
// AssetBundle在内存中的缓存上限字节0表示无限制
capacityAssetBundle: 0,
// AssetBundle在内存中的缓存大小字节
prefetchSizeAssetBundle: 1024,
// AssetBundle file fd在内存中的缓存数量上限 10
fdCacheCountAssetBundle: 1,
// 是否显示性能面板
enableProfileStats: $ENABLE_PROFILE_STATS,
// 是否预载微信系统字体

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 942f7b8a85c48dce854289ad244f3ca4
guid: b17423b4acd54ef9f4883899dc2d011e
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 4dadbfddf470bde3a646527500a79bb6
guid: 43b5f6a2940f9caa671d4cd7d9129453
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 1516197a3756cc06853320f648bd30f2
guid: 58f45f375640430b37a0da7489b607f8
DefaultImporter:
externalObjects: {}
userData:

View File

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

View File

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

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 5f862d1c69deabf4048bebed751c846d
guid: 2adcfb3ecd905ddb00e5b0cbdf589a29
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 7eb49c157fec3510cca59918268546d6
guid: 9569430a28ea30ea02efba0292f416ac
DefaultImporter:
externalObjects: {}
userData:

View File

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

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 1151cf42fe9e3fe2b444ddddbde08396
guid: 00a33e24331b4b12fc168ee9f8cfcef9
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 2b6db07c37dc2366237d59d8f785fd48
guid: d7c9ed07be0f9d4046dcb1f6110a6ee8
DefaultImporter:
externalObjects: {}
userData:

View File

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

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: d34cf0ce316d07409a850c605540a013
guid: b6d8bdaa925780e738f306a4f33f87dd
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: d91ef4c43c9f3c9a6da9a65b379b5740
guid: 468dd19888378cbacafc0e69a1aae273
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 6660a6a8aacee1f2096340441fdbd3ce
guid: 4e7a4b2030de805a1087de9301b3c2ab
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 119c8bb6b0ad127ed8bac3162a9969f8
guid: e4dfd5c2b2f37c44523c0a6a1a04d651
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 59d869d78f133094896b88faa762234a
guid: 667f745458b0f3bbbbb37f7c0775705e
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 34d39008817c30ca826af31fc01525e7
guid: 69b759c86a9a7a7ff4fa346298807f37
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 73a18f6a646fbaf0e8526fc1526ae97a
guid: 4472d8348596a35da850936453990f7b
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: c9e4678df01d9876b1b0aa336ee45401
guid: 194e931c5cd2772a6c2a6886d428489d
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: c2c849f6ee1aeeb7f9ccc36695a38d24
guid: a8d58865bd0e46977b196628e93c7811
DefaultImporter:
externalObjects: {}
userData:

View File

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

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: b89e0228f0375beca9b6d7b1ad95356a
guid: 15d35e21995dcaf07cb54951a36b5a22
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: c82e223e59fd93811d3aa303bb51f02e
guid: d5573172c468e9dc11515525a8bb734d
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 3c570e4eb7ff538d7aa640fb8c3d02da
guid: 353efbe02f54905e89a98292082d515f
DefaultImporter:
externalObjects: {}
userData:

View File

@ -33,7 +33,6 @@ export const ResType = {
phoneCalendarAuthorized: 'string',
},
AppBaseInfo: {
PCKernelVersion: 'string',
SDKVersion: 'string',
enableDebug: 'bool',
fontSizeScaleFactor: 'number',
@ -103,50 +102,13 @@ export const ResType = {
width: 'number',
},
OfficialComponentsInfo: {
challengeRewardsComponentInfo: 'ChallengeRewardsComponentInfo',
notificationComponentInfo: 'OfficialComponentInfo',
rewardsComponentInfo: 'RewardsComponentInfo',
},
ChallengeRewardsComponentInfo: {
name: 'string',
receiveDetail: 'ChallengeReceiveDetail',
},
ChallengeReceiveDetail: {
awardResult: 'number',
receivedRareReward: 'bool',
userSourceList: 'UserSource[]',
},
UserSource: {
sourceType: 'number',
source: 'SourceInfo',
sourceNum: 'number',
},
SourceInfo: {
propList: 'PropInfo[]',
type: 'number',
sourceName: 'string',
},
PropInfo: {
propName: 'string',
propNum: 'number',
},
OfficialComponentInfo: {
boundingClientRect: 'ClientRect',
isVisible: 'bool',
name: 'string',
},
RewardsComponentInfo: {
canReceiveFriendGiftCount: 'number',
canReceiveGiftCount: 'number',
name: 'string',
receiveDetail: 'ReceiveDetail',
},
ReceiveDetail: {
desc: 'string',
icon: 'string',
name: 'string',
type: 'string',
},
GetStorageInfoSyncOption: {
currentSize: 'number',
keys: 'string[]',
@ -330,18 +292,6 @@ export const ResType = {
added: 'bool',
errMsg: 'string',
},
CheckIsSupportMidasPaymentFailCallbackErr: {
errMsg: 'string',
},
CheckIsSupportMidasPaymentSuccessCallbackResult: {
data: 'CheckIsSupportMidasPaymentSuccessCallbackDataResult',
errMsg: 'string',
},
CheckIsSupportMidasPaymentSuccessCallbackDataResult: {
allow_pay: 'bool',
err_code: 'number',
err_msg: 'string',
},
ChooseImageSuccessCallbackResult: {
tempFilePaths: 'string[]',
tempFiles: 'ImageFile[]',
@ -837,7 +787,6 @@ export const ResType = {
},
OnCopyUrlListenerResult: {
query: 'string',
title: 'string',
},
OnDeviceMotionChangeListenerResult: {
alpha: 'number',
@ -1010,10 +959,6 @@ export const ResType = {
errMsg: 'string',
errCode: 'number',
},
RequestFacialVerifyError: {
errMsg: 'string',
errCode: 'number',
},
MidasFriendPaymentError: {
errMsg: 'string',
errCode: 'number',

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 9a8702f6acee306755d112480d39813c
guid: 1bf54f95d5d19a08b2e3e82cc7ccfb64
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 90a536e2c5a0814cc1c58b70c92da9a4
guid: 083d4cf4551f5164e1a505f3cd8b1e8f
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 02830b8246e010bdd89e47fefd9adf6b
guid: eb9de486a4eec97a4b229847f6e255ab
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 853f4640fa1b8a092c4ccb4669d6971c
guid: cdbd58274d8ae00e337d51d602c5378b
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 24c205c5759ec41da1b00eda2ac42564
guid: 80b523495a13e66a422d98e13c7eff5a
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 9782628a70978396e495b86274aa398d
guid: 8d2ff0bc1186e9b0d42ba632bb26f8a4
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 674bba89e7bc0b330d4920c8a1d2470f
guid: 788694f8101a6295448360ce6b6b4bc2
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: faa496c26f840b60f61ac89b5f564f32
guid: d7dec1f15de584e1f84cd4493fdd0a48
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 6cbac21da9894d5092f47042e7dcab8e
guid: 16d5607f3d275e276ba636c84749a409
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: aa534e5bd9009a4f986abd6cc2ff823b
guid: 245a41dc985294ef729d4febcdba4330
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 3251c8f50cca5fae20e0e2bbc567bf40
guid: 8b3e54173130fc7bfe9b947324f8381a
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 6ee130afc0339063c59da8a830c7663e
guid: 82d227f51cc634da5d2c823c734aba29
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 30161526e5960c70e6965463a8c98492
guid: 4f694e8ab071264be2afa7306f27c9eb
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 47d2bb9aac0b87cfdf12358dc192e755
guid: 85b9ee393a4ef2ec126adb3621bb3673
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 7babfccd3322d8f0bb49bb466cc03624
guid: 6ce1a55ffe625cf4fb60649f30c0a109
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: a99dd0e69496ec987fc46d387fee8587
guid: 9f9e1c2061e7cd452230c2d649cda757
DefaultImporter:
externalObjects: {}
userData:

View File

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

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 873c3ff5c09c499cea533e76613b289c
guid: 3a861300d7223ae05e5c2e8dd8a374a5
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

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

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 0f5d268ad00ae324c34a888a2bc0f3b9
guid: 7d74f56089d99f3e453c14906fff3b48
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: c4b7634dc3628a25ae87b92a174f5056
guid: 203be505f0122fd3995fddaa632328c6
DefaultImporter:
externalObjects: {}
userData:

View File

@ -23,7 +23,7 @@
],
"plugins": {
"UnityPlugin": {
"version": "1.2.91",
"version": "1.2.101",
"provider": "wxe5a48f1ed5f544b7",
"contexts": [
{

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: acc81d1c264bc0dadd4552d59e6b5cc0
guid: 3648cd65712f76738551dd95c7b49342
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 304fa8442a722ea29aaf75c80ecf36d0
guid: 843f120cbeb0f4077c666b559649255e
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 07577f5e35b0d9d10be3e7da2f636244
guid: 850497dbc7d3702dc006cf484111392e
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 90f5231878ca8f4be00b3ce66b678dd1
guid: f4d6ef087522c81319d68ce6ecd927e4
DefaultImporter:
externalObjects: {}
userData:

View File

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

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 48fbcdad3f9d3b9f921019659939b17c
guid: 2bb31b4dcfbed3586466f8f11eda54d7
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 116976e02bc785ec509b059f15a5826b
guid: 56a14988689bb6f8e7fed173994819f8
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 39b854a719f26a74ceafd3208b3d1559
guid: 98a7d83e0f6598fdb801df93cd9fe6bc
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 71c319aa5539d8cc938c59c1f95015a2
guid: 3a95faa8791b11a82f916bf53a37ff62
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 4c4cd8fe6d78dca85ddf042297dbfa8e
guid: 3c05801c7325ef4b2ab96c2db64f1d5b
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: bfe81ba23a1b4042745b051435b5580c
guid: 951dd3111429bd183d8125eb60f9b56a
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: b2047abd88a0e4c828645361f0825461
guid: 9e6bf3eb0d061f984bc32604efa95e60
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 05954e3656c1b42399214f7a474e1dc3
guid: 48239d7a1a983727fd49c2078c0180fd
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: a10c90dec186b4fb6907d4c144ee7ab5
guid: 68217158b14758e75278b2bd664073b7
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 9aa5b725da3747ea7fdd3007c9fc1e9a
guid: ad40b84487ab91912aa45f91e9426b2b
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 3af9f84d877d17c7ba3a46100af46468
guid: 32fb6d932c73cef5c1b701c7fede2ed5
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 55b4fb765fdc8b3266dd1a0bbc43e676
guid: 6b972120e9320536e358172d831d3362
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 00afcfdfb3003edd8e2b656b605b3ffa
guid: ebcf9c5c95e17607c8c44a018338aae5
DefaultImporter:
externalObjects: {}
userData:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 89cb03c9ed8a7e361bce00ef148ccbf2
guid: baae6c8c9d77277917f8078cc9e0cd9c
DefaultImporter:
externalObjects: {}
userData:

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