【Unity100个实用小技巧】Unity接入微信SDK

本文详细描述了如何在Unity中实现微信小游戏排行榜的接入,涉及微信转小游戏设置、Layout引擎的理解、ShowOpenData函数的使用以及用户头像框和按钮位置的计算,为开发者提供了解决疑惑的关键步骤。
摘要由CSDN通过智能技术生成

前言

为了实现Unity接入微信排行榜,记录一下,为了以后用,本篇文章是对于使用中的一些疑惑点记录。完整流程官方和下面链接都有,补充一些,其他文档中未提到的。

步骤

必要步骤

一. 微信转小游戏

勾选 【使用好友关系链】

在这里插入图片描述

二. 看下方第一个其他大佬的链接

三.开放数据域

  1. 简单理解:就是下方open-data里的东西,也是【Layout】引擎的内容,该引擎有一套自己的语法规范,理解为HTML的变种,具体文档看下面的文档
  2. 关于榜单样式的修改,结果是:列表里的item是Layout写的,不是使用Unity制作的,页面里其他的内容是使用Unity做的(离谱)

在这里插入图片描述

四.注意事项

1.关于ShowOpenData计算
public static void ShowWxOpenData(RawImage img, Vector3 pos)
{
    //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;

    //720 / 1280 = Screen.width / x   x = 

    float h = (float)Screen.height * 720 / Screen.width;
    float delta = Screen.height - h;
    float y = (h - (pos.y - delta) /*- (buttonPosition.rect.height / 2)*/);
    float tensileWidth = (((float)Screen.width / 720) * img.rectTransform.rect.width);
    float tensileHeight = (((float)Screen.height / h) * img.rectTransform.rect.height);
    WX.ShowOpenData(img.texture, (int)pos.x, (int)y, (int)tensileWidth, (int)tensileHeight); //高 值变小 拉伸    小拉伸 所以 宽 大点  或者 高小点
    ShowFriendsRank();
}
2. 用户获取头像框,button计算(做参考)
public BtnRegionInfo GetWXBtnInfo()
{
    float h = Screen.height * 720 / Screen.width;
    float delta = Screen.height - h;
    RectTransform buttonPosition = m_Button.GetComponent<RectTransform>();
    int x = (int)(buttonPosition.position.x /*- (buttonPosition.rect.width / 2)*/);
    int y = (int)(h - (buttonPosition.position.y - delta) /*- (buttonPosition.rect.height / 2)*/);
    return new BtnRegionInfo(x, y, (int)buttonPosition.rect.width, (int)buttonPosition.rect.height);
}
3.对于只接微信排行榜的,下列非必要

在这里插入图片描述

引用链接

其他大佬的文档链接
官方排行榜项目
开放数据域文档
Layout引擎

Unity接入微信小游戏登录SDK需要进行以下步骤: 1. 下载微信小游戏登录SDK:首先,从微信开放平台下载微信小游戏登录SDKUnity插件,该插件包含了与微信小游戏服务器通信所需的脚本和配置文件。 2. 导入SDK插件:打开Unity项目,在Assets菜单中选择“Import Package” -> “Custom Package”,选择刚下载的微信小游戏登录SDK插件进行导入。 3. 配置游戏参数:在Unity编辑器中,在“Project”视图下找到WXEntryMenu,并打开进行配置。在配置中,要填写自己的微信小游戏AppID和AppSecret等参数。 4. 创建登录按钮:在Unity场景中,创建一个按钮对象,并添加一个脚本用于处理微信小游戏登录逻辑。在该脚本的代码中,调用微信小游戏登录SDK的接口,实现登录功能。 5. 处理登录回调:微信小游戏登录SDK提供了登录结果回调函数,开发者需要在自己的脚本中进行处理。根据回调结果,可以获取到用户的openid、unionid等信息,进一步进行后续操作。 6. 测试登录功能:在Unity编辑器中,点击运行按钮,启动游戏。在游戏中点击登录按钮,会调起微信小游戏客户端进行登录。登录成功后,可以获取到用户的登录信息,并进行相应的游戏逻辑处理。 以上就是Unity接入微信小游戏登录SDK的基本步骤。开发者按照这些步骤进行操作,即可实现微信小游戏的登录功能,并在游戏中使用微信登录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是小狼君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值