游密十周年 · 开发指引

按游戏类型查看
开发接入指引

选择游戏类型,查看对应指引步骤;完成后可将步骤标记为完成。

DEVELOPER GUIDE

游戏接入指引

选择游戏类型,查看对应的开发指引步骤。

按步骤接入

DEVELOPER GUIDE · massivelyMultiplayerOnline

MMO 游戏 开发指引

选择左侧步骤,查看接入说明与示例代码。

0 / 13 已完成
MMO 游戏 游戏画面
本地指南 · MMO 游戏从服务开通到功能接入选择左侧目录,逐步完成开发接入
YOUME GAME SDK
01
MMO 游戏 / STEP 01

准备-开通服务

Step1. 注册账号

在游密官网注册游密账号。

Step2. 添加游戏

在控制台添加游戏,获得接入需要的Appkey、Appsecret。

Step3. 获取SDK包

根据游戏使用的游戏引擎与开发语言,联系游密科技获取对应的SDK包体。

Step4. 集成SDK包

以Unity SDK为例,把sdk包放置在Unity工程的Assets目录下即可。

02
MMO 游戏 / STEP 02

实时语音-加入语音频道

Step1. 初始化语音SDK

先设置sdk回调对象:

C#
//注册回调
YouMe.YouMeVoiceAPI.GetInstance().SetCallback(gameObject.name);

调用sdk初始化方法,通过回调YOUME_EVENT_INIT_OK异步通知初始化结果。

C#
// 初始化,填入从游密申请到的AppKey和AppSecret(可在游密官网https://console.youme.im/user/register注册账号或者直接联系我方商务获取)
var errorCode = YouMe.YouMeVoiceAPI.GetInstance().Init(
    appkey, // 您获取的AppKey
    appSecret, // 您获取的AppSecret
    YouMe.YOUME_RTC_SERVER_REGION.RTC_DEFAULT_SERVER,      "");

对应sdk回调处理:

C#
// 回调函数
void OnEvent(string strParam)
{
    string[] strSections = strParam.Split(new char[] { ',' });
    //解析后得到两个字段,第一个为事件类型,第二个为错误码类型
    YouMe.YouMeEvent eventType = (YouMeEvent)int.Parse(strSections[0]);
    YouMe.YouMeErrorCode errorCode = (YouMeErrorCode)int.Parse(strSections[1]);
    string channelID = strSections[2];
    string param = strSections[3];
    switch (eventType) {
        case YouMe.YouMeEvent.YOUME_EVENT_INIT_OK:
        break;
        case YouMe.YouMeEvent.YOUME_EVENT_INIT_FAILED:
        break;
    }
}

Step2. 加入语音频道

用户在游戏内加入组队模式时,可以调用JoinChannelSingleModeI创建或加入单个语音频道,并根据实际游戏语音场景选择用户角色选项。(建议应用预先检查分配麦克风权限,这是正常使用语音功能的必备前置条件)

C#
// 加入频道
var errorCode = YouMe.YouMeVoiceAPI.GetInstance().JoinChannelSingleMode(userID, roomID, YouMe.YouMeUserRole.YOUME_USER_LISTENER);
//其中YOUME_USER_LISTENER选项表示听众。
//可选的角色选项
YOUME_USER_NONE = 0,            ///< 非法用户,调用API时不能传此参数
YOUME_USER_TALKER_FREE,         ///< 自由讲话者,适用于小组通话(建议小组成员数最多10个),每个人都可以随时讲话, 同一个时刻只能在一个语音频道里面
YOUME_USER_TALKER_ON_DEMAND,    ///< 需要通过抢麦等请求麦克风权限之后才可以讲话,适用于较大的组或工会等(比如几十个人),同一个时刻只能有一个或几个人能讲话, 同一个时刻只能在一个语音频道里面
YOUME_USER_LISTENER,            ///< 听众,主播/指挥/嘉宾的听众,同一个时刻只能在一个语音频道里面,只听不讲
YOUME_USER_COMMANDER,           ///< 指挥,国家/帮派等的指挥官,同一个时刻只能在一个语音频道里面,可以随时讲话,可以播放背景音乐,戴耳机情况下可以监听自己语音
YOUME_USER_HOST,                ///< 主播,广播型语音频道的主持人,同一个时刻只能在一个语音频道里面,可以随时讲话,可以播放背景音乐,戴耳机情况下可以监听自己语音
YOUME_USER_GUSET,               ///< 嘉宾,主播或指挥邀请的连麦嘉宾,同一个时刻只能在一个语音频道里面, 可以随时讲话

加入房间成功后会异步收到YOUME_EVENT_JOIN_OK事件。

C#
//回调函数
void OnEvent(string strParam)
{	
	 string[] strSections = strParam.Split(new char[] { ',' });
	 if (strSections == null){
		 return;
	 }
	 //解析后得到两个字段,第一个为事件类型,第二个为错误码类型
	 YouMe.YouMeEvent eventType = (YouMeEvent)int.Parse(strSections[0]);
	 YouMe.YouMeErrorCode errorCode = (YouMeErrorCode)int.Parse(strSections[1]);
	 string channelID = strSections[2];
	 string param = strSections[3];
	 switch (eventType) {
	 case YouMe.YouMeEvent.YOUME_EVENT_JOIN_OK:
		 //如果已调用了离开接口,则无须再等此类回调
		 if (YouMe.ChannelState.CHANNEL_STATE_LEAVING_ALL == state) {
	 		 return;
		 }
		 callbackList.Add(() => {
			 tipsText.text = tipsText.text + "\n加入频道成功";
		 });
		 break;
	 case YouMe.YouMeEvent.YOUME_EVENT_JOIN_FAILED:
		 //进入语音频道失败
		 callbackList.Add(() => {
			 tipsText.text = tipsText.text + "\n加入频道失败,错误码:" + errorCode;
		 });
		 break;
	 }
}

Step3. 退出所有语音频道

用户在游戏内退出组队模式后,需主动退出语音频道以释放设备资源。

C#
// 退出所有频道
var errorCode = YouMe.YouMeVoiceAPI.GetInstance().LeaveChannelAll();

SDK异步完成频道退出后,通过回调YOUME_EVENT_LEAVED_ALL通知操作结果。

C#
void OnEvent(string strParam) {
    switch (eventType) {
        case YouMe.YouMeEvent.YOUME_EVENT_LEAVED_ALL:
    }
}
03
MMO 游戏 / STEP 03

实时语音-多频道通话

多频道模式可以实现游戏内如国家/公会/帮派/队伍等多层次语音通话需求。用户可以同时加入多个语音频道,根据游戏实际语音场景,设置不同角色身份。例如:

-以听众身份加入指挥或帮派频道,不能讲话,只能在频道内收听指挥官或帮主讲话。

-以指挥官身份加入指挥频道,可以在指挥频道内向听众讲话、收听语音。
-以自由讲话者加入小型组队频道,可以在组队频道内讲话、收听语音。

  • 加入语音频道(多频道)

在多频道模式下,用户可以调用JoinChannelMultiMode创建或加入多频道,单个用户可以同时收听多个频道的语音(建议应用预先检查分配麦克风权限,这是正常使用语音功能的必备前置条件)。

C#
// 多频道模式下,加入语音频道
var errorCode = YouMe.YouMeVoiceAPI.GetInstance().JoinChannelMultiMode(userID, roomID, YouMe.YouMeUserRole.YOUME_USER_TALKER_FREE);
//可选的角色选项
YOUME_USER_NONE = 0,            ///< 非法用户,调用API时不能传此参数
YOUME_USER_TALKER_FREE,         ///< 自由讲话者,适用于小组通话(建议小组成员数最多10个),每个人都可以随时讲话, 同一个时刻只能在一个语音频道里面
YOUME_USER_TALKER_ON_DEMAND,    ///< 需要通过抢麦等请求麦克风权限之后才可以讲话,适用于较大的组或工会等(比如几十个人),同一个时刻只能有一个或几个人能讲话, 同一个时刻只能在一个语音频道里面
YOUME_USER_LISTENER,            ///< 听众,主播/指挥/嘉宾的听众,同一个时刻只能在一个语音频道里面,只听不讲
YOUME_USER_COMMANDER,           ///< 指挥,国家/帮派等的指挥官,同一个时刻只能在一个语音频道里面,可以随时讲话,可以播放背景音乐,戴耳机情况下可以监听自己语音
YOUME_USER_HOST,                ///< 主播,广播型语音频道的主持人,同一个时刻只能在一个语音频道里面,可以随时讲话,可以播放背景音乐,戴耳机情况下可以监听自己语音
YOUME_USER_GUSET,               ///< 嘉宾,主播或指挥邀请的连麦嘉宾,同一个时刻只能在一个语音频道里面, 可以随时讲话
  • 指定讲话频道

在多频道模式下,用户可以使用SpeakToChannel指定当前要讲话的频道。单个用户同一时刻只能对其中一个频道说话。

C#
//多频道模式下指定讲话频道。
var errorCode = YouMe.YouMeVoiceAPI.GetInstance().SpeakToChannel(roomID);
  • 退出指定频道

在多频道模式下,用户可以使用LeaveChannelMultiMode退出指定的语音频道。

C#
//多频道模式下,退出指定的语音频道。
var errorCode = YouMe.YouMeVoiceAPI.GetInstance().LeaveChannelMultiMode(roomID);

退出房间后会收到YOUME_EVENT_LEAVED_ONE异步事件。

C#
void OnEvent(string strParam) {
    switch (eventType) {
        case YouMe.YouMeEvent.YOUME_EVENT_LEAVED_ONE:
    }
}
04
MMO 游戏 / STEP 04

实时语音-设备状态管理

SDK默认会开启扬声器和麦克风,也可以在加入频道前或者加入频道后设置设备状态。用户加入同一频道,开启麦克风与扬声器,便可以实现互相语音通话了。

  • 设置麦克风

用户可以调用SetMicrophoneMute接口来打开或者关闭麦克风。这是一个异步接口:

C#
// 打开麦克风,成功后会收到YOUME_EVENT_LOCAL_MIC_ON的事件
YouMe.YouMeVoiceAPI.GetInstance().SetMicrophoneMute(false);
// 关闭麦克风,成功后会收到YOUME_EVENT_LOCAL_MIC_OFF的事件
YouMe.YouMeVoiceAPI.GetInstance().SetMicrophoneMute(true);

SDK也提供了GetMicrophoneMute接口用于获取麦克风当前的开启状态:

C#
// 获取麦克风状态
bool result = YouMe.YouMeVoiceAPI.GetInstance().GetMicrophoneMute();
if(result){
    tipsText.text = "麦克风状态:关";
} else {
    tipsText.text = "麦克风状态:开";
}
  • 设置扬声器

用户可以调用SetSpeakerMute接口来打开或者关闭扬声器。这是一个异步接口:

C#
// 打开扬声器,成功后会收到YOUME_EVENT_LOCAL_SPEAKER_ON事件 
YouMe.YouMeVoiceAPI.GetInstance().SetSpeakerMute(false);
//关闭扬声器,成功后会收到YOUME_EVENT_LOCAL_SPEAKER_OFF事件
YouMe.YouMeVoiceAPI.GetInstance().SetSpeakerMute(true);

SDK也提供了GetSpeakerMute接口用于获取扬声器当前的开启状态:

C#
// 获取扬声器状态
bool result = YouMe.YouMeVoiceAPI.GetInstance().GetSpeakerMute();
if(result){
	 tipsText.text = "扬声器状态:关";
} else {
	 tipsText.text = "扬声器状态:开";
}
  • 设置输出音量大小

用户可以调用SetVolume接口,实时调节输出音量大小。

C#
// 设置输出音量大小为80,音量取值范围是[0-100] ,100表示最大音量
YouMe.YouMeVoiceAPI.GetInstance().SetVolume(80);

SDK也提供了GetVolume接口用于获取当前用户设置的输出音量大小:

C#
// 获取通话音量大小
int curVolume = YouMe.YouMeVoiceAPI.GetInstance().GetVolume();
05
MMO 游戏 / STEP 05

实时语音-语音状态通知(可选)

  • 设置语音检测

用户可以监听频道内所有用户开始说话、结束说话的事件。

C#
// 开启语音检测
YouMe.YouMeVoiceAPI.GetInstance().SetVadCallbackEnabled(true);
// 关闭语音检测
YouMe.YouMeVoiceAPI.GetInstance().SetVadCallbackEnabled(false);

在语音检测开启的状态下,SDK通过事件YOUME_EVENT_OTHERS_VOICE_ON和YOUME_EVENT_OTHERS_VOICE_OFF异步通知用户开始讲话和停止讲话的状态。

  • 设置实时音量监听

用户可以开启本人以及远端用户音量等级实时监听功能。

C#
// 设置本人麦克风音量等级的最大级别。设置成功后用户收到的对应回调事件为 YOUME_EVENT_MY_MIC_LEVEL。
YouMe.YouMeVoiceAPI.GetInstance().SetMicLevelCallback(10);
// 设置单个远端用户和所有远端用户语音混音后音量等级的最大级别。设置成功后用户收到的对应回调事件为 YOUME_EVENT_FAREND_VOICE_LEVEL。
YouMe.YouMeVoiceAPI.GetInstance().SetFarendVoiceLevelCallback(10, 10);

在开启实时音量监听的状态下,SKD通过事件YOUME_EVENT_MY_MIC_LEVEL和YOUME_EVENT_FAREND_VOICE_LEVEL异步通知用户本地以及远端的音量。

06
MMO 游戏 / STEP 06

实时语音-战歌管理(可选)

  • 战歌管理

SDK提供播放音频/战歌功能。加入房间时传入角色参数为主播或指挥时,可以在游戏过程中播放指定的音频文件,播放的音频会与语音混合后发送给接收方。

C#
//播放指定的音频或战歌(主播和指挥角色可用)。播放的音频将会通过扬声器输出,并和语音混合后发送给接收方。建议使用mp3格式的文件。
YouMe.YouMeVoiceAPI.GetInstance().PlayBackgroundMusic (string pFilePath, bool bRepeat);
//停止播放音频或战歌。停止播放当前正在播放的音频。 这是一个同步调用接口,函数返回时,音乐播放也就停止了。
YouMe.YouMeVoiceAPI.GetInstance().StopBackgroundMusic();
//设定音频或战歌的音量。 这是一个同步调用接口。
YouMe.YouMeVoiceAPI.GetInstance().SetBackgroundMusicVolume(50);
07
MMO 游戏 / STEP 07

实时语音-魔法变声(可选)

用户在频道内语音通话时,可以选择使用原声还是魔法变声特效进行通话。在进入频道通话前,用户还可以预先实时试听对本人原声的魔法变声特效效果。

Step1.设置变声管理器回调

在使用变声功能之前,用户需要先设置变声管理器回调,用于接收SDK异步接口执行结果。设置回调的接口为SetCallback。

C#
// 设置变声库回调
YMMagicVoiceMgrApi.GetInstance().SetCallback(this);

以下为变声管理器回调接口定义:

C#
// 变声管理器回调定义
public interface IYMMagicVoiceMgrCallback
{
    void onEvent(YMMagicVoiceEvent evt, YMMagicVoiceErrorCode errorCode, string param);
    void onGetVipInfo(YMMagicVoiceErrorCode errorCode, YMMagicVoiceVipInfo vipInfo);
}

以下为一个游戏对象实现回调监听的示例:

C#
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using YouMe;
// 实现变声库回调接口
public class Demo : MonoBehaviour, IYMMagicVoiceMgrCallback
{
    public void onEvent(YMMagicVoiceEvent evt, YMMagicVoiceErrorCode errorCode, string param)
    {
        Debug.Log($"[onEvent] evt:{evt} errcode:{errorCode} param:{param}");
        switch (evt)
        {
            case YMMagicVoiceEvent.YMMV_EVENT_SETUSERINFO:
                Debug.Log($"设置用户信息成功");
                break;
        }
    }
    public void onGetVipInfo(YMMagicVoiceErrorCode errorCode, YMMagicVoiceVipInfo vipInfo)
    {
        Debug.Log($"[onGetVipInfo] errcode:{errorCode} vipInfo:{vipInfo.StartTime}:{vipInfo.Duration}:{vipInfo.isPayed()}");
    }
}

Step2.校验用户信息

设置完回调后,用户就可以校验变声用户信息了。校验用户信息的接口为SetUserInfo。

这是一个异步接口,变声用户信息校验结果通过 YMMV_EVENT_SETUSERINFO 事件回调进行异步通知,同时用户的VIP信息也会通过 onGetVipInfo 回调方法返回。

C#
// 设置变声库用户信息
YMMagicVoiceMgrApi.GetInstance().SetUserInfo(AppKey, AppSecret, userID, token, nickName);

Step3.获取魔法变声特效列表

在用户通过了变声用户信息验证后,可以获取可用的变声特效列表,使用的接口为GetMagicVoiceEffectInfoList。输出参数包含一组特效信息,每个特效信息包含包含特效id、特效名称、应用性别等信息。

C#
// 获取变声特效列表
var effectList = new List<YMMagicVoiceEffectInfo>();
YMMagicVoiceMgrApi.GetInstance().GetMagicVoiceEffectInfoList(effectList);

Step4.魔法变声试听

在用户加入频道通话前,可以实时试听变声特效,这是需要用户拉取试听变声特效列表,使用的接口为GetPreviewEffectInfoList,输出参数中的特效是可以进行实时试听的。

C#
// 获取试听特效列表
var effectList = new List<YMMagicVoiceEffectInfo>();
YMMagicVoiceMgrApi.GetInstance().GetPreviewEffectInfoList(effectList);

获取试听特效列表后,用户可以启动实时试听功能,调用的接口为StartPreviewMagicVoiceEffect。这是一个异步接口,试听开始的结果通过YMMV_EVENT_START_PREVIEW_MAGIC_VOICE_EFFECT事件异步通知。

C#
// 开始魔法变声实时试听(需应用程序拥有麦克风录音权限)
YMMagicVoiceMgrApi.GetInstance().StartPreviewMagicVoiceEffect();

在试听过程中,用户可以实时切换试听特效,调用的接口为SetPreviewMagicVoiceInfo。

C#
// 设置实时试听特效为520, 特效id从试听特效列表中获取
YMMagicVoiceMgrApi.GetInstance().SetPreviewMagicVoiceInfo(520);
// 设置实时试听特效为0,表示使用原声
YMMagicVoiceMgrApi.GetInstance().SetPreviewMagicVoiceInfo(0);

在试听过程中,用户也可以实时微调特效音色和音调参数,调用的接口为SetPreviewMagicVoiceAdjust。

C#
// 微调实时试听的音色和音调,音色参数微调为-0.5,音调参数微调为0.2
YMMagicVoiceMgrApi.GetInstance().SetPreviewMagicVoiceAdjust(-0.5, 0.2);

用户结束试听需要调用接口StopPreviewMagicVoiceEffect,用来关闭变声引擎、释放麦克风和扬声器。

C#
// 结束实时试听
YMMagicVoiceMgrApi.GetInstance().StopPreviewMagicVoiceEffect();

Step5.设置通话魔法变声开关

用户进入语音频道后,可以选择使用变声特效进行通话。用户必须打开变声开关,并选择有效的变声特效,实时变声才会生效。

设置变声通话开关的接口为SetMagicVoiceEnable。

C#
// 打开魔法变声通话
YouMeVoiceAPI.GetInstance().SetMagicVoiceEnable(true);
// 关闭魔法变声通话
YouMeVoiceAPI.GetInstance().SetMagicVoiceEnable(false);

在频道语音通话过程中,用户可以切换变声特效,对应的接口是SetMagicVoiceInfo。

C#
// 设置魔法变声特效为519(特效id从变声特效列表中获取)
YMMagicVoiceMgrApi.GetInstance().SetMagicVoiceInfo(519);

在频道语音通话过程中,用户也可以切换回原声,对应的接口是ClearMagicVoiceInfo。

C#
// 清除变声特效(还原到原声)
YMMagicVoiceMgrApi.GetInstance().ClearMagicVoiceInfo();

在频道语音通话过程中,用户还可以设置变声特效微调参数,对应的接口是SetMagicVoiceAdjust。

C#
// 微调变声音色和音调参数,音色参数微调为0.2,音调参数微调为-0.8
YMMagicVoiceMgrApi.GetInstance().SetMagicVoiceAdjust(0.2, -0.8);
08
MMO 游戏 / STEP 08

即时通讯-登录

Step1. 初始化IM SDK

1、调用Initialize初始化,appkey、appsecret、分区等参数参见前面Talk SDK介绍。

2、设置关心的事件回调。

C#
IM = IMClient.Instance; 
YouMe.StatusCode code = IM.Initialize (appkey, appSecret, new Config () { ServerZone = ServerZone.China,CachePath ="/TestIMAudioCache/"});
if (code == StatusCode.Success) {
    IM.SetReceiveMessageListener( OnReceiveMessage );// 注册接收新消息的方法
    IM.SetDownloadListener(OnDownload);// 下载监听
    IM.SetDisconnectListener((disconnectEvt)=>{}); // 断线事件监听
    IM.SetKickOffListener((kickoffEvt)=>{ }); // 被踢下线事件监听
    IM.SetReconnectListener(OnReconnect); // 注册重连监听
    IM.SetCancelNoticeListener(OnCancelNotice); // 取消公告监听
    IM.SetOtherUserChannelEventListener(OnOtherUserChannelEvent); // 其它用户进出房间监听
    IM.SetRecvNoticeListener(OnRecvNotice); // 接收公告监听
    IM.SetRecvRecordVolumeListener(OnRecordVolume);// 录音音量值监听
    IM.SetGetCurrentLocationListener(OnGetCurrentLocation); // 获取当前位置监听
    IM.SetAccusationListener(OnAccusationResult); // 举报结果监听
}

Step2:登录/登出

初始化成功后,调用Login登录IM。登录为异步过程,通过回调参数返回是否成功。登录成功后方能进行其他IM操作,实现IM私聊,以及加入群聊进行聊天。

C#
IM.Login(
    "userid",//用户ID,由调用者分配,不可为空,只可由字母、数字或下划线组成
    "password",//登录密码,不可为空字符串,如无特殊要求可以设置为固定字符串
    "",//token 用户验证token,使用服务器token验证模式时使用,如不使用token验证传入:""
    (evt)=>{});

用户若主动结束聊天或退出游戏,可以调用Logout登出IM。登出IM后,不再接受任何私聊或群聊信息。

C#
IM.Logout((evt)=>{});
09
MMO 游戏 / STEP 09

即时通讯-频道管理

  • 加入IM频道

登陆IM后,若需要频道聊天,用户可以调用JoinChannel创建或者加入IM频道,实现频道内的IM聊天。

用户也可以同时加入多个IM频道,实现游戏内如国家/公会/帮派/队伍等多个IM频道聊天需求。

C#
IM.JoinChannel(
    "roomId",
    (channelEvt)=>{
});
  • 退出IM频道

用户可以调用LeaveAllChannel退出IM频道。退出IM频道后,客户端依然可以接收私聊消息。

C#
IM.LeaveAllChannel((channelEvt)=>{});
10
MMO 游戏 / STEP 10

即时通讯-文本消息

Step1. 注册消息回调

1、初始化成功之后,需要先注册接收消息的回调函数。

C#
IM.SetReceiveMessageListener( OnReceiveMessage );

2、在接收消息回调函数中,根据消息类型(文字、语音、自定义、礼物等)处理相应的消息类型。

C#
void OnReceiveMessage (IMMessage msg) {
	if (msg.MessageType == MessageBodyType.Voice) {   //语音消息,转为AudioMessage消息类处理
		var audioMsg = msg as AudioMessage;
		audioMsg.Download ((code, audioMsgObj) => {   });   //如果没有设置自动下载语音文件,需要手动在这里下载
	} else if (msg.MessageType == MessageBodyType.TXT) {   //文本消息,转为TextMessage消息类处理
		var txtMsg = msg as TextMessage;
	} else if (msg.MessageType == MessageBodyType.File) {   //文件消息,转为FileMessage消息类处理
		var fileMsg = msg as FileMessage;
		IMClient.Instance.DownloadFile (fileMsg.RequestID, savepath, (down_code,message,path) => {});   //可以在这里下载文件
	} else if (msg.MessageType == MessageBodyType.Gift) {   //礼物消息,转为GiftMessage消息类处理
		var giftMsg = msg as GiftMessage;
	} else if (msg.MessageType == MessageBodyType.CustomMesssage) {   //自定义消息,转为CustomMessage消息类处理
		var cusMsg = msg as CustomMessage;
	}	
}

Step2. 发送文本消息

发送端可以调用SendTextMessage发送文本消息。该接口为异步接口。

C#
var msg = IM.SendTextMessage(
    receiverID,//接收者id,私聊填用户id,频道聊天填频道id
    ChatType.PrivateChat, //聊天类型,选择私聊或者频道聊天
    msgContent, //文本消息内容
    "", //附带消息
 (code,textMsgObj)=>{ if (code == StatusCode.Success){} } //发送消息结果回调处理
});

接收端在接收消息回调OnReceiveMessage中获取收到的文本消息。

11
MMO 游戏 / STEP 11

即时通讯-自定义消息

用户可以调用SendCustomMessage发送自定义消息。

自定义消息由应用侧定义编解码格式,SDK侧仅负责发送与接收编码后的二进制数据。SDK支持游戏内常见如表情、物品装备、坐标、组队信息、红包等自定义消息。

C#
byte[] customMsg = System.Text.Encoding.UTF8.GetBytes("[/laugh1]");
IM.SendCustomMessage(
    receiverID, // 接收者id,私聊填用户id,频道聊天填频道id
    ChatType.PrivateChat, //私聊消息或频道消息
    customMsg, //自定义消息编码后的数据
    (code,cusMes)=>{ Debug.Log("sendmessage,errorcode"); } //回调处理
});

接收方在接收消息回调函数OnReceiveMessage中提取自定义消息,并根据应用侧定义的解码方式还原自定义消息。

12
MMO 游戏 / STEP 12

即时通讯-礼物消息

用户可以调用SendGift发送礼物消息。发送礼物后,可在游密主播后台查看礼物消息的详细信息和统计信息(联系商务开通)。

C#
IM.SendGift(
    anchorID, // 主播id,可在游密后台设置
    channelID, //主播频道id,可在游密后台设置
    giftId,//礼物id    
    giftCount, //自定义消息编码后的数据
    "" , 附加参数
    (code,giftMes)=>{ Debug.Log("send gift message"); } //回调处理
});

接收方在接收消息回调函数OnReceiveMessage中提取礼物消息。

13
MMO 游戏 / STEP 13

即时通讯-高级功能

  • 文本翻译

用户调用TranslateText,可以将文本翻译成指定语言的文本,并异步返回结果。

C#
IM.TranslateText(
    text, //待翻译文本
    LANG_ZH, //目标语言编码,可查看LanguageCode枚举
    LANG_AUTO, //原语言编码,可查看LanguageCode枚举
    (code,translateText,languagecode,languagecode)=>{ Debug.Log("translateText"); } //文本翻译回调处理
});
  • 敏感词过滤

用户可以调用GetFilterText过滤敏感词。例如,在发送文本前过滤敏感词,当匹配到屏蔽词后,可以选择不发送或者发送替换后的文本。过滤敏感词后,消息中匹配到的敏感词会被替换为" * "。

C#
string filterText = IM.GetFilterText(
    strSource, //消息原文
    level,//匹配的策略词等级,0为正常,其余值是按需求可配
);
你已浏览到 MMO 游戏 指引末尾