Talk SDK for Unity3D API接口手册
相关异步/同步处理方法介绍
Unity 通过 YouMe 命名空间下的 C# 接口使用 Talk SDK。接口返回 YouMeErrorCode.YOUME_SUCCESS 时,含义取决于接口:同步接口表示本次操作成功;异步接口仅表示请求已受理,最终结果需等待对应回调。返回其他错误码时应立即处理,不能继续等待成功回调。
SDK 创建的回调组件在 Unity 主线程定时派发回调。回调中可以更新 Unity UI,但应避免执行耗时任务。通用事件的 err 通常为错误码;音量等事件会用该字段传数值,请按事件定义解释。
API调用说明
using YouMe;
YouMeVoiceAPI api = YouMeVoiceAPI.GetInstance();基本流程:注册回调 → Init → 收到 YOUME_EVENT_INIT_OK → JoinChannel → 收到 YOUME_EVENT_JOIN_OK → 操作音频/频道 → LeaveChannel 或 LeaveChannelAll → 收到离房事件 → 应用退出时 UnInit。
本手册的接口签名省略 public;AddEventListener/RemoveEventListener 为静态方法,其余接口通过 api 实例调用。
各接口统一按语法、功能、参数说明、返回值、异步回调介绍;无参数、无返回值或无异步回调时明确标注。回调方法、问卷事件及属性也按同一结构说明,参数部分区分调用参数和回调载荷。
实现回调方式一:全局委托(推荐方案)
可使用强类型委托或 GameObject 字符串消息接收回调。每一类 SetOn...Callback 只保留最后一次设置的委托;传 null 可清除该委托。某类强类型委托非空时,该类消息交给委托,不再发送给 SetCallback 指定的 GameObject;清除委托后可恢复相应的 GameObject 回调。按事件订阅的 AddEventListener 独立派发,见下文。
建议在 Init 前注册初始化结果的回调。仅使用强类型委托时,无需先调用 SetCallback。
通用事件回调
- 语法
YouMeErrorCode SetOnEventCallback(UnityOnEventCallbackDelegate callback);
// 委托定义
public delegate void UnityOnEventCallbackDelegate(
YouMeEvent evt, YouMeErrorCode err, string channel, string param);- 功能
注册初始化、进退频道、设备状态、抢麦等通用事件的全局委托。建议在 Init 前调用;同类委托仅保留最后一次设置。
- 参数说明
callback:通用事件委托;传 null 清除。委托非空时不再向 GameObject 发送同类消息。
evt:回调参数,YouMeEvent 事件类型。
err:回调参数,通常为错误码;音量和角色等事件携带业务数值,按事件定义解释。
channel:回调参数,相关频道 ID。
param:回调参数,事件附加信息。
- 返回值
返回 YouMeErrorCode.YOUME_SUCCESS 表示调用成功;其他值表示失败,具体参见 YouMeErrorCode 类型定义。
- 异步回调
注册本身没有独立完成事件。后续通用事件通过该委托异步派发。
示例:
api.SetOnEventCallback((evt, err, channel, param) =>
{
if (evt == YouMeEvent.YOUME_EVENT_INIT_OK)
{
// 此处才能开始 JoinChannel。
}
else if (evt == YouMeEvent.YOUME_EVENT_INIT_FAILED)
{
UnityEngine.Debug.LogError($"初始化失败:{err}");
}
else if (evt == YouMeEvent.YOUME_EVENT_BLOCK_CHANNELS)
{
// BlockChannels 的异步设置结果。
if (err != YouMeErrorCode.YOUME_SUCCESS)
UnityEngine.Debug.LogWarning($"设置频道收听黑名单失败:{err}");
}
else if (evt == YouMeEvent.YOUME_EVENT_IDENTITY_MODIFY)
{
// 该事件的 err 携带角色值,应按 YouMeUserRole 读取。
YouMeUserRole role = (YouMeUserRole)(int)err;
UnityEngine.Debug.Log($"当前用户角色:{role}");
}
});网络检测回调
- 语法
YouMeErrorCode SetOnDetectNetworkCompleteCallback(UnityOnDetectNetworkCompleteCallbackDelegate callback);
public delegate void UnityOnDetectNetworkCompleteCallbackDelegate(bool bNetworkOk, string strResult);- 功能
注册网络质量检测结果的全局委托,配合 DetectNetworkQuality 使用。
- 参数说明
callback:检测结果委托;传 null 清除,清除后可恢复对应 GameObject 消息。
bNetworkOk:回调参数,网络是否可用。
strResult:回调参数,JSON 字符串,包含 avgRtt(平均往返延迟,毫秒)和 lossPer(丢包率,0~1)。
- 返回值
返回 YouMeErrorCode.YOUME_SUCCESS 表示调用成功;其他值表示失败,具体参见 YouMeErrorCode 类型定义。
- 异步回调
注册本身没有独立完成事件。调用 DetectNetworkQuality 后,检测结果通过该委托返回。
音频统计回调
- 语法
YouMeErrorCode SetOnAVStatisticNewCallback(UnityOnAVStatisticNewCallbackDelegate callback);
public delegate void UnityOnAVStatisticNewCallbackDelegate(
YouMeAVStatisticType type, string userID, int value, string param);- 功能
注册并启用音频统计回调;传 null 关闭。
- 参数说明
callback:音频统计委托;传 null 关闭。
type:回调参数,统计类型,参见 YouMeAVStatisticType 定义。
userID:回调参数,统计对应的用户 ID。
value:回调参数,数值单位随 type 变化:码率/带宽为 Bps,丢包率为千分比,延迟为毫秒。
param:回调参数,扩展信息。
- 返回值
返回 YouMeErrorCode.YOUME_SUCCESS 表示调用成功;其他值表示失败,具体参见 YouMeErrorCode 类型定义。
- 异步回调
注册后通过该委托异步接收统计数据;没有对应的 GameObject 消息方法。
成员列表回调
- 语法
YouMeErrorCode SetOnMemberChangeCallback(UnityOnMemberChangeCallbackDelegate callback);
public delegate void UnityOnMemberChangeCallbackDelegate(
string channel, string listMemberChange, bool bUpdate);- 功能
注册频道成员列表及成员变更的全局委托,配合 GetChannelUserList 使用。
- 参数说明
callback:成员回调委托;传 null 清除,清除后可恢复对应 GameObject 消息。
channel:回调参数,频道 ID。
listMemberChange:回调参数,JSON 字符串;memchange 为数组,每项 userid 为用户 ID 字符串,isJoin 为布尔值。
bUpdate:回调参数,false 为首次查询数据,true 为后续增量变更。
- 返回值
返回 YouMeErrorCode.YOUME_SUCCESS 表示调用成功;其他值表示失败,具体参见 YouMeErrorCode 类型定义。
- 异步回调
注册本身没有独立完成事件。查询结果及已开启的成员变更通知通过该委托返回。
示例:
{"channelid":"room1","memchange":[{"isJoin":true,"userid":"user1"}]}房间广播回调
- 语法
YouMeErrorCode SetOnBroadCastCallback(UnityOnBroadCastCallbackDelegate callback);
public delegate void UnityOnBroadCastCallbackDelegate(
YouMeBroadcast bc, string channel, string param1, string param2, string strContent);- 功能
注册抢麦、连麦等房间广播的全局委托。方法拼写为 BroadCast,需保留中间的大写 C。
- 参数说明
callback:广播委托;传 null 清除,清除后可恢复对应 GameObject 消息。
bc:回调参数,YouMeBroadcast 广播类型。
channel:回调参数,频道 ID。
param1 / param2 / strContent:回调参数,按广播类型携带用户及业务信息。
- 返回值
返回 YouMeErrorCode.YOUME_SUCCESS 表示调用成功;其他值表示失败,具体参见 YouMeErrorCode 类型定义。
- 异步回调
房间广播通过该委托异步派发。普通文本 SendMessage 的接收结果仍由通用事件 YOUME_EVENT_MESSAGE_NOTIFY 返回。
设置音频数据回调
- 语法
YouMeErrorCode SetPcmCallbackEnable(UnityPcmDataCallbackDelegate callback, int flag);- 功能
设置是否接收音频 PCM 数据,以及需要的数据类型。可在进房前或进房后调用。当前 Unity 封装固定输出 16000 Hz、单声道;启用时传给底层的扬声器输出选项为 false,本接口未开放该输出选项参数。
- 参数说明
callback:UnityPcmDataCallbackDelegate 委托,定义为 void (YoumePcmCallbackData data)。lambda 和方法组可直接适配;已有 System.Action<YoumePcmCallbackData> 变量需显式包装。传 null 可关闭回调。
flag:需要的数据类型,可按位组合 PcmCallbackFlag_Remote、PcmCallbackFlag_Record、PcmCallbackFlag_Mix,再转为 int。
data:委托参数。包含 channelNum(声道数)、samplingRateHz(采样率)、bytesPerSample(每采样字节数)、data(托管 byte 数组)和 flag(数据类型)。
- 返回值
返回 YouMeErrorCode.YOUME_SUCCESS 表示调用成功;其他值表示失败,具体参见 YouMeErrorCode 类型定义。
- 异步回调
通过 callback 委托异步接收 YoumePcmCallbackData;data.flag 区分远端、录音及混合数据。回调数据已复制到托管 byte 数组,可按需保存或再次复制;避免在 Unity 主线程回调中执行耗时处理。
示例:
int flags = (int)(YouMePcmCallBackFlag.PcmCallbackFlag_Remote
| YouMePcmCallBackFlag.PcmCallbackFlag_Record
| YouMePcmCallBackFlag.PcmCallbackFlag_Mix);
api.SetPcmCallbackEnable(data =>
{
if (data.flag == YouMePcmCallBackFlag.PcmCallbackFlag_Record)
{
// data.data 是本次录音的 PCM 字节数组。
}
}, flags);按事件增加监听
- 语法
static void AddEventListener(YouMeEvent eventType, UnityOnEventCallbackDelegate callback);- 功能
为一个通用事件增加监听;同一事件可有多个监听者,同一委托重复注册只生效一次。监听独立于全局委托和 GameObject 消息,同一业务同时订阅多种方式时应避免重复处理。
- 参数说明
eventType:要订阅的 YouMeEvent 事件类型。
callback:接收该事件的 UnityOnEventCallbackDelegate 委托,载荷含 evt、err、channel、param,解释方式与通用事件回调一致。
- 返回值
无(void)。
- 异步回调
事件发生时通过 callback 异步通知;注册本身没有独立完成事件。
移除事件监听
- 语法
static void RemoveEventListener(YouMeEvent eventType, UnityOnEventCallbackDelegate callback);- 功能
移除通过 AddEventListener 注册的事件监听。建议在模块停用或销毁时调用;使用 lambda 时需保存委托实例,不能创建另一个 lambda 来移除。
- 参数说明
eventType:注册时使用的事件类型。
callback:注册时使用的同一委托实例。
- 返回值
无(void)。
- 异步回调
移除操作没有异步完成通知。
示例:
UnityOnEventCallbackDelegate onJoined = (evt, err, channel, param) =>
UnityEngine.Debug.Log($"已进入频道:{channel}");
YouMeVoiceAPI.AddEventListener(YouMeEvent.YOUME_EVENT_JOIN_OK, onJoined);
// 模块停用时:
YouMeVoiceAPI.RemoveEventListener(YouMeEvent.YOUME_EVENT_JOIN_OK, onJoined);实现回调方式二:GameObject 回调(旧方案)
设置回调
- 语法
void SetCallback(string strObjName);- 功能
注册接收 SDK 字符串消息的 GameObject。须在 Init 前设置,并在对象的脚本中实现所需消息方法。接收脚本应处理 OnEvent,其余方法按功能实现;方法名区分大小写。同类强类型委托非空时不再向 GameObject 发送该类消息。
- 参数说明
strObjName:接收消息的 GameObject 名称;该对象应激活且可被 GameObject.Find 找到,处理脚本挂在该对象上。
- 返回值
无(void)。
- 异步回调
注册本身没有独立完成事件。后续消息由下面列出的方法异步接收;音频统计仍使用 SetOnAVStatisticNewCallback。
消息方法:
| 消息方法 | 参数格式 |
|---|---|
void OnEvent(string strParam) | event,error,channel,param,按最多 4 段分割,最后一段可含逗号 |
void onDetectNetWorkComplete(string strParam) | JSON:bNetworkOK 为 0/1 整数,result 为包含检测结果的 JSON 字符串 |
void OnMemberChange(string strParam) | 成员列表 JSON,memchange 为数组;使用强类型回调可额外直接获得 bUpdate |
void OnBroadcast(string strParam) | bc,channel,param1,param2,content,按最多 5 段分割 |
音频统计使用 SetOnAVStatisticNewCallback 注册,无对应的 GameObject 消息方法。
事件回调
- 语法
void OnEvent(string strParam);- 功能
由业务实现的 GameObject 通用事件接收方法,处理初始化、进退频道和设备状态等通知。
- 参数说明
strParam:按 event,error,channel,param 拼接。event 为 YouMeEvent 整数值;error 通常为 YouMeErrorCode 整数值,音量/角色等事件携带业务数值;channel 为相关频道 ID;param 为附加信息。最多分为 4 段,保留 param 中的逗号。
- 返回值
无(void)。
- 异步回调
SDK 在事件发生时调用此方法;若已设置非空的 SetOnEventCallback 委托,同类事件不再向 GameObject 发送。其他事件见 YouMeEvent 类型定义。
示例:
void OnEvent(string strParam)
{
if (string.IsNullOrEmpty(strParam)) return;
string[] parts = strParam.Split(new[] { ',' }, 4);
if (parts.Length != 4 || !int.TryParse(parts[0], out int eventValue)
|| !int.TryParse(parts[1], out int errorValue)) return;
YouMeEvent evt = (YouMeEvent)eventValue;
YouMeErrorCode err = (YouMeErrorCode)errorValue;
string channel = parts[2];
string param = parts[3];
switch (evt)
{
case YouMeEvent.YOUME_EVENT_INIT_OK:
// 初始化成功,可以调用 JoinChannel 加入频道。
break;
case YouMeEvent.YOUME_EVENT_INIT_FAILED:
UnityEngine.Debug.LogError($"初始化失败:{err}");
break;
case YouMeEvent.YOUME_EVENT_JOIN_OK:
UnityEngine.Debug.Log($"加入频道成功:{channel}");
break;
case YouMeEvent.YOUME_EVENT_LEAVED_ALL:
// 已离开所有频道。
break;
default:
// 按具体事件解释 err 和 param;音量事件中的 errorValue 是音量值。
break;
}
}网络质量检测回调
- 语法
void onDetectNetWorkComplete(string strParam);- 功能
由业务实现的 GameObject 网络质量检测结果接收方法。
- 参数说明
strParam:为 JSON 字符串,字段如下。
| 字段 | 类型及说明 |
|---|---|
type | 整数,网络检测回调类型值为 4 |
bNetworkOK | 整数,1 表示网络可用,0 表示不可用 |
result | JSON 字符串;内部包含 avgRtt(平均往返延迟,整数,单位毫秒)和 lossPer(丢包率,浮点数,范围 0~1) |
- 返回值
无(void)。
- 异步回调
调用 DetectNetworkQuality 后接收检测结果;已设置非空 SetOnDetectNetworkCompleteCallback 委托时不再向 GameObject 发送。
先解析外层 JSON,再将 result 字符串解析为 JSON 读取检测数值。
示例:
{
"type": 4,
"bNetworkOK": 1,
"result": "{\"avgRtt\":39,\"lossPer\":0.0}"
}获取成员列表及成员变更回调
- 语法
void OnMemberChange(string strParam);- 功能
由业务实现的 GameObject 成员列表及成员变更接收方法,配合 GetChannelUserList 使用。
- 参数说明
strParam:为 JSON 字符串,字段如下。
| 字段 | 类型及说明 |
|---|---|
type | 整数,成员列表回调类型值为 2 |
channelid | 字符串,频道 ID |
memchange | 数组,包含成员列表或变更列表;每项的 userid 为用户 ID 字符串,isJoin 为布尔值,true 表示加入,false 表示离开 |
- 返回值
无(void)。
- 异步回调
查询结果及已开启的成员变更通知通过此方法返回;已设置非空 SetOnMemberChangeCallback 委托时不再向 GameObject 发送。
GameObject 消息不单独提供 bUpdate;需区分首次查询与后续增量时使用 SetOnMemberChangeCallback,其 bUpdate=false 表示首次查询,true 表示后续变更。
示例:
{
"type": 2,
"channelid": "room1",
"memchange": [
{ "userid": "user1", "isJoin": true },
{ "userid": "user2", "isJoin": false }
]
}房间广播回调
- 语法
void OnBroadcast(string strParam);- 功能
由业务实现的 GameObject 房间广播接收方法,接收抢麦、连麦等广播。
- 参数说明
strParam:按 bc,channel,param1,param2,content 拼接。bc 为 YouMeBroadcast 整数值,channel 为频道 ID,其余字段按广播类型携带用户及业务信息。最多分为 5 段,保留 content 中的逗号。广播类型见 YouMeBroadcast 定义。
- 返回值
无(void)。
- 异步回调
房间广播发生时调用;已设置非空 SetOnBroadCastCallback 委托时不再向 GameObject 发送。普通文本消息由 OnEvent 中的 YOUME_EVENT_MESSAGE_NOTIFY 接收。
回调派发配置
设置事件优先级
- 语法
YouMeErrorCode SetEventCallbackPriority(YouMeEvent evt, YouMeMessagePriority priority);- 功能
初始化成功后设置通用事件的派发优先级。它影响队列调度,不改变事件业务含义,也不替代等待初始化、进房结果的要求。
- 参数说明
evt:要设置优先级的 YouMeEvent 事件类型。
priority:YouMeMessagePriority 优先级,使用 MsgPriority_Low、MsgPriority_Middle 或 MsgPriority_High。
- 返回值
返回 YOUME_SUCCESS 表示设置成功;引擎尚未初始化时可返回 YOUME_ERROR_NOT_INIT。其他值表示失败,具体参见 YouMeErrorCode 类型定义。
- 异步回调
无。本接口不单独返回异步完成通知。
查询事件优先级
- 语法
YouMeMessagePriority GetEventCallbackPriority(YouMeEvent evt);- 功能
查询指定通用事件当前的派发优先级。
- 参数说明
evt:要查询的事件类型。
- 返回值
返回 YouMeMessagePriority;引擎未初始化时返回 MsgPriority_Middle,因此不能用该值判断是否已初始化。
- 异步回调
无。本接口不单独返回异步完成通知。
设置单次派发数量
- 语法
void SetOnceCallbackMaxEvents(int maxCount);- 功能
设置回调组件每次轮询从事件队列获取的最大事件数,默认 10。调大可加快积压事件处理,但会增加单次主线程耗时;它不是每帧严格上限,也不限制独立队列中的 PCM、日志进度等委托任务。
- 参数说明
maxCount:单次轮询的最大事件数,传正整数。
- 返回值
无(void)。
- 异步回调
无。本接口不单独返回异步完成通知。
初始化
- 语法
YouMeErrorCode Init(string strAppKey, string strAPPSecret, YOUME_RTC_SERVER_REGION serverRegionId, string strExtServerRegionName);- 功能
初始化语音引擎,做APP验证和资源初始化。
- 参数说明
strAppKey:从游密后台申请到的 app key, 这个是你们应用程序的唯一标识。
strAPPSecret:对应 strAppKey 的私钥, 这个需要妥善保存,不要暴露给其他人。
serverRegionId:设置首选连接服务器的区域码,建议直接使用RTC_DEFAULT_SERVER。如果YOUME_RTC_SERVER_REGION定义的区域码不能满足要求,可以把这个参数设为 RTC_EXT_SERVER,然后通过后面的参数strExtServerRegionName 设置一个自定的区域值(如中国用 "cn" 或者 “ch"表示),然后把这个自定义的区域值同步给游密,我们将通过后台配置映射到最佳区域的服务器。
strExtServerRegionName:自定义的扩展的服务器区域名。不能为null,可为空字符串“”。只有前一个参数serverRegionId设为RTC_EXT_SERVER时,此参数才有效(否则都将当空字符串“”处理)。
- 返回值
返回 YouMeErrorCode.YOUME_SUCCESS 仅表示请求已受理;其他值表示失败,具体参见 YouMeErrorCode 类型定义。最终结果参见下方异步回调。
- 异步回调
通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。
YOUME_EVENT_INIT_OK:初始化成功,此后才能加入频道。YOUME_EVENT_INIT_FAILED:初始化失败,常见原因包括网络或 AppKey/AppSecret 错误。
服务器区域
设置服务器区域
- 语法
void SetServerRegion(YOUME_RTC_SERVER_REGION regionId, string strExtRegionName);- 功能
设置首选连接区域。初始区域通过 Init 参数指定;需要调整区域时,等待 YOUME_EVENT_INIT_OK 后、加入频道前调用本接口。初始化前调用本接口不会生效。
- 参数说明
regionId:设置首选连接服务器的区域码,建议使用 RTC_DEFAULT_SERVER。如果 YOUME_RTC_SERVER_REGION 定义的区域码不能满足要求,可以设为 RTC_EXT_SERVER,通过参数 strExtRegionName 设置自定义区域值(如中国用 "cn" 或 "ch"),并将该值同步给游密,由后台配置映射到最佳服务器。
strExtRegionName:扩展区域名;传非 null 的字符串,regionId 为 RTC_EXT_SERVER 时生效。
- 返回值
无(void)。
- 异步回调
无。本接口不单独返回异步完成通知。
设置服务器区域(全)
- 语法
void SetServerRegion(string[] regionNames);- 功能
设置参与通话各方所在的区域,这个接口适合于分布区域比较广的应用。最简单的做法是只设定前用户所在区域。但如果能确定其他参与通话的应用所在的区域,则能使服务器选择更优。
- 参数说明
regionNames:指定参与通话各方区域的数组,数组里每个元素为一个区域代码。用户可以自行定义代表各区域的字符串(如中国用 "cn" 或者 “ch"表示),然后把定义好的区域表同步给游密,游密会把这些定义配置到后台,在实际运营时选择最优服务器。
单区域重载替换当前区域配置(内部 append=false),不接受第三个参数。string[] 重载以第一个区域替换配置,再依次追加其他区域;请传非空数组,数组元素为已在后台配置的扩展区域名。
- 返回值
无(void)。
- 异步回调
无。本接口不单独返回异步完成通知。
安全验证码设置V3版本
- 语法
void SetTokenV3(string strToken, uint timestamp);- 功能
设置进房身份验证 token。先联系游密后台开启对应鉴权配置,token 由业务服务端按已配置规则生成;客户端在进房前设置 token 及其生成时使用的相同时间戳。
- 参数说明
strToken:身份验证 token 字符串;传空字符串清空当前 token。
timestamp:Unix 时间戳,单位秒,C# 类型 uint。不能传毫秒时间戳或使用旧 long 签名。
- 返回值
无(void)。
- 异步回调
无。本接口不单独返回异步完成通知。
语音频道管理
加入语音频道
- 语法
YouMeErrorCode JoinChannel(string strUserID, string strChannelID, YouMeUserRole userRole, bool bSingleMode = false, bool bCheckRoomExist = false);- 功能
初始化成功后加入语音频道,使用一个接口选择单频道或多频道模式。旧文档中的分离式单/多频道进房入口由此接口统一替代。
- 参数说明
strUserID:当前应用内唯一的用户标识。
strChannelID:当前应用内唯一的频道标识。
userRole:YouMeUserRole 枚举,不能直接以 int 替代。
bSingleMode:true 为单频道,加入时自动退出其他频道;false 为多频道,可同时收听多个频道,并使用 SpeakToChannel 指定讲话频道。默认 false,即多频道。
bCheckRoomExist:true 仅加入已存在频道,不存在则失败;false 不要求频道预先存在。默认 false。
- 返回值
返回 YouMeErrorCode.YOUME_SUCCESS 仅表示请求已受理;其他值表示失败,具体参见 YouMeErrorCode 类型定义。需等待进房成功后再操作房间。
- 异步回调
通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。
YOUME_EVENT_JOIN_OK:加入频道成功。YOUME_EVENT_JOIN_FAILED:加入频道失败,按 err 处理原因。
示例:
// 单频道自由通话,须显式传 true。
api.JoinChannel("user1", "team1", YouMeUserRole.YOUME_USER_TALKER_FREE, true, false);
// 多频道听众,仅加入已存在的频道。
api.JoinChannel("user1", "radio1", YouMeUserRole.YOUME_USER_LISTENER, false, true);当前是否在语音频道中
- 语法
bool IsInAnyChannel();- 功能
查询当前是否在语音频道中。
- 参数说明
无。
- 返回值
返回true表示当前在语音频道中,否则当前不在语音频道内。
- 异步回调
无。本接口不单独返回异步完成通知。
指定讲话频道
- 语法
YouMeErrorCode SpeakToChannel(string strChannelID);- 功能
多频道模式下,指定当前要讲话的频道。
- 参数说明
strChannelID:全局唯一的频道标识,全局指在当前应用程序的范围内。
- 返回值
返回 YouMeErrorCode.YOUME_SUCCESS 仅表示请求已受理;其他值表示失败,具体参见 YouMeErrorCode 类型定义。最终结果参见下方异步回调。
- 异步回调
通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。
YOUME_EVENT_SPEAK_SUCCESS:成功切换到指定讲话频道。YOUME_EVENT_SPEAK_FAILED:切换失败,按 err 处理网络或服务端等原因。
退出指定的语音频道
- 语法
YouMeErrorCode LeaveChannel(string strChannelID);- 功能
多频道模式下,退出指定的语音频道。
- 参数说明
strChannelID:全局唯一的频道标识,全局指在当前应用程序的范围内。
- 返回值
返回 YouMeErrorCode.YOUME_SUCCESS 仅表示请求已受理;其他值表示失败,具体参见 YouMeErrorCode 类型定义。最终结果参见下方异步回调。
- 异步回调
通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。
YOUME_EVENT_LEAVED_ONE:已退出指定频道。
退出所有语音频道
- 语法
YouMeErrorCode LeaveChannelAll();- 功能
退出所有的语音频道(单频道模式下直接调用此函数离开频道即可)。
- 参数说明
无。
- 返回值
返回 YouMeErrorCode.YOUME_SUCCESS 仅表示请求已受理;其他值表示失败,具体参见 YouMeErrorCode 类型定义。最终结果参见下方异步回调。
- 异步回调
通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。
YOUME_EVENT_LEAVED_ALL:已退出全部频道。
屏蔽指定频道
- 语法
YouMeErrorCode BlockChannels(string strChannelList);- 功能
多频道模式下设置频道收听黑名单,屏蔽后仍留在频道内。每次设置的是完整列表,不是追加。
- 参数说明
strChannelList:以 | 分隔的频道 ID 字符串,例如 "room1|room2";传空字符串清空黑名单。
- 返回值
返回 YouMeErrorCode.YOUME_SUCCESS 仅表示请求已受理;其他值表示失败,具体参见 YouMeErrorCode 类型定义。
- 异步回调
通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。
YOUME_EVENT_BLOCK_CHANNELS:频道黑名单设置结果;err=YOUME_SUCCESS 表示成功,其他值按错误码处理。
设置用户角色
- 语法
YouMeErrorCode SetUserRole(YouMeUserRole userRole);- 功能
单频道模式下进入房间后设置当前用户角色。角色影响讲话、战歌和监听权限;切换角色可能停止不再允许的音频功能。
- 参数说明
userRole:有效的 YouMeUserRole 枚举,不能传 YOUME_USER_NONE。
- 返回值
返回 YouMeErrorCode.YOUME_SUCCESS 表示调用成功;其他值表示失败,具体参见 YouMeErrorCode 类型定义。
- 异步回调
通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。
YOUME_EVENT_IDENTITY_MODIFY:角色变化通知。err 携带角色值,通过 (YouMeUserRole)(int)err 读取。
获取用户角色
- 语法
YouMeUserRole GetUserRole();- 功能
单频道模式下查询当前用户角色,应在已进入房间时使用。
- 参数说明
无。
- 返回值
返回 YouMeUserRole 枚举,表示当前用户角色;不是 YouMeErrorCode。
- 异步回调
无。本接口不单独返回异步完成通知。
设置白名单用户
- 语法
YouMeErrorCode SetWhiteUserList(string channelID, string whiteUserList);- 功能
设置当前用户的语音消息接收白名单,其语音消息只会转发到白名单的用户,不设置该接口则默认转发至频道内所有人。
- 参数说明
channelID:要设置的频道 ID,当前应用范围内唯一;兼容多频道,单频道传当前频道。
whiteUserList:以 | 分隔的用户列表,例如 User1|User2|User3。"all" 表示转发给频道内所有人;空字符串或仅设置自己表示不转发给其他用户。
- 返回值
返回 YouMeErrorCode.YOUME_SUCCESS 仅表示请求已受理;其他值表示失败,具体参见 YouMeErrorCode 类型定义。最终结果参见下方异步回调。
- 异步回调
通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。
YOUME_EVENT_SET_WHITE_USER_LIST_OK:白名单设置完成;存在异常用户时 err 可为 YOUME_ERROR_WHITE_SOMEUSER_ABNORMAL。YOUME_EVENT_SET_WHITE_USER_LIST_FAILED:设置失败。
设置黑名单用户
- 语法
YouMeErrorCode SetListenOtherVoice(string userID, bool isOn);- 功能
设置指定用户的语音接收黑名单状态,控制本机是否接收该用户的语音。
- 参数说明
userID:要设置黑名单状态的用户 ID。
isOn:false 将指定用户加入语音接收黑名单,屏蔽该用户的语音;true 将其移出黑名单,恢复接收其语音。
- 返回值
返回 YouMeErrorCode.YOUME_SUCCESS 仅表示请求已受理;其他值表示失败,具体参见 YouMeErrorCode 类型定义。相关状态通知参见下方异步回调说明。
- 异步回调
没有本次设置的独立完成事件。相关状态通知 YOUME_EVENT_LISTEN_OTHER_ON / YOUME_EVENT_LISTEN_OTHER_OFF 表示取消屏蔽/屏蔽,按通用事件定义处理。
查询频道用户列表
- 语法
YouMeErrorCode GetChannelUserList(string channelID, int maxCount, bool notifyMemChange);- 功能
查询频道当前的用户列表,并设置是否获取频道用户进出的通知。结果由 SetOnMemberChangeCallback 委托接收;未设置该委托时使用 GameObject 的 OnMemberChange。(必须自己在频道中)
- 参数说明
channelID:频道ID。
maxCount:想要获取的最大人数。-1表示获取全部列表。
notifyMemChange:其他用户进出房间时,是否要收到通知。(设置为true,自己所在频道有人进出 都会有对应回调产生,反之false就没有对应回调)
- 返回值
返回YOUME_SUCCESS才会有异步回调通知。其它返回值请参考YouMeErrorCode类型定义。
- 异步回调
通过 SetOnMemberChangeCallback 的委托接收 (string channel, string listMemberChange, bool bUpdate):bUpdate=false 为首次查询数据,true 为后续增量变更;未设置委托时由 GameObject 的 OnMemberChange 接收。
首次查询用户列表时,假设当前房间内用户数是curCount, 1、当传入的maxCount >= curCount时: OnMemberChange回调一次,返回房间内所有curCount个用户。 2、当传入的maxCount < curCount时,OnMemberChange回调两次: 第一次返回maxCount个用户; 第二次返回其余curCount-maxCount个用户。 3、当传入的maxCount = -1时,OnMemberChange回调两次: 第一次只返回一个用户(按照用户id排序的最小值); 第二次返回房间内剩余的curCount-1个用户。
把人踢出房间
- 语法
YouMeErrorCode KickOtherFromChannel(string userID, string channelID, int lastTime);- 功能
把人踢出房间。
- 参数说明
userID:被踢的用户ID。
channelID:从哪个房间踢出(自己需要在房间)。
lastTime:踢出后,多长时间内不允许再次进入(单位:秒)。
- 返回值
返回 YouMeErrorCode.YOUME_SUCCESS 仅表示请求已受理;其他值表示失败,具体参见 YouMeErrorCode 类型定义。最终结果参见下方异步回调。
- 异步回调
通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。
YOUME_EVENT_KICK_RESULT:踢人方收到操作结果,param 为被踢者 ID。YOUME_EVENT_KICK_NOTIFY:被踢方收到通知并退出频道;param 携带踢人者 ID、原因及被禁时长。
范围语音
加入范围语音频道
- 语法
YouMeErrorCode JoinRangeAudioChannel(string strUserID, string strChannelID, YouMeUserRole userRole, bool bCheckRoomExist, float length, float width, float height, float radius);- 功能
“范围语音”能让玩家在语音房里,只听到“周围一定距离内”玩家的声音。初始化成功后加入按用户坐标及收听范围控制通话的频道。当前 Unity 签名没有 bSingleMode 参数,不能套用其他平台签名。
- 参数说明
strUserID:当前应用内唯一用户标识。
strChannelID:当前应用内唯一频道标识。
userRole:YouMeUserRole 角色枚举。
bCheckRoomExist:true 仅加入已存在频道;false 不要求频道预先存在。
length:地图 x 轴尺寸,正数,与位置坐标使用相同单位;已有频道忽略本次尺寸设置。
width:地图 y 轴尺寸,正数,与位置坐标使用相同单位;已有频道忽略本次尺寸设置。
height:地图 z 轴尺寸,正数,与位置坐标使用相同单位;已有频道忽略本次尺寸设置。
radius:收听半径,必须大于 0;按切比雪夫距离计算。
所有参数均必须传入,C# 签名没有地图尺寸和半径的可选默认参数。
- 返回值
返回 YouMeErrorCode.YOUME_SUCCESS 仅表示请求已受理;其他值表示失败,具体参见 YouMeErrorCode 类型定义。
- 异步回调
通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。
YOUME_EVENT_JOIN_OK:加入范围语音频道成功,此后可更新位置。YOUME_EVENT_JOIN_FAILED:加入失败。
更新范围语音位置
- 语法
YouMeErrorCode UpdateRangeAudioPosition(string strChannelID, float x, float y, float z, float radius);- 功能
在已加入的范围语音频道中更新当前位置和收听范围。
距离使用 d = max(|x1-x2|, |y1-y2|, |z1-z2|),不是欧氏距离。半径为 50 时,A(0,0,0) 与 B(30,40,50) 的距离为 50,与 C(30,40,100) 的距离为 100。地图、位置及半径使用一致的游戏坐标单位,在角色移动时更新位置。
- 参数说明
strChannelID:已加入的范围语音频道 ID。
x / y / z:当前用户在地图中的坐标。
radius:正数,当前收听范围,不能用 0 表示默认值。
- 返回值
返回 YOUME_SUCCESS 表示本次更新请求处理成功;在普通频道调用可返回 YOUME_ERROR_NOT_IN_RANGE_AUDIO_ROOM。其他值表示失败,具体参见 YouMeErrorCode 类型定义。
- 异步回调
无。本接口不单独返回异步完成通知。
设备状态管理
切换语音输出设备
- 语法
YouMeErrorCode SetOutputToSpeaker(bool bOutputToSpeaker);- 功能
默认输出到扬声器,在加入房间成功后设置。(iOS受系统限制,如果已释放麦克风则无法切换到听筒;Android需要在app的AndroidManifest文件中添加android.permission.MODIFY_AUDIO_SETTINGS权限)
- 参数说明
bOutputToSpeaker:true——输出到扬声器,false——输出到听筒。
- 返回值
返回 YouMeErrorCode.YOUME_SUCCESS 仅表示请求已受理;其他值表示失败,具体参见 YouMeErrorCode 类型定义。最终结果参见下方异步回调。
- 异步回调
通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。
YOUME_EVENT_SWITCH_OUTPUT:语音输出设备切换结果,按 err 判断。
设置扬声器状态
- 语法
void SetSpeakerMute(bool bMute);- 功能
打开/关闭扬声器。该状态值在加入房间成功后设置才有效。(设备状态异步生效)
- 参数说明
bMute:true 关闭扬声器,false 开启扬声器。
- 返回值
无(void)。
- 异步回调
通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。
YOUME_EVENT_LOCAL_SPEAKER_ON:本机扬声器开启状态通知,按 err 判断结果。YOUME_EVENT_LOCAL_SPEAKER_OFF:本机扬声器关闭状态通知,按 err 判断结果。
设备状态异步生效,不应将紧接着的一次 GetSpeakerMute 查询视为硬件已完成切换。
获取扬声器状态
- 语法
bool GetSpeakerMute();- 功能
获取当前扬声器状态。同步读取 SDK 当前扬声器状态;开关设备生效需要时间,不应把紧接着的一次查询当作硬件已完成切换的保证。
- 参数说明
无。
- 返回值
true——扬声器关闭,false——扬声器开启。
- 异步回调
无。本接口不单独返回异步完成通知。
设置麦克风状态
- 语法
void SetMicrophoneMute(bool mute);- 功能
打开/关闭麦克风。该状态值在加入房间成功后设置才有效。(设备状态异步生效)。
- 参数说明
mute:true——关闭麦克风,false——开启麦克风。
- 返回值
无(void)。
- 异步回调
通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。
YOUME_EVENT_LOCAL_MIC_ON:本机麦克风开启状态通知,按 err 判断结果。YOUME_EVENT_LOCAL_MIC_OFF:本机麦克风关闭状态通知,按 err 判断结果。
设备状态异步生效,不应将紧接着的一次 GetMicrophoneMute 查询视为硬件已完成切换。
获取麦克风状态
- 语法
bool GetMicrophoneMute();- 功能
获取当前麦克风状态。同步读取 SDK 当前麦克风状态;开关设备生效需要时间,不应把紧接着的一次查询当作硬件已完成切换的保证。
- 参数说明
无。
- 返回值
true——麦克风关闭,false——麦克风开启。
- 异步回调
无。本接口不单独返回异步完成通知。
设置是否通知别人麦克风和扬声器的开关
- 语法
void SetAutoSendStatus(bool bAutoSend);- 功能
设置是否向同频道其他用户通知本机麦克风及扬声器开关状态,建议进入频道后调用。
- 参数说明
bAutoSend:true 通知其他用户;false 不通知。
- 返回值
无(void)。
- 异步回调
没有本次设置的独立完成事件。开启后,其他用户可通过通用事件 YOUME_EVENT_OTHERS_MIC_ON、YOUME_EVENT_OTHERS_MIC_OFF、YOUME_EVENT_OTHERS_SPEAKER_ON、YOUME_EVENT_OTHERS_SPEAKER_OFF 接收状态通知。
设置扬声器音量增益
- 语法
void SetVolume(uint uiVolume);- 功能
设置扬声器音量增益,实际扬声器音量 = 扬声器音量增益 x 系统音量。建议该状态值在加入房间成功后按需再重置一次。
- 参数说明
uiVolume:扬声器音量增益,范围 0~100,表示百分比;100 对应乘法系数 1,0 表示无声。
- 返回值
无(void)。
- 异步回调
无。本接口不单独返回异步完成通知。
获取扬声器音量增益
- 语法
int GetVolume();- 功能
获取当前扬声器音量增益。本接口返回 SDK 的增益配置,不是实际扬声器音量。实际扬声器音量 = 扬声器音量增益 x 系统音量。
- 参数说明
无。
- 返回值
当前扬声器音量增益,范围 0~100(百分比)。
- 异步回调
无。本接口不单独返回异步完成通知。
设置麦克风音量增益
- 语法
void SetMicVolume(uint uiVolume);- 功能
设置程序内部麦克风音量增益。放大过多可能失真。
- 参数说明
uiVolume:范围 0~1000,100 为正常值,0 为无声,大于 100 为增益,小于 100 为减益。
- 返回值
无(void)。
- 异步回调
无。本接口不单独返回异步完成通知。
获取麦克风音量增益
- 语法
int GetMicVolume();- 功能
查询当前麦克风音量增益。它不是当前说话的实时音量;实时音量使用 SetMicLevelCallback 的事件结果。
- 参数说明
无。
- 返回值
返回当前麦克风音量增益,范围 0~1000,100 为正常值。
- 异步回调
无。本接口不单独返回异步完成通知。
设置房间内某成员音量
- 语法
YouMeErrorCode SetUserVolume(string strUserID, uint uiVolume);- 功能
设置房间内某成员的说话音量大小,仅在本端设备生效。自己退出频道时设置失效,被调节成员进出频道可以保持有效。
- 参数说明
strUserID:被调节成员的用户 ID。
uiVolume:范围 0~300,100 为正常值,0 为无声;较大增益可能失真,按实际设备效果调节。
- 返回值
返回 YouMeErrorCode.YOUME_SUCCESS 表示调用成功;其他值表示失败,具体参见 YouMeErrorCode 类型定义。
- 异步回调
无。本接口不单独返回异步完成通知。
控制他人麦克风
- 语法
YouMeErrorCode SetOtherMicMute(string userID, bool mute);- 功能
控制他人的麦克风状态(也就是关闭或者开启他人的麦克风)。
- 参数说明
userID:要控制的用户ID
mute:是否静音。true:静音别人的麦克风,false:开启别人的麦克风
- 返回值
返回 YouMeErrorCode.YOUME_SUCCESS 仅表示请求已受理;其他值表示失败,具体参见 YouMeErrorCode 类型定义。相关状态通知参见下方异步回调说明。
- 异步回调
没有本次控制请求的独立完成事件。被控制用户通过通用事件 YOUME_EVENT_MIC_CTR_ON / YOUME_EVENT_MIC_CTR_OFF 接收麦克风被打开/关闭的通知。
控制他人扬声器
- 语法
YouMeErrorCode SetOtherSpeakerMute(string userID, bool mute);- 功能
控制他人的扬声器状态(也就是关闭或者开启他人的扬声器)。
- 参数说明
userID:要控制的用户ID。
mute:是否静音。true:静音别人的扬声器,false:开启别人的扬声器。
- 返回值
返回 YouMeErrorCode.YOUME_SUCCESS 仅表示请求已受理;其他值表示失败,具体参见 YouMeErrorCode 类型定义。相关状态通知参见下方异步回调说明。
- 异步回调
没有本次控制请求的独立完成事件。被控制用户通过通用事件 YOUME_EVENT_SPEAKER_CTR_ON / YOUME_EVENT_SPEAKER_CTR_OFF 接收扬声器被打开/关闭的通知。
设置当麦克风静音时,是否释放麦克风设备
- 语法
YouMeErrorCode SetReleaseMicWhenMute(bool enabled);- 功能
设置当麦克风静音时,是否释放麦克风设备(需要在初始化成功后,加入房间之前调用)。
- 参数说明
enabled: true--当麦克风静音时,释放麦克风设备,此时允许第三方模块使用麦克风设备录音。在Android和iOS上,语音由通话音轨切换到媒体音轨,回归到双声道高音质输出体验(如果媒体音量和通话音量不同时切换会产生音量变大变小的感觉);false--不管麦克风是否静音,麦克风设备都会被占用。
- 返回值
返回 YouMeErrorCode.YOUME_SUCCESS 表示调用成功;其他值表示失败,具体参见 YouMeErrorCode 类型定义。
- 异步回调
无。本接口不单独返回异步完成通知。
设置插入耳机时,是否自动退出系统通话模式
- 语法
YouMeErrorCode SetExitCommModeWhenHeadsetPlugin(bool enabled);- 功能
设置插入耳机时,是否自动退出系统通话模式(禁用手机系统硬件信号前处理)。 系统提供的前处理效果包括回声消除、自动增益等,有助于抑制战歌等回声噪音,减少系统资源消耗,对Windows系统无效。 默认为false,在初始化之后、加入房间之前调用。
- 参数说明
enabled: true--当插入耳机时,自动禁用系统硬件信号前处理,拔出时还原;false--插拔耳机不做处理。
- 返回值
成功返回YOUME_SUCCESS,其它返回值请参考YouMeErrorCode类型定义。
- 异步回调
无。本接口不单独返回异步完成通知。
释放麦克风
- 语法
bool ReleaseMicSync();- 功能
调用后完成麦克风释放,只是为了方便使用 IM 的录音接口时切换麦克风使用权。
- 参数说明
无。
- 返回值
返回true,表示释放成功,可以认为只要在占用麦克风的状态肯定能释放成功。
- 异步回调
无。本接口不单独返回异步完成通知。
恢复麦克风录音状态
- 语法
bool ResumeMicSync();- 功能
调用后恢复麦克风到释放前的状态,只是为了方便使用 IM 的录音接口时切换麦克风使用权。
- 参数说明
无。
- 返回值
返回true,表示恢复成功,可以认为只要在释放的状态,肯定可以恢复成功。
- 异步回调
无。本接口不单独返回异步完成通知。
说话及音量检测
设置语音检测
- 语法
YouMeErrorCode SetVadCallbackEnabled(bool enabled);- 功能
设置是否开启语音检测回调,开启后频道内有人正在讲话与结束讲话都会发起相应回调通知。(需要游密后台配置开启,该状态值在加入房间成功后设置才有效,并且需要频道内所有用户都设置才生效。)
- 参数说明
enabled:true 开启语音检测,false 关闭。
- 返回值
如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。
- 异步回调
通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。
YOUME_EVENT_OTHERS_VOICE_ON:其他用户进入讲话状态。YOUME_EVENT_OTHERS_VOICE_OFF:其他用户进入静默状态。
上述为开启后的语音检测通知,不是本次设置的独立完成事件。
设置本地讲话音量级别回调
- 语法
YouMeErrorCode SetMicLevelCallback(int maxMicLevel);- 功能
设置是否开启自己讲话音量级别回调, 并设置相应的参数。
- 参数说明
maxMicLevel:音量最大时对应的级别,开启时需大于 1,最大 100;0 关闭回调。为减少 Unity 主线程事件量,一般建议不超过 30。若 UI 显示 10 级音量,可设为 10。
- 返回值
如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。
- 异步回调
通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。
YOUME_EVENT_MY_MIC_LEVEL:本机讲话音量级别;将 err 转为 int 读取音量值,不按错误码判断。
设置远端讲话音量级别回调
- 语法
YouMeErrorCode SetFarendVoiceLevelCallback(int maxMicLevel, int maxMixedMicLevel);- 功能
设置是否开启远端讲话音量级别回调, 并设置相应的参数。
- 参数说明
maxMicLevel: 单个用户音量对应的最大级别,需大于1,最大可设100。根据实际需要设置小于100的值可以减少回调的次数(注意设置较高的值可能会产生大量回调,特别在Unity上会影响其它事件到达,一般建议不超过30)。比如你只在UI上呈现10级的音量变化,那就设10就可以了。设 0 表示关闭回调。
maxMixedMicLevel: 所有远端用户音量混音后对应的最大级别,需大于1,最大可设100。根据实际需要设置小于100的值可以减少回调的次数(注意设置较高的值可能会产生大量回调,特别在Unity上会影响其它事件到达,一般建议不超过30)。比如你只在UI上呈现10级的音量变化,那就设10就可以了。设 0 表示关闭回调。
- 返回值
如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。
- 异步回调
通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。
YOUME_EVENT_FAREND_VOICE_LEVEL:远端讲话音量级别;将 err 转为 int 读取音量值,param 携带单个用户 ID,混音级别通知的 param 为空。
通话管理
暂停通话
- 语法
YouMeErrorCode PauseChannel();- 功能
暂停通话,释放对麦克风等设备资源的占用。当需要用第三方模块临时录音时,可调用这个接口。
- 参数说明
无。
- 返回值
返回 YouMeErrorCode.YOUME_SUCCESS 仅表示请求已受理;其他值表示失败,具体参见 YouMeErrorCode 类型定义。最终结果参见下方异步回调。
- 异步回调
通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。
YOUME_EVENT_PAUSED:暂停语音频道完成。
恢复通话
- 语法
YouMeErrorCode ResumeChannel();- 功能
恢复通话,调用PauseChannel暂停通话后,可调用这个接口恢复通话。(恢复通话后的麦克风的状态是和重新恢复通话时的角色相关,不一定与PauseChannel暂停通话时的麦克风状态一致)
- 参数说明
无。
- 返回值
返回 YouMeErrorCode.YOUME_SUCCESS 仅表示请求已受理;其他值表示失败,具体参见 YouMeErrorCode 类型定义。最终结果参见下方异步回调。
- 异步回调
通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。
YOUME_EVENT_RESUMED:恢复语音频道完成。
抢麦连麦
抢麦相关设置
- 语法
YouMeErrorCode SetGrabMicOption(string pChannelID, int mode, int maxAllowCount, int maxTalkTime, uint voteTime);- 功能
抢麦相关设置(抢麦活动发起前调用此接口进行设置)。
- 参数说明
pChannelID:抢麦活动的频道id。
mode:抢麦模式(1:先到先得模式;2:按权重分配模式)。先到先得模式中,抢麦活动会持续,用户可以继续抢其他用户释放的麦。
maxAllowCount:允许能抢到麦的最大人数(要大于0)。
maxTalkTime:允许抢到麦后使用麦的最大时间(单位:秒,要大于0)。
voteTime:抢麦仲裁时间(单位:秒,要大于0),过了X秒后服务器将进行仲裁谁最终获得麦(仅在按权重分配模式下有效)。
- 返回值
如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。
- 异步回调
无。本接口不单独返回异步完成通知。
发起抢麦活动
- 语法
YouMeErrorCode StartGrabMicAction(string pChannelID, string pContent);- 功能
发起抢麦活动。接口需要加入房间后再调用。
- 参数说明
pChannelID:抢麦活动的频道id。
pContent:游戏传入的上下文内容,通知回调会传回此内容(目前只支持纯文本格式)。
- 返回值
返回 YouMeErrorCode.YOUME_SUCCESS 仅表示请求已受理;其他值表示失败,具体参见 YouMeErrorCode 类型定义。最终结果参见下方异步回调。
- 异步回调
通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。
YOUME_EVENT_GRABMIC_START_OK:发起抢麦活动成功。YOUME_EVENT_GRABMIC_START_FAILED:发起失败。YOUME_EVENT_GRABMIC_NOTIFY_START:频道内的抢麦活动开始通知。
停止抢麦活动
- 语法
YouMeErrorCode StopGrabMicAction(string pChannelID, string pContent);- 功能
停止抢麦活动。先到先得模式下,抢麦成功后,调用停止抢麦不会把当前抢麦人踢下麦。
- 参数说明
pChannelID:抢麦活动的频道id。
pContent:游戏传入的上下文内容,通知回调会传回此内容(目前只支持纯文本格式)。
- 返回值
返回 YouMeErrorCode.YOUME_SUCCESS 仅表示请求已受理;其他值表示失败,具体参见 YouMeErrorCode 类型定义。最终结果参见下方异步回调。
- 异步回调
通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。
YOUME_EVENT_GRABMIC_STOP_OK:停止抢麦活动成功。YOUME_EVENT_GRABMIC_STOP_FAILED:停止失败。YOUME_EVENT_GRABMIC_NOTIFY_STOP:频道内的抢麦活动结束通知。
发起抢麦请求
- 语法
YouMeErrorCode RequestGrabMic(string pChannelID, int score, bool isAutoOpenMic, string pContent);- 功能
发起抢麦请求。
- 参数说明
pChannelID:抢麦的频道id。
score:积分(权重分配模式下有效,游戏根据自己实际情况设置)。
isAutoOpenMic:抢麦成功后是否自动开启麦克风权限。
pContent:游戏传入的上下文内容,通知回调会传回此内容(目前只支持纯文本格式)。
- 返回值
返回 YouMeErrorCode.YOUME_SUCCESS 仅表示请求已受理;其他值表示失败,具体参见 YouMeErrorCode 类型定义。最终结果参见下方异步回调。
- 异步回调
通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。
YOUME_EVENT_GRABMIC_REQUEST_OK:抢麦成功,可以讲话。YOUME_EVENT_GRABMIC_REQUEST_FAILED:抢麦失败。YOUME_EVENT_GRABMIC_REQUEST_WAIT:进入等待队列,仅权重模式产生。YOUME_EVENT_GRABMIC_ENDMIC:因使用时长到期或其他原因不再占用麦。
释放抢到的麦
- 语法
YouMeErrorCode ReleaseGrabMic(string pChannelID);- 功能
释放抢到的麦。
- 参数说明
pChannelID:抢麦的频道id。
- 返回值
返回 YouMeErrorCode.YOUME_SUCCESS 仅表示请求已受理;其他值表示失败,具体参见 YouMeErrorCode 类型定义。最终结果参见下方异步回调。
- 异步回调
通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。
YOUME_EVENT_GRABMIC_RELEASE_OK:释放麦成功。YOUME_EVENT_GRABMIC_RELEASE_FAILED:释放麦失败。
连麦相关设置
- 语法
YouMeErrorCode SetInviteMicOption(string pChannelID, int waitTimeout, int maxTalkTime);- 功能
连麦相关设置(角色是频道的管理者或者主播时调用此接口进行频道内的连麦设置)。
- 参数说明
pChannelID:连麦的频道id。
waitTimeout:等待对方响应超时时间(秒)。
maxTalkTime:最大通话时间(秒)。
- 返回值
返回 YouMeErrorCode.YOUME_SUCCESS 仅表示请求已受理;其他值表示失败,具体参见 YouMeErrorCode 类型定义。最终结果参见下方异步回调。
- 异步回调
通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。
YOUME_EVENT_INVITEMIC_SETOPT_OK:连麦设置成功。YOUME_EVENT_INVITEMIC_SETOPT_FAILED:连麦设置失败。
发起与某人的连麦请求
- 语法
YouMeErrorCode RequestInviteMic(string pChannelID, string pUserID, string pContent);- 功能
发起与某人的连麦请求(主动呼叫)。支持跨频道发起连麦。
- 参数说明
pChannelID:连麦的频道id。
pUserID:被叫方的用户id。
pContent:游戏传入的上下文内容,通知回调会传回此内容(目前只支持纯文本格式)。
- 返回值
返回 YouMeErrorCode.YOUME_SUCCESS 仅表示请求已受理;其他值表示失败,具体参见 YouMeErrorCode 类型定义。最终结果参见下方异步回调。
- 异步回调
通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。
YOUME_EVENT_INVITEMIC_REQUEST_OK:请求已发出,仍需等待对方回应。YOUME_EVENT_INVITEMIC_REQUEST_FAILED:请求失败。YOUME_EVENT_INVITEMIC_NOTIFY_ANSWER:对方回应同意、拒绝或超时。YOUME_EVENT_INVITEMIC_CAN_TALK:双方可以通话。
对连麦请求做出回应
- 语法
YouMeErrorCode ResponseInviteMic(string pUserID, bool isAccept, string pContent);- 功能
对连麦请求做出回应(被动应答)。
- 参数说明
pUserID:主叫方的用户id。
isAccept:是否同意连麦。
pContent:游戏传入的上下文内容,通知回调会传回此内容(目前只支持纯文本格式)。
- 返回值
返回 YouMeErrorCode.YOUME_SUCCESS 仅表示请求已受理;其他值表示失败,具体参见 YouMeErrorCode 类型定义。最终结果参见下方异步回调。
- 异步回调
通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。
YOUME_EVENT_INVITEMIC_RESPONSE_OK:回应请求处理成功;err=YOUME_ERROR_INVITEMIC_REJECT 表示拒绝。YOUME_EVENT_INVITEMIC_RESPONSE_FAILED:回应请求处理失败。YOUME_EVENT_INVITEMIC_CAN_TALK:对方被接受后,双方可以通话。
停止连麦
- 语法
YouMeErrorCode StopInviteMic();- 功能
停止连麦。
- 参数说明
无。
- 返回值
返回 YouMeErrorCode.YOUME_SUCCESS 仅表示请求已受理;其他值表示失败,具体参见 YouMeErrorCode 类型定义。最终结果参见下方异步回调。
- 异步回调
通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。
YOUME_EVENT_INVITEMIC_STOP_OK:停止连麦成功。YOUME_EVENT_INVITEMIC_STOP_FAILED:停止连麦失败。YOUME_EVENT_INVITEMIC_CANNOT_TALK:双方已不能继续连麦通话。YOUME_EVENT_INVITEMIC_NOTIFY_CANCEL:对方结束连麦或连麦时长到期的通知。
战歌管理
播放战歌
- 语法
YouMeErrorCode PlayBackgroundMusic(string strFilePath, bool bRepeat);- 功能
播放指定的音乐文件。播放的音乐将会通过扬声器输出,并和语音混合后发送给接收方。这个功能必须进入频道传入身份为主播/指挥才能使用。建议使用mp3格式的文件,目前wav、flac格式的文件不支持。(windows程序目前只支持win32程序,win64程序暂不支持)
- 参数说明
strFilePath:音乐文件的路径。
bRepeat:是否重复播放,true——重复播放,false——只播放一次就停止播放。
- 返回值
返回YOUME_SUCCESS才会有异步回调通知。其它返回值请参考YouMeErrorCode类型定义。
- 异步回调
通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。
YOUME_EVENT_BGM_STOPPED:战歌播放结束。YOUME_EVENT_BGM_FAILED:战歌播放失败。
停止播放战歌
- 语法
YouMeErrorCode StopBackgroundMusic();- 功能
停止播放当前正在播放的战歌。 这是一个同步调用接口,函数返回时,音乐播放也就停止了。
- 参数说明
无。
- 返回值
如果成功返回YOUME_SUCCESS,表明成功停止了音乐播放流程;否则返回错误码,具体请参考YouMeErrorCode类型定义。
- 异步回调
无。本接口不单独返回异步完成通知。
设置战歌播放音量
- 语法
YouMeErrorCode SetBackgroundMusicVolume(int volume);- 功能
设定战歌的音量。这个接口用于调整战歌和语音之间的相对音量,使得战歌和语音混合听起来协调。 这是一个同步调用接口。
- 参数说明
volume:战歌的音量,范围 [0-100]。
- 返回值
如果成功(表明成功设置了战歌的音量)返回YOUME_SUCCESS,否则返回错误码,具体请参考YouMeErrorCode类型定义。
- 异步回调
无。本接口不单独返回异步完成通知。
语音举报
语音举报功能需要联系游密进行开通。
语音举报流程:
- 调用
Init,等待初始化成功事件。 - 调用
JoinChannel,等待进房成功事件。 - 调用
SetReportInfo设置本机举报音频缓存;被举报端需已配置本地缓存。 - 用户 A 调用
ReportUserAudio举报用户 B。 - 用户 B 收到被举报信令后,将本地缓存的最近
nTimeSec秒语音(不超过 60 秒)上报到游密服务器。
配置举报音频缓存
- 语法
YouMeErrorCode SetReportInfo(int nTimeSec, string language);- 功能
初始化成功后配置本机最近音频缓存的时长及语种,用于被举报时上报;本接口不直接发起举报。
- 参数说明
nTimeSec:缓存时长(秒),有效范围 0~60,超出范围按 60 秒处理。
language:ISO 639 语言代码。
- 返回值
返回 YOUME_SUCCESS 表示设置成功;其他值表示失败,具体参见 YouMeErrorCode 类型定义。
- 异步回调
无。本接口不单独返回异步完成通知。
举报指定用户
- 语法
YouMeErrorCode ReportUserAudio(string reportUserID, string roomID, string customData);- 功能
举报方发送举报请求,被举报用户按流程上报本地缓存音频给服务端检查。需要开通对应服务,且被举报端已配置本地缓存。
- 参数说明
reportUserID:非空的被举报用户 ID。
roomID:被举报用户所在房间 ID。空字符串在单房间模式下表示本房间,在多房间模式下表示第一次加入的房间。
customData:业务自定义字符串,透传。
- 返回值
返回 YouMeErrorCode.YOUME_SUCCESS 仅表示请求已受理;其他值表示失败,具体参见 YouMeErrorCode 类型定义。请求受理不等于举报判定成功。
- 异步回调
通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。
YOUME_EVENT_SEND_REPORT_REQ_ACK:举报者收到的发送举报请求响应。YOUME_EVENT_REPORT_AUDIO_SERVER_NOTIFY:被举报端收到的音频上报服务器结果。YOUME_EVENT_REPORT_AUDIO_MASK_NOTIFY:被禁言通知。
根据各事件的 err 和 param 处理结果。
设置监听
- 语法
YouMeErrorCode SetHeadsetMonitorOn(bool micEnabled, bool bgmEnabled = true);- 功能
设置是否用耳机监听本机的麦克风声音或战歌。这是一个同步调用接口,进入频道时使用主播/指挥身份才能使用。
- 参数说明
micEnabled:是否监听麦克风 true 监听,false 不监听。
bgmEnabled:是否监听战歌 true 监听,false 不监听。
- 返回值
如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。
- 异步回调
无。本接口不单独返回异步完成通知。
混响音效
设置混响音效
- 语法
YouMeErrorCode SetReverbEnabled(bool enabled);- 功能
设置是否开启混响音效,这个主要对主播/指挥有用。
- 参数说明
enabled:true 开启混响音效,false 关闭。
- 返回值
如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。
- 异步回调
无。本接口不单独返回异步完成通知。
设置混响音效类型
- 语法
YouMeErrorCode SetAudioEffectType(YouMeAudioEffectType effectType);- 功能
初始化成功后按业务需要设置混响音效类型。
- 参数说明
effectType:YouMeAudioEffectType 枚举;具体参见YouMeAudioEffectType定义。
- 返回值
返回 YOUME_SUCCESS 表示设置请求已受理,混响音效随后生效;其他值表示失败,具体参见 YouMeErrorCode 类型定义。
- 异步回调
无。本接口不单独返回异步完成通知。
变声音调
获取变声音调
- 语法
float GetSoundtouchPitchSemiTones();- 功能
获取变声音调(增值服务,需要后台配置开启)。
- 参数说明
无。
- 返回值
当前变声音调的值,范围[-12 ~ +12]。
- 异步回调
无。本接口不单独返回异步完成通知。
设置变声音调
- 语法
YouMeErrorCode SetSoundtouchPitchSemiTones(float fPitchSemiTones);- 功能
设置变声音调(增值服务,需要后台配置开启),需在进入房间成功后调用,仅对当前房间有效,退出房间时重置为0。目前该接口在windows中只支持win32。
- 参数说明
fPitchSemiTones:变声音调的值,范围[-12 ~ +12]。
- 返回值
如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。
- 异步回调
无。本接口不单独返回异步完成通知。
广播消息
- 语法
YouMeErrorCode SendMessage(string channelID, string content, ref int requestID);- 功能
在语音频道内,广播一个文本消息。
- 参数说明
channelID:自己已加入的频道 ID。
content:要广播的文本内容。
requestID:ref 输出参数,SDK 返回的消息请求 ID,用于关联发送结果。
- 返回值
返回 YouMeErrorCode.YOUME_SUCCESS 仅表示请求已受理;其他值表示失败,具体参见 YouMeErrorCode 类型定义。最终结果参见下方异步回调。
- 异步回调
通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。
YOUME_EVENT_SEND_MESSAGE_RESULT:发送结果,param 为回传 requestID。YOUME_EVENT_MESSAGE_NOTIFY:频道内其他用户收到文本消息,param 为 content 内容。
设置时间戳
设置录音时间戳
- 语法
void SetRecordingTimeMs(uint timeMs);- 功能
设置当前录音的时间戳。当通过录游戏脚本进行直播时,要保证观众端音画同步,在主播端需要进行时间对齐。 这个接口设置的就是当前游戏画面录制已经进行到哪个时间点了。
- 参数说明
timeMs:当前游戏画面对应的时间点,单位为毫秒。
- 返回值
无。
- 异步回调
无。本接口不单独返回异步完成通知。
设置播放时间戳
- 语法
void SetPlayingTimeMs(uint timeMs);- 功能
设置当前声音播放的时间戳。当通过录游戏脚本进行直播时,要保证观众端音画同步,游戏画面的播放需要和声音播放进行时间对齐。 这个接口设置的就是当前游戏画面播放已经进行到哪个时间点了。
- 参数说明
timeMs:当前游戏画面播放对应的时间点,单位为毫秒。
- 返回值
无。
- 异步回调
无。本接口不单独返回异步完成通知。
移动网络设置
设置是否允许使用移动网络
- 语法
void SetUseMobileNetworkEnabled(bool bEnabled);- 功能
设置是否允许使用移动网络。在WIFI和移动网络都可用的情况下会优先使用WIFI,在没有WIFI的情况下,如果设置允许使用移动网络,那么会使用移动网络进行语音通信,否则通信会失败。该接口需要在初始化后,加入房间前设置。
- 参数说明
bEnabled:true——允许使用移动网络,false——禁止使用移动网络。
- 返回值
无(void)。
- 异步回调
无。本接口不单独返回异步完成通知。
获取是否允许使用移动网络
- 语法
bool GetUseMobileNetworkEnabled();- 功能
获取是否允许SDK在没有WIFI的情况使用移动网络进行语音通信。
- 参数说明
无。
- 返回值
true——允许使用移动网络,false——禁止使用移动网络,默认情况下允许使用移动网络。
- 异步回调
无。本接口不单独返回异步完成通知。
网络质量检测
开始网络质量检测
- 语法
YouMeErrorCode DetectNetworkQuality(int nDetectTime, int nOverTime, int nInterval, int nPackSize);- 功能
开始网络质量检测。
- 参数说明
nDetectTime:发包检测时长,单位为秒,建议3秒,范围(0,100]。
nOverTime:检测终止时长,单位为秒,建议4秒,范围(0,110]。
nInterval:发包间隔,单位毫秒,建议20毫秒,范围(0,30000],发包间隔不能超过检测时长或终止时长。
nPackSize:发包大小,单位字节,建议300字节,范围[64,1400]。
- 返回值
返回 YouMeErrorCode.YOUME_SUCCESS 仅表示请求已受理;其他值表示失败,具体参见 YouMeErrorCode 类型定义。最终结果参见下方异步回调。
- 异步回调
检测完成后由 SetOnDetectNetworkCompleteCallback 的委托接收 (bool bNetworkOk, string strResult);未设置委托时由 GameObject 的 onDetectNetWorkComplete 接收。strResult 为 JSON,包含 avgRtt(毫秒)和 lossPer(0~1)。
终止网络质量检测
- 语法
YouMeErrorCode StopDetectNetworkQuality();- 功能
终止检测网络质量。终止后将不会收到onDetectNetWorkComplete回调。
- 参数说明
无。
- 返回值
如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。
- 异步回调
无独立终止完成回调。终止后不再继续等待该次网络检测结果。
用户体验问卷
用户体验问卷,是针对用户使用游密服务后对游密服务的体验反馈。游密依据后台对用户使用产品的质量监测,选择性下发问卷任务。默认针对同一个用户,24小时内最多只下发一次问卷任务。问卷弹框样式SDK内有默认实现,业务侧可以根据需要进行修改 YouMeSurveyPanel。问卷在游戏应用内弹框,不会跳转到外部。业务侧可以选择合适的时机(例如一局游戏结束后),调用 CanOpenSurvey 接口查询是否有可打开的用户体验问卷任务,如果有则调用 OpenSurvey() 接口弹出问卷弹框。玩家提交问卷时触发事件 OnSurveySubmitted, 业务侧可以据此为玩家发放奖励或进行其他操作。
用户体验问卷使用静态类 YouMeSurveyAPI,该类不在 YouMe 命名空间内,直接以 YouMeSurveyAPI.成员名 调用。业务侧需完整导入 SDK 的 Survey 模块及 Resources/YouMeSurveyPanel.prefab。
打开问卷界面
- 语法
public static bool OpenSurvey();
public static bool OpenSurvey(UnityEngine.Transform uiParent);- 功能
打开问卷界面,SDK 自动选择当前账号可打开的用户体验问卷。无参数重载使用 SDK 自建全屏覆盖层;指定父节点重载将面板挂到游戏 uGUI 节点下。重复打开同一任务保留已有作答。
- 参数说明
无参数重载:无。
uiParent:问卷面板的 uGUI 父节点;传 null 时使用 SDK 自建覆盖层。
- 返回值
true 表示界面已打开;false 表示当前没有可打开任务。可先用 CanOpenSurvey 查询,但仍需检查打开结果。
- 异步回调
没有打开完成回调。玩家点击提交时触发 OnSurveySubmitted;该事件不表示答案已成功保存到服务端。
关闭问卷界面
- 语法
public static void CloseSurvey();- 功能
关闭已打开的问卷界面,未打开时无副作用;关闭不视为提交或完成问卷。
- 参数说明
无。
- 返回值
无(void)。
- 异步回调
无。关闭操作不触发 OnSurveySubmitted。
查询问卷界面是否已打开
- 语法
public static bool IsSurveyOpen();- 功能
同步查询问卷界面当前是否处于打开状态。
- 参数说明
无。
- 返回值
true 表示已打开,false 表示未打开。
- 异步回调
无。本接口不单独返回异步完成通知。
查询当前是否有可打开的问卷任务
- 语法
public static bool CanOpenSurvey();- 功能
同步查询当前账号是否有可打开的用户体验问卷任务;由业务在合适时机查询,有任务时直接调用 OpenSurvey。
- 参数说明
无。
- 返回值
true 表示当前账号有可打开任务,false 表示没有。
- 异步回调
无。本接口不单独返回异步完成通知。
获取当前可打开的问卷任务ID
- 语法
public static ulong CurrentTaskId();- 功能
查询当前账号可打开的问卷任务 ID;这不是界面打开状态的判断。
- 参数说明
无。
- 返回值
返回 ulong 任务 ID;没有可打开任务时返回 0,预览模式下返回内置预览任务 ID。
- 异步回调
无。本接口不单独返回异步完成通知。
问卷提交操作
- 语法
public static event System.Action<ulong> OnSurveySubmitted;- 功能
通知玩家在问卷界面点击了提交。业务用 += 订阅、-= 取消订阅,可据此处理奖励等逻辑。
- 参数说明
taskId:事件处理委托的 ulong 参数,表示本次问卷任务 ID。
- 返回值
事件处理委托无返回值(void)。事件成员本身没有同步调用返回值。
- 异步回调
玩家点击提交时触发,时机在网络提交之前,不表示已成功提交到服务端。预览模式下点击提交也会触发。
预览用户体验问卷
- 语法
public static bool useMockData { get; set; }- 功能
预览用户体验问卷。启用后使用内置数据,不校验真实任务标志、不向问卷服务器请求题目或提交答案。仅编辑器和 Development Build 可启用;正式发布包设置 true 会被忽略,接入真实任务时使用 false。
- 参数说明
属性没有方法参数。写入 value:true 启用预览,false 使用真实任务。
- 返回值
读取返回 bool,表示当前是否启用预览;属性写入无返回值。预览结果不能当作真实答卷提交成功。
- 异步回调
属性读写没有异步完成通知。预览界面点击提交仍会触发 OnSurveySubmitted。
用户体验问卷接入示例代码
using UnityEngine;
public class SurveyExample : MonoBehaviour
{
void OnEnable()
{
YouMeSurveyAPI.OnSurveySubmitted += OnSubmitted;
}
// 由业务在合适的时机调用,例如一局游戏结束后。
public void TryOpenSurvey()
{
if (!YouMeSurveyAPI.CanOpenSurvey()) return;
if (!YouMeSurveyAPI.OpenSurvey())
Debug.Log("当前无法打开用户体验问卷");
}
void OnSubmitted(ulong taskId)
{
Debug.Log($"玩家点击提交用户体验问卷:{taskId}");
// 在此处理玩家提交后的业务逻辑,例如发放奖励。
}
void OnDisable()
{
YouMeSurveyAPI.OnSurveySubmitted -= OnSubmitted;
}
}版本与日志
获取 SDK 版本
- 语法
int GetSDKVersion();- 功能
查询 SDK 版本号。
- 参数说明
无。
- 返回值
返回压缩整数 SDK 版本号。
- 异步回调
无。本接口不单独返回异步完成通知。
上传 SDK 日志
- 语法
YouMeErrorCode UploadLog(string userID, int timeout, UnityUploadLogProgressCallbackDelegate cbProgress, int msCdProgress);
public delegate void UnityUploadLogProgressCallbackDelegate(
int progress, YouMeErrorCode errcode, string message);- 功能
异步上传 SDK 日志用于问题诊断。需要 SDK 已初始化、尚未反初始化,并已退出所有频道;同一时刻只能进行一次日志上传。
- 参数说明
| 参数 | 说明 |
|---|---|
| userID | 非空的日志上传用户ID |
| timeout | 超时秒数,非负;设置为0表示无超时时间限制 |
| cbProgress | 日志上传进度回调,通过回调返回进度百分比,错误代码,描述文字信息。如果回调进度为100,并且错误代码是 YOUME_SUCCESS,表示上传完成。 |
| msCdProgress | 日志上传进度回调冷却时间,毫秒单位,设置为0表示无回调频率限制 |
- 返回值
返回 YOUME_SUCCESS 仅表示上传已发起;其他值表示失败,具体参见 YouMeErrorCode 类型定义。
日志上传错误枚举如下,完整定义见 状态码页。
| 错误码 | 值 | 含义 |
|---|---|---|
YOUME_ERROR_UPLOAD_LOG_TIMEOUT | -117 | 日志上传超时 |
YOUME_ERROR_UPLOAD_LOG_FILE_ERROR | -118 | 日志上传内部错误 |
YOUME_ERROR_UPLOAD_LOG_NETWORK_ERROR | -119 | 日志上传发生网络错误 |
YOUME_ERROR_UPLOAD_LOG_SERVER_ERROR | -120 | 日志上传发生服务器错误 |
- 异步回调
通过 cbProgress 在主线程接收进度:progress 为百分比,errcode 为错误码,message 为描述。progress=100 且 errcode=YOUME_SUCCESS 表示上传完成;发生错误时读取 errcode 和 message。发起后不能立即 UnInit,应等待上传完成或先调用 AbortUploadLog。
终止日志上传
- 语法
YouMeErrorCode AbortUploadLog();- 功能
同步终止当前日志上传,并清除日志上传进度委托。
- 参数说明
无。
- 返回值
返回 YOUME_SUCCESS 表示终止成功;其他值表示失败,具体参见 YouMeErrorCode 类型定义。
- 异步回调
无独立终止完成回调;本接口会清除上传进度委托。
反初始化
- 语法
YouMeErrorCode UnInit();- 功能
反初始化引擎,可在退出游戏时调用,以释放SDK所有资源。
- 参数说明
无。
- 返回值
如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。
- 异步回调
无。本接口不单独返回异步完成通知。
变声相关文档
需要配合游密变声管理模块文档使用。
设置变声是否可用
- 语法
YouMeErrorCode SetMagicVoiceEnable(bool enabled);- 功能
设置变声是否可用。
- 参数说明
enabled:设置变声是否可用,开启后会略微增大声音延迟。
- 返回值
如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。
- 异步回调
无。本接口不单独返回异步完成通知。
