Skip to content

TencentCloud/chat-uikit-unity

Repository files navigation


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 咨询。

About

腾讯云即时通信 Unity 版本 UIKit

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published