Skip to content

Latest commit

 

History

History
281 lines (200 loc) · 8.78 KB

README.md

File metadata and controls

281 lines (200 loc) · 8.78 KB

Tencent Chat Logo

Tencent Cloud Unity UIKit

使用腾讯云 IM Unity UIKit,快速搭建游戏聊天场景。



简介

Tencent Cloud IM Unity UIKit 是基于Tencent Cloud IM Chat SDK实现的游戏场景业务 UI 组件库。目前包含了会话 (Conversation)聊天 (Chat)组件,收发文字消息、收发表情包消息、自定义表情包等功能。

快速开始

前置条件

  • 注册腾讯云账号并完成身份验证
  • 参照创建并升级应用 创建应用,并记录好 SDKAppID
  • IM 控制台 选择您的应用,在左侧导航栏依次点击 辅助工具->UserSig 生成&校验 ,创建 UserID 及其对应的 UserSig,复制UserID签名(Key)UserSig这三个,后续登录时会用到。

导入 Package

  • 创建/启动已存在的 Unity 项目。
  • Packages/manifest.json 文件中的 dependencies 下添加:
      {
        "dependencies":{
          "com.tencent.imsdk.unity":"https://github.com/TencentCloud/chat-sdk-unity.git#unity"
        }
      }
  • 下载 项目 目录下的 chat-uikit-unity.unitypackage,并导入资源包。

步骤 1: 初始化并登录 IM

初始化并登录 IM 有两种方式:

  • 组件外部: 整个应用初始化并登录一次即可。
  • 组件内部: 通过配置的方式将参数传入组件内部。建议您使用内部登录,UIKit 已帮您绑定了相应的事件回调,包括接收新消息的事件以及会话列表更新的事件。

组件外部

在您创建的 Unity 项目中初始化 IM, 注意 IM 应用只需初始化一次即可。如若在现有 IM 项目中集成可跳过该步骤。

public static void Init() {
        int sdkappid = 0; // 从即时通信 IM 控制台获取应用 SDKAppID。
        SdkConfig sdkConfig = new SdkConfig();

        sdkConfig.sdk_config_config_file_path = Application.persistentDataPath + "/TIM-Config";

        sdkConfig.sdk_config_log_file_path = Application.persistentDataPath + "/TIM-Log"; // 设置本地日志地址

        TIMResult res = TencentIMSDK.Init(long.Parse(sdkappid), sdkConfig);
}

public static void Login() {
  if (userid == "" || user_sig == "")
  {
      return;
  }
  TIMResult res = TencentIMSDK.Login(userid, user_sig, (int code, string desc, string json_param, string user_data)=>{
    // 处理登录回调逻辑
  });
组件内部(推荐)

您也可将SDKAppIDUserSigUserID通过配置的方式传入组件内部进行 IM 的初始化和登录。

using com.tencent.imsdk.unity.uikit;

public static void Init() {
  Core.SetConfig(sdkappid, userId, sdkUserSig);
  Core.Init();
  Core.Login();
}

步骤 2: 导入表情包(可选)

Tencent Cloud IM Unity UIKit 目前提供文字和表情包的发送和渲染。您需要提前导入使用到的表情包。

  1. Assets/Resources 文件夹内导入所用的表情包图片

  2. 更改图片的 Texture TypeSprite (2D and UI),并根据图片尺寸修改 Pixels Per Unit

  3. 定义相应的表情包数据
       // 生成表情包列表,StickerPackage 为一组表情包
       List<StickerPackage> stickers = new List<StickerPackage> {
       new StickerPackage {
         name = "4350",
         baseUrl = "custom_sticker_resource/4350", //Resource 文件夹内相对路径
         menuItem = new StickerItem { // 表情栏表情项目
           name = "menu@2x",
           index = 0,
         },
         stickerList = new List<StickerItem> { // 表情包项目组
           new StickerItem { // 具体表情包数据
           name = "menu@2x",
           index = 0 // 表情包顺序
         },
         }
       }
     };
  4. 注册表情包给 UIKit
    using com.tencent.imsdk.unity.uikit;
    
       Core.SetStickerPackageList(Config.stickers);

步骤 3: 使用 Conversation 和 Chat 预制件

在场景内引用预制件 ChatPanelConversationPanel 并调整相应 layout

在 Script 里执行 SetConfig, Init 以及 Login

    using com.tencent.imsdk.unity.uikit;

      Core.SetConfig(sdkappid, userid, sdkusersig); // 设置sdk账号信息
      Core.Init();
      Core.Login((params string[] args) => {
        // 处理Login回调
      });

预制件说明

您可以通过修改预制件的样式来改造自己项目的样式,目前提供以下预制件:

  1. ChatPanel: 包含消息展示区 MessageContent, 输入操作区 ActionPanel 以及表情包区 OverlayPanel

  2. ConversationPanel: 包含会话列表头区 ConversationHeaderPanel 以及会话列表展示区 ConversationListPanel

  3. MessageItem, MessageItemSelf, StickerMessageItem, StickerMessageItemSelf, TimeStamp 为消息组件,分别代表:他人发送文本消息类型,自己发送文本消息类型,他人发送表情消息类型,自己发送表情消息类型和时间戳消息类型
  4. ConversationItem 为会话列表项
  5. MenuItem, StickerItem 代表表情栏表情项目和表情项目

API 文档

SetConfig

在 Init 前传入 Config 信息,包括 sdkappid, userid 以及 usersig

   using com.tencent.imsdk.unity.uikit;

      Core.SetConfig(sdkappid, userid, usersig);

Init

采用 UIKit 提供的 Init 方法来初始化 SDK,会自动绑定 AddRecvNewMsgCallbackSetConvEventCallback 回调。

   using com.tencent.imsdk.unity.uikit;

      Core.Init();

SetStickerPackageList

通过 SetStickerPackageList 设定表情包列表。

   using com.tencent.imsdk.unity.uikit;

      Core.SetStickerPackageList(Config.stickers);

Login

通过 Login 登录账号,登录完成后执行绑定的回调函数。

   using com.tencent.imsdk.unity.uikit;

      Core.Login((params string[] args) => {
        // 处理Login回调
      });

SetMessageList

添加某个会话的消息列表,处理后合并到当前会话消息字典里,并触发 OnMsgListChanged 事件。

   using com.tencent.imsdk.unity.uikit;

      Core.SetMessageList(currentConvID, newMsgList, isFinished);

SetCurrentConv

设置当前选中的会话,并触发 OnCurrentConvChanged 事件。

   using com.tencent.imsdk.unity.uikit;

      Core.SetMessageList(convID, convType);

SetCurrentStickerIndex

设置当前选中的表情包组,并触发 OnCurrentStickerIndexChanged 事件。

   using com.tencent.imsdk.unity.uikit;

      Core.SetMessageList(stickerIndex);

Logout

登出,并清空数据。

   using com.tencent.imsdk.unity.uikit;

      Core.Logout((string[] parameters) => {
        // 处理Logout回调
      });

TencentIMSDK

Unity TencentIMSDK 提供了基于 Unity 平台的全面的即时通信能力。您可以使用 TencentIMSDK 来获取其他即时通信的相关功能。例如通过 TencentIMSDK 来获取用户资料

using com.tencent.imsdk.unity;

    // 获取个人资料
    FriendShipGetProfileListParam param = new FriendShipGetProfileListParam
    {
      friendship_getprofilelist_param_identifier_array = new List<string>
      {
        "self_userid"
      }
    };

    TIMResult res = TencentIMSDK.ProfileGetUserProfileList(param, (int code, string desc, List<UserProfile> profile, string user_data)=>{
      // 处理异步逻辑
    });

交流与反馈

如果您在接入使用过程中有任何疑问,请扫码加入微信群,或加入QQ群:764231117 咨询。