Unity微信小游戏接入开放数据域

server/2024/12/28 8:53:41/

demo地址:https://github.com/wechat-miniprogram/minigame-unity-webgl-transform/tree/main/Demo/Ranking
官方说明: https://github.com/wechat-miniprogram/minigame-unity-webgl-transform/blob/main/Design/OpenData.md

  1. 准备一个Canvas,保证其渲染模式为:Overlay
    在这里插入图片描述

  2. Canvas中创建一个RawImage,用于确定开放数据域渲染的范围。rotation x = 180
    在这里插入图片描述

  3. 初始化数据域

    private static WeChatWASM.WXOpenDataContext _openDataContext = null;
    public static void InitOpenDataContext()
    {// 初始化开放数据域openDataContext??= WeChatWASM.WX.GetOpenDataContext(new WeChatWASM.OpenDataContextOption{sharedCanvasMode = WeChatWASM.CanvasType.ScreenCanvas});
    }
    
  4. 打开数据域渲染

    void ShowOpenData()
    {RankMask.SetActive(true);RankingBox.SetActive(true);// // 注意这里传x,y,width,height是为了点击区域能正确点击,x,y 是距离屏幕左上角的距离,宽度传 (int)RankBody.rectTransform.rect.width是在canvas的UI Scale Mode为 Constant Pixel Size的情况下设置的。/*** 如果父元素占满整个窗口的话,pivot 设置为(0,0),rotation设置为180,则左上角就是离屏幕的距离* 注意这里传x,y,width,height是为了点击区域能正确点击,因为开放数据域并不是使用 Unity 进行渲染而是可以选择任意第三方渲染引擎* 所以开放数据域名要正确处理好事件处理,就需要明确告诉开放数据域,排行榜所在的纹理绘制在屏幕中的物理坐标系* 比如 iPhone Xs Max 的物理尺寸是 414 * 896,如果排行榜被绘制在屏幕中央且物理尺寸为 200 * 200,那么这里的 x,y,width,height应当是 107,348,200,200* x,y 是距离屏幕左上角的距离,宽度传 (int)RankBody.rectTransform.rect.width是在canvas的UI Scale Mode为 Constant Pixel Size的情况下设置的* 如果是Scale With Screen Size,且设置为以宽度作为缩放,则要这要做一下换算,比如canavs宽度为960,rawImage设置为200 则需要根据 referenceResolution 做一些换算* 不过不管是什么屏幕适配模式,这里的目的就是为了算出 RawImage 在屏幕中绝对的位置和尺寸*/CanvasScaler scaler = gameObject.GetComponent<CanvasScaler>();var referenceResolution = scaler.referenceResolution;var p = RankBody.transform.position;WX.ShowOpenData(RankBody.texture, (int)p.x, Screen.height - (int)p.y, (int)((Screen.width / referenceResolution.x) * RankBody.rectTransform.rect.width), (int)((Screen.width / referenceResolution.x) * RankBody.rectTransform.rect.height));
    }
    
  5. 向数据域发送消息

    OpenDataMessage msgData = new OpenDataMessage();
    msgData.type = "showFriendsRank";string msg = JsonUtility.ToJson(msgData);
    openDataContext.PostMessage(msg);
    
  6. 开放数据域解析并处理消息

    	function main() {wx.onMessage((data) => {console.log('[WX OpenData] onMessage', data);if (typeof data === 'string') {try {// eslint-disable-next-line no-param-reassigndata = JSON.parse(data);}catch (e) {console.error('[WX OpenData] onMessage data is not a object');return;}}switch (data.type) {// 来自 WX Unity SDK 的信息case 'WXRender':initOpenDataCanvas(data);break;// 来自 WX Unity SDK 的信息case 'WXDestroy':Layout.clearAll();break;// 下面为业务自定义消息case 'showFriendsRank':renderFriendsRank(data.rankKey, data.strTag);break;case 'showGroupFriendsRank':renderGroupFriendsRank(data.shareTicket, data.rankKey, data.strTag);break;default:console.error(`[WX OpenData] onMessage type 「${data.type}」 is not supported`);break;}});
    }
    
  7. 修改HTML格式,渲染开放数据域UI


http://www.ppmy.cn/server/153864.html

相关文章

微信小程序原生,tdesign时间选择器,t-date-time-picker封装成组件,开始时间结束时间

1. 首先&#xff0c;在项目的 components 目录下创建一个新的文件夹&#xff0c;例如 date-picker&#xff0c;并在其中创建以下文件&#xff1a; date-picker.wxmldate-picker.wxssdate-picker.jsdate-picker.json 2.date-picker.wxml <view class"date-picker"…

基于STM32的智能花园灌溉系统设计

目录 引言系统设计 硬件设计软件设计系统功能模块 土壤湿度检测模块灌溉控制模块显示模块系统实现 硬件实现软件实现系统调试与优化结论与展望 1. 引言 随着智能家居和物联网技术的发展&#xff0c;智能花园灌溉系统逐渐成为现代家庭和农业中不可或缺的一部分。传统的灌溉方式…

Bash 脚本教程

注&#xff1a;本文为 “Bash 脚本编写” 相关文章合辑。 BASH 脚本编写教程 as good as well于 2017-08-04 22:04:28 发布 这里有个老 American 写的 BASH 脚本编写教程&#xff0c;非常不错&#xff0c;至少没接触过 BASH 的也能看懂&#xff01; 建立一个脚本 Linux 中有…

Vue零基础教程|从前端框架到GIS开发系列课程(七)响应式系统介绍

前文指路&#xff1a;《Vue零基础教程》&#xff0c;从前端框架到GIS开发系列课程 Vue零基础教程|从前端框架到GIS开发系列课程&#xff08;二&#xff09; Vue零基础教程|从前端框架到GIS开发系列课程&#xff08;三&#xff09;模板语法 Vue零基础教程|从前端框架到GIS开发…

阿尔萨斯(JVisualVM)JVM监控工具

文章目录 前言阿尔萨斯(JVisualVM)JVM监控工具1. 阿尔萨斯的功能2. JVisualVM启动3. 使用 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&#xff…

【ES6复习笔记】Spread 扩展运算符(8)

在现代前端开发中&#xff0c;JavaScript 的扩展运算符&#xff08;Spread Operator&#xff09;是一个非常有用的特性&#xff0c;它允许你将数组或对象展开&#xff0c;以便在函数调用、数组拼接、对象复制等场景中更方便地处理数据。扩展运算符&#xff08;spread&#xff0…

搭建ORB-SLAM3编译环境

Pangolin git clone https://gitclone.com/github.com/stevenlovegrove/Pangolin sudo apt-get install libxkbcommon-dev sudo apt-get install wayland-protocols sudo apt install libglew-dev cd Pangolin mkdir build cd build cmake … make -j sudo make install 2、安…

#渗透测试#漏洞利用#红蓝攻防#信息泄露漏洞#Swagger信息泄露漏洞的利用

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…