chicken_dy/Assets/WX-WASM-SDK/WXBase.cs

694 lines
26 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using UnityEngine;
using System;
namespace WeChatWASM
{
/// <summary>
/// 微信SDK对外暴露的API
/// </summary>
public class WXBase
{
#region env
/// <summary>
/// 微信提供了一个用户文件目录给开发者,开发者对这个目录有完全自由的读写权限。通过 WX.env.USER_DATA_PATH 可以获取到这个目录的路径。
/// </summary>
public static WXEnv env
{
get
{
return WXSDKManagerHandler.Env;
}
}
#endregion
#region cloud
/// <summary>
/// 云函数
/// </summary>
public static Cloud cloud
{
get
{
return WXSDKManagerHandler.cloud;
}
}
#endregion
#region SDK
/// <summary>
/// 初始化SDK
/// </summary>
/// <param name="callback">初始化完毕后回调,请回调后再执行游戏主逻辑</param>
public static void InitSDK(Action<int> callback)
{
WXSDKManagerHandler.Instance.InitSDK(callback);
}
#endregion
#region
/// <summary>
/// 游戏开始运行时上报
/// </summary>
public static void ReportGameStart()
{
WXSDKManagerHandler.Instance.ReportGameStart();
}
/// <summary>
/// 设置游戏当前阶段,通知插件侧游戏当前所处阶段,便于用户退出或异常发生时,独立域插件能上报游戏当前阶段
/// </summary>
/// <param name="stageType">自定义的阶段idid>=200, id<=10000</param>
public static void SetGameStage(int stageType)
{
WXSDKManagerHandler.Instance.SetGameStage(stageType);
}
/// <summary>
/// 上报当前自定义阶段耗时
/// </summary>
/// <param name="costTime">自定义阶段耗时没有就传0</param>
/// <param name="extJsonStr">上报的额外信息json序列化字符串</param>
public static void ReportGameStageCostTime(int costTime, string extJsonStr)
{
WXSDKManagerHandler.Instance.ReportGameStageCostTime(costTime, extJsonStr);
}
/// <summary>
/// 上报当前自定义阶段错误信息
/// </summary>
/// <param name="errorType">错误类型, 取值范围0-10000</param>
/// <param name="errStr">错误信息</param>
/// <param name="extJsonStr">上报的额外信息json序列化字符串</param>
public static void ReportGameStageError(int errorType, string errStr, string extJsonStr)
{
WXSDKManagerHandler.Instance.ReportGameStageError(errorType, errStr, extJsonStr);
}
/// <summary>
/// 向日志管理器中写log
/// 日志管理器文档https://developers.weixin.qq.com/minigame/dev/api/base/debug/LogManager.html
/// </summary>
/// <param name="str">log信息</param>
public static void WriteLog(string str)
{
WXSDKManagerHandler.Instance.WriteLog(str);
}
/// <summary>
/// 向日志管理器中写warn
/// 日志管理器文档https://developers.weixin.qq.com/minigame/dev/api/base/debug/LogManager.html
/// </summary>
/// <param name="str">warn信息</param>
public static void WriteWarn(string str)
{
WXSDKManagerHandler.Instance.WriteWarn(str);
}
public static void HideLoadingPage()
{
WXSDKManagerHandler.Instance.HideLoadingPage();
}
/// <summary>
/// 控制预载并发数
/// </summary>
/// <param name="count">并发数,取值范围[1, 10]</param>
public static void PreloadConcurrent(int count)
{
WXSDKManagerHandler.Instance.PreloadConcurrent(count);
}
/// <summary>
/// 用于分支相关的UI组件一般是按钮相关事件的上报事件目前有曝光、点击两种
/// </summary>
/// <param name="branchId">分支ID在「小程序管理后台」获取</param>
/// <param name="branchDim">自定义维度</param>
/// <param name="eventType">事件类型1曝光 2点击</param>
public static void ReportUserBehaviorBranchAnalytics(string branchId, string branchDim, int eventType)
{
WXSDKManagerHandler.Instance.ReportUserBehaviorBranchAnalytics(branchId, branchDim, eventType);
}
#endregion
#region
// 更多关于存储的隔离策略和清理策略说明可以查看这里 https://developers.weixin.qq.com/minigame/dev/guide/base-ability/storage.html
/*
* @description 同步设置int型数据存储
* @param key 键名
* @param value 数值
*/
public static void StorageSetIntSync(string key, int value)
{
WXSDKManagerHandler.Instance.StorageSetIntSync(key, value);
}
/*
* @description 同步获取之前设置过的int型数据
* @param key 键名
* @param defaultValue 默认值
* @returns 异常的和空时候会返回默认值
*/
public static int StorageGetIntSync(string key, int defaultValue)
{
return WXSDKManagerHandler.Instance.StorageGetIntSync(key, defaultValue);
}
/*
* @description 同步设置string型数据存储
* @param key 键名
* @param value 数值
*/
public static void StorageSetStringSync(string key, string value = "")
{
WXSDKManagerHandler.Instance.StorageSetStringSync(key, value);
}
/*
* @description 同步获取之前设置过的string型数据
* @param key 键名
* @param defaultValue 默认值
* @returns 异常的和空时候会返回默认值
*/
public static string StorageGetStringSync(string key, string defaultValue)
{
return WXSDKManagerHandler.Instance.StorageGetStringSync(key, defaultValue);
}
/*
* @description 同步设置float型数据存储
* @param key 键名
* @param value 数值
*/
public static void StorageSetFloatSync(string key, float value)
{
WXSDKManagerHandler.Instance.StorageSetFloatSync(key, value);
}
/*
* @description 同步获取之前设置过的float型数据
* @param key 键名
* @param defaultValue 默认值
* @returns 异常的和空时候会返回默认值
*/
public static float StorageGetFloatSync(string key, float defaultValue)
{
return WXSDKManagerHandler.Instance.StorageGetFloatSync(key, defaultValue);
}
/*
* @description 同步删除所有数据
*/
public static void StorageDeleteAllSync()
{
WXSDKManagerHandler.Instance.StorageDeleteAllSync();
}
/*
* @description 同步删除对应一个key的数据
* @param key 键名
*/
public static void StorageDeleteKeySync(string key)
{
WXSDKManagerHandler.Instance.StorageDeleteKeySync(key);
}
/*
* @description 判断一个key是否有值
* @param key 键名
* @returns truefalse没有
*/
public static bool StorageHasKeySync(string key)
{
return WXSDKManagerHandler.Instance.StorageHasKeySync(key);
}
#endregion
#region
/// <summary>
/// 创建用户信息按钮,这里是在屏幕上额外创建一块透明区域,其为点击区域,用户点击后,就会请求用户授权获取用户信息。游戏中的该区域最好为按钮区域,这样就能看起来用户是在点击游戏中的按钮
/// </summary>
/// <param name="x">x 左上角横坐标以屏幕左上角为0</param>
/// <param name="y">y 左上角纵坐标以屏幕左上角为0</param>
/// <param name="width">区域宽度</param>
/// <param name="height">区域高度</param>
/// <param name="lang">显示用户信息的语言 可取en,zh_CN,zh_TW的一个</param>
/// <param name="withCredentials">是否带上登录态信息。当 withCredentials 为 true 时,要求此前有调用过 wx.login 且登录态尚未过期,此时返回的数据会包含 encryptedData, iv 等敏感信息;当 withCredentials 为 false 时,不要求有登录态,返回的数据不包含 encryptedData, iv 等敏感信息。</param>
/// <returns>返回对象用于后续控制该透明区域的点击,展示和隐藏等行为</returns>
public static WXUserInfoButton CreateUserInfoButton(int x, int y, int width, int height, string lang, bool withCredentials)
{
return WXSDKManagerHandler.Instance.CreateUserInfoButton(x, y, width, height, lang, withCredentials);
}
#endregion
#region
/// <summary>
/// 监听用户点击右上角菜单的「转发」按钮时触发的事件
/// </summary>
/// <param name="defaultParam">默认的设置内容</param>
/// <param name="action">用户点击右上角菜单的「转发」按钮时触发的事件的回调函数,请在回调后三秒内,触发 Action<WXShareAppMessageParam>返回设置的内容,否则会使用 defaultParam</param>
public static void OnShareAppMessage(WXShareAppMessageParam defaultParam, Action<Action<WXShareAppMessageParam>> action = null)
{
WXSDKManagerHandler.Instance.OnShareAppMessage(defaultParam, action);
}
#endregion
#region 广
/// <summary>
/// banner 广告组件。banner 广告组件是一个原生组件层级比普通组件高。banner 广告组件默认是隐藏的,需要调用 BannerAd.show() 将其显示。banner 广告会根据开发者设置的宽度进行等比缩放,缩放后的尺寸将通过 BannerAd.onResize() 事件中提供。 使用可参考 https://developers.weixin.qq.com/minigame/dev/guide/open-ability/ad/banner-ad.html
/// </summary>
/// <param name="param">param各字段说明详见这里https://developers.weixin.qq.com/minigame/dev/api/ad/wx.createBannerAd.html </param>
/// <returns>对banner广告做操作的对象详见 https://developers.weixin.qq.com/minigame/dev/api/ad/BannerAd.html </returns>
/// <example>
/// // 底部banner广告示例
/// var sysInfo = WX.GetSystemInfoSync();
/// var banner = WX.CreateBannerAd(new WXCreateBannerAdParam()
/// {
/// adUnitId = "adunit-2e20328227ca771b",
/// adIntervals = 30,
/// style = new Style()
/// {
/// left = 0,
/// top = sysInfo.windowHeight - 100,
/// width = sysInfo.windowWidth,
/// height = 100
/// }
/// });
/// banner.OnError((WXADErrorResponse res)=>
/// {
/// Debug.Log("bannerad error response");
/// });
/// banner.OnLoad(()=> {
/// banner.Show();
/// });
/// banner.OnResize((WXADResizeResponse res) =>
/// {
/// //拉取的广告可能跟设置的不一样,需要动态调整位置
/// banner.style.top = sysInfo.windowHeight - res.height;
/// });
/// </example>
public static WXBannerAd CreateBannerAd(WXCreateBannerAdParam param)
{
return WXSDKManagerHandler.Instance.CreateBannerAd(param);
}
/// <summary>
/// 这个方法提供一个固定在底部,且固定高度且水平居中的bannerAd,此方法不需要再手动监听OnResize事件调整位置了
/// </summary>
/// <param name="adUnitId">广告单元 id</param>
/// <param name="adIntervals">广告自动刷新的间隔时间单位为秒参数值必须大于等于30该参数不传入时 Banner 广告不会自动刷新)</param>
/// <param name="height">要固定的高度</param>
/// <returns>对banner广告做操作的对象详见 https://developers.weixin.qq.com/minigame/dev/api/ad/BannerAd.html </returns>
public static WXBannerAd CreateFixedBottomMiddleBannerAd(string adUnitId, int adIntervals, int height)
{
return WXSDKManagerHandler.Instance.CreateFixedBottomMiddleBannerAd(adUnitId, adIntervals, height);
}
/// <summary>
/// 激励视频广告 详细参见 https://developers.weixin.qq.com/minigame/dev/guide/open-ability/ad/rewarded-video-ad.html
/// </summary>
/// <param name="param"></param>
/// <returns>广告操作对象https://developers.weixin.qq.com/minigame/dev/api/ad/RewardedVideoAd.html </returns>
public static WXRewardedVideoAd CreateRewardedVideoAd(WXCreateRewardedVideoAdParam param)
{
return WXSDKManagerHandler.Instance.CreateRewardedVideoAd(param);
}
/// <summary>
/// 创建插屏广告组件 详细参见 https://developers.weixin.qq.com/minigame/dev/api/ad/wx.createInterstitialAd.html
/// </summary>
/// <param name="param"></param>
/// <returns>广告操作对象https://developers.weixin.qq.com/minigame/dev/api/ad/InterstitialAd.html </returns>
public static WXInterstitialAd CreateInterstitialAd(WXCreateInterstitialAdParam param)
{
return WXSDKManagerHandler.Instance.CreateInterstitialAd(param);
}
/// <summary>
/// Grid 广告 详细参见 https://developers.weixin.qq.com/minigame/dev/guide/open-ability/ad/grid-ad.html
/// </summary>
/// <param name="param">详细参见 https://developers.weixin.qq.com/minigame/dev/api/ad/wx.createGridAd.html </param>
/// <returns>广告操作对象https://developers.weixin.qq.com/minigame/dev/api/ad/GridAd.html </returns>
public static WXGridAd CreateGridAd(WXCreateGridAdParam param)
{
return WXSDKManagerHandler.Instance.CreateGridAd(param);
}
/// <summary>
/// 创建原生模板广告组件 详细参见 https://developers.weixin.qq.com/minigame/dev/api/ad/wx.createCustomAd.html
/// </summary>
/// <param name="param"></param>
/// <returns>广告操作对象https://developers.weixin.qq.com/minigame/dev/api/ad/CustomAd.html </returns>
public static WXCustomAd CreateCustomAd(WXCreateCustomAdParam param)
{
return WXSDKManagerHandler.Instance.CreateCustomAd(param);
}
#endregion
#region
/// <summary>
/// 获取全局唯一的文件管理器 详见 https://developers.weixin.qq.com/minigame/dev/guide/base-ability/file-system.html
/// </summary>
/// <returns>返回数据详见https://developers.weixin.qq.com/minigame/dev/api/file/wx.getFileSystemManager.html </returns>
/// <example>
/// // 在本地用户文件目录下创建一个文件 share.jpg,文件名可以自己随便取,写入内容为图片二进制内容 bytes
/// var fs = WX.GetFileSystemManager();
/// fs.WriteFileSync(WX.env.USER_DATA_PATH+"/share.jpg", bytes);
/// </example>
public static WXFileSystemManager GetFileSystemManager()
{
return new WXFileSystemManager();
}
#endregion
#region
/// <summary>
/// 获取开放数据域,关系链相关可以参看 https://developers.weixin.qq.com/minigame/dev/guide/open-ability/open-data.html
/// </summary>
/// <returns>开放数据域对象</returns>
public static WXOpenDataContext GetOpenDataContext()
{
return new WXOpenDataContext();
}
/// <summary>
/// 展示开放数据域
/// </summary>
/// <param name="texture">用来占位的纹理前端绘制的开放域数据会自动替换这一纹理因为客户顿纹理映射倒立问题这一纹理请设置rotationX为180才能正常展示。</param>
/// <param name="x">占位对应屏幕左上角横坐标</param>
/// <param name="y">占位对应屏幕左上角纵坐标注意左上角为00</param>
/// <param name="width">占位对应的宽度</param>
/// <param name="height">占位对应的高度</param>
public static void ShowOpenData(Texture texture, int x, int y, int width, int height)
{
WXSDKManagerHandler.Instance.ShowOpenData(texture, x, y, width, height);
}
/// <summary>
/// 关闭开放数据域
/// </summary>
public static void HideOpenData()
{
WXSDKManagerHandler.Instance.HideOpenData();
}
#endregion
#region
/// <summary>
/// InnerAudioContext 实例,可通过 WX.CreateInnerAudioContext 接口获取实例。注意,音频播放过程中,可能被系统中断,可通过 WX.OnAudioInterruptionBegin、WX.OnAudioInterruptionEnd事件来处理这种情况。详见https://developers.weixin.qq.com/minigame/dev/api/media/audio/InnerAudioContext.html
/// </summary>
/// <example>
//var music = WX.CreateInnerAudioContext(new InnerAudioContextParam() {
// src = "Assets/Audio/Chill_1.wav",
// needDownload = true //表示等下载完之后再播放,便于后续复用,无延迟
//});
//music.OnCanplay(() =>
//{
// Debug.Log("OnCanplay");
// music.Play();
//});
/// </example>
public static WXInnerAudioContext CreateInnerAudioContext(InnerAudioContextParam param = null)
{
return WXSDKManagerHandler.Instance.CreateInnerAudioContext(param);
}
/// <summary>
/// 音频为网络请求,可能会有延迟,所以可以先调用这个接口预先下载音频缓存到本地,避免延迟
/// </summary>
/// <param name="pathList">音频的地址数组,如 { "Assets/Audio/0.wav", "Assets/Audio/1.wav" } </param>
/// <param name="action">全部音频下载完成后回调返回码为0表示下载完成</param>
///<example>
/// string[] a = { "Assets/Audio/0.wav", "Assets/Audio/1.wav" };
// WX.PreDownloadAudios(a, (code) =>
// {
// Debug.Log("Downloaded" + code);
// if (code == 0)
// {
// var music0 = WX.CreateInnerAudioContext(new InnerAudioContextParam()
// {
// src = "Assets/Audio/0.wav"
// });
// music0.Play();
// var music1 = WX.CreateInnerAudioContext(new InnerAudioContextParam()
// {
// src = "Assets/Audio/1.wav"
// });
// music1.Play();
// }
//});
/// </example>
public static void PreDownloadAudios(string[] pathList, Action<int> action)
{
WXSDKManagerHandler.Instance.PreDownloadAudios(pathList, action);
}
#endregion
/// <summary>
/// 创建视频,详见 https://developers.weixin.qq.com/minigame/dev/api/media/video/wx.createVideo.html
/// </summary>
/// <param name="param"></param>
/// <returns></returns>
#region
public static WXVideo CreateVideo(WXCreateVideoParam param) {
return WXSDKManagerHandler.Instance.CreateVideo(param);
}
/// <summary>
/// 适合几秒d短音频播放
/// </summary>
public static WXShortAudioPlayer ShortAudioPlayer = WXShortAudioPlayer.Instance;
#endregion
#region
/// <summary>
/// 获取当前UnityHeap总内存(峰值)
/// </summary>
public static uint GetTotalMemorySize()
{
return WXSDKManagerHandler.Instance.GetTotalMemorySize();
}
/// <summary>
/// 获取当前UnityHeap Stack大小
/// </summary>
public static uint GetTotalStackSize()
{
return WXSDKManagerHandler.Instance.GetTotalStackSize();
}
/// <summary>
/// 获取当前UnityHeap静态内存
/// </summary>
public static uint GetStaticMemorySize()
{
return WXSDKManagerHandler.Instance.GetStaticMemorySize();
}
/// <summary>
/// 获取当前UnityHeap动态内存
/// </summary>
public static uint GetDynamicMemorySize()
{
return WXSDKManagerHandler.Instance.GetDynamicMemorySize();
}
/// <summary>
/// 获取当前UnityHeap动态内存
/// </summary>
public static uint GetUsedMemorySize()
{
return WXSDKManagerHandler.Instance.GetUsedMemorySize();
}
/// <summary>
/// 获取当前UnityHeap动态内存
/// </summary>
public static uint GetUnAllocatedMemorySize()
{
return WXSDKManagerHandler.Instance.GetUnAllocatedMemorySize();
}
/// <summary>
/// 打印UnityHeap内存
/// </summary>
public static void LogUnityHeapMem()
{
WXSDKManagerHandler.Instance.LogUnityHeapMem();
}
/// <summary>
/// 打开性能面板
/// </summary>
public static void OpenProfileStats()
{
WXSDKManagerHandler.Instance.OpenProfileStats();
}
#endregion
#region
/// <summary>
/// 写 debug 日志,同 https://developers.weixin.qq.com/minigame/dev/api/base/debug/LogManager.debug.html
/// </summary>
/// <param name="str"></param>
public static void LogManagerDebug(string str) {
WXSDKManagerHandler.Instance.LogManagerDebug(str);
}
/// <summary>
/// 写 info 日志,同 https://developers.weixin.qq.com/minigame/dev/api/base/debug/LogManager.info.html
/// </summary>
/// <param name="str"></param>
public static void LogManagerInfo(string str)
{
WXSDKManagerHandler.Instance.LogManagerInfo(str);
}
/// <summary>
/// 写 log 日志,同 https://developers.weixin.qq.com/minigame/dev/api/base/debug/LogManager.log.html
/// </summary>
/// <param name="str"></param>
public static void LogManagerLog(string str)
{
WXSDKManagerHandler.Instance.LogManagerLog(str);
}
/// <summary>
/// 写 warn 日志,同 https://developers.weixin.qq.com/minigame/dev/api/base/debug/LogManager.warn.html
/// </summary>
/// <param name="str"></param>
public static void LogManagerWarn(string str)
{
WXSDKManagerHandler.Instance.LogManagerWarn(str);
}
#endregion
#region
/// <summary>
/// 是否小游戏云测试环境
/// </summary>
public static bool IsCloudTest()
{
return WXSDKManagerHandler.Instance.IsCloudTest();
}
#endregion
#region
/// <summary>
/// 游戏异常时,使用本接口清理资源缓存
/// </summary>
public static void CleanAllFileCache(Action<bool> action = null)
{
WXSDKManagerHandler.Instance.CleanAllFileCache(action);
}
/// <summary>
/// 当空间不足时,清理指定大小缓存,按文件最近访问时间排序
/// </summary>
/// <param name="fileSize">需要清理的文件大小单位bytes</param>
public static void CleanFileCache(int fileSize, Action<ReleaseResult> action = null)
{
WXSDKManagerHandler.Instance.CleanFileCache(fileSize, action);
}
/// <summary>
/// 删除指定文件
/// </summary>
/// <param name="path">需要清理的文件路径支持完整路径也支持StreamingAssets/filepath格式</param>
public static void RemoveFile(string path, Action<bool> action = null)
{
WXSDKManagerHandler.Instance.RemoveFile(path, action);
}
#endregion
/// <summary>
/// 获取启动loader的启动数据
/// </summary>
/// <param name="action"></param>
public static void OnLaunchProgress(Action<LaunchEvent> action = null)
{
WXSDKManagerHandler.Instance.OnLaunchProgress(action);
}
public static void UncaughtException()
{
WXSDKManagerHandler.Instance.UncaughtException();
}
#region
/// <summary>
/// 创建游戏圈按钮,详见 https://developers.weixin.qq.com/minigame/dev/api/open-api/game-club/wx.createGameClubButton.html
/// </summary>
/// <param name="param"></param>
public static WXGameClubButton CreateGameClubButton(WXCreateGameClubButtonParam param)
{
return WXSDKManagerHandler.Instance.CreateGameClubButton(param);
}
#endregion
#region UDP
public static int CreateUDPSocket(string ip, int remotePort, int bindPort = 0)
{
return WXSDKManagerHandler.Instance.CreateUDPSocket(ip, remotePort, bindPort);
}
public static void CloseUDPSocket(int socketId)
{
WXSDKManagerHandler.Instance.CloseUDPSocket(socketId);
}
public static void SendUDPSocket(int socketId, byte[] buffer, int offset, int length)
{
WXSDKManagerHandler.Instance.SendUDPSocket(socketId, buffer, offset, length);
}
#endregion
}
}