文档导航 Unity C#
本页目录

Talk SDK for Unity3D API接口手册

相关异步/同步处理方法介绍

Unity 通过 YouMe 命名空间下的 C# 接口使用 Talk SDK。接口返回 YouMeErrorCode.YOUME_SUCCESS 时,含义取决于接口:同步接口表示本次操作成功;异步接口仅表示请求已受理,最终结果需等待对应回调。返回其他错误码时应立即处理,不能继续等待成功回调。

SDK 创建的回调组件在 Unity 主线程定时派发回调。回调中可以更新 Unity UI,但应避免执行耗时任务。通用事件的 err 通常为错误码;音量等事件会用该字段传数值,请按事件定义解释。

API调用说明

C#
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。

通用事件回调

  • 语法
C#
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 类型定义。

  • 异步回调

注册本身没有独立完成事件。后续通用事件通过该委托异步派发。

示例:

C#
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}");
    }
});

网络检测回调

  • 语法
C#
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 后,检测结果通过该委托返回。

音频统计回调

  • 语法
C#
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 消息方法。

成员列表回调

  • 语法
C#
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 类型定义。

  • 异步回调

注册本身没有独立完成事件。查询结果及已开启的成员变更通知通过该委托返回。

示例:

JSON
{"channelid":"room1","memchange":[{"isJoin":true,"userid":"user1"}]}

房间广播回调

  • 语法
C#
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 返回。

设置音频数据回调

  • 语法
C#
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 主线程回调中执行耗时处理。

示例:

C#
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);

按事件增加监听

  • 语法
C#
static void AddEventListener(YouMeEvent eventType, UnityOnEventCallbackDelegate callback);
  • 功能

为一个通用事件增加监听;同一事件可有多个监听者,同一委托重复注册只生效一次。监听独立于全局委托和 GameObject 消息,同一业务同时订阅多种方式时应避免重复处理。

  • 参数说明

eventType:要订阅的 YouMeEvent 事件类型。

callback:接收该事件的 UnityOnEventCallbackDelegate 委托,载荷含 evt、err、channel、param,解释方式与通用事件回调一致。

  • 返回值

无(void)。

  • 异步回调

事件发生时通过 callback 异步通知;注册本身没有独立完成事件。

移除事件监听

  • 语法
C#
static void RemoveEventListener(YouMeEvent eventType, UnityOnEventCallbackDelegate callback);
  • 功能

移除通过 AddEventListener 注册的事件监听。建议在模块停用或销毁时调用;使用 lambda 时需保存委托实例,不能创建另一个 lambda 来移除。

  • 参数说明

eventType:注册时使用的事件类型。

callback:注册时使用的同一委托实例。

  • 返回值

无(void)。

  • 异步回调

移除操作没有异步完成通知。

示例:

C#
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 回调(旧方案)

设置回调

  • 语法
C#
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 消息方法。

事件回调

  • 语法
C#
void OnEvent(string strParam);
  • 功能

由业务实现的 GameObject 通用事件接收方法,处理初始化、进退频道和设备状态等通知。

  • 参数说明

strParam:按 event,error,channel,param 拼接。event 为 YouMeEvent 整数值;error 通常为 YouMeErrorCode 整数值,音量/角色等事件携带业务数值;channel 为相关频道 ID;param 为附加信息。最多分为 4 段,保留 param 中的逗号。

  • 返回值

无(void)。

  • 异步回调

SDK 在事件发生时调用此方法;若已设置非空的 SetOnEventCallback 委托,同类事件不再向 GameObject 发送。其他事件见 YouMeEvent 类型定义。

示例:

C#
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;
    }
}

网络质量检测回调

  • 语法
C#
void onDetectNetWorkComplete(string strParam);
  • 功能

由业务实现的 GameObject 网络质量检测结果接收方法。

  • 参数说明

strParam:为 JSON 字符串,字段如下。

字段类型及说明
type整数,网络检测回调类型值为 4
bNetworkOK整数,1 表示网络可用,0 表示不可用
resultJSON 字符串;内部包含 avgRtt(平均往返延迟,整数,单位毫秒)和 lossPer(丢包率,浮点数,范围 0~1)
  • 返回值

无(void)。

  • 异步回调

调用 DetectNetworkQuality 后接收检测结果;已设置非空 SetOnDetectNetworkCompleteCallback 委托时不再向 GameObject 发送。

先解析外层 JSON,再将 result 字符串解析为 JSON 读取检测数值。

示例:

JSON
{
  "type": 4,
  "bNetworkOK": 1,
  "result": "{\"avgRtt\":39,\"lossPer\":0.0}"
}

获取成员列表及成员变更回调

  • 语法
C#
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 表示后续变更。

示例:

JSON
{
  "type": 2,
  "channelid": "room1",
  "memchange": [
    { "userid": "user1", "isJoin": true },
    { "userid": "user2", "isJoin": false }
  ]
}

房间广播回调

  • 语法
C#
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 接收。

回调派发配置

设置事件优先级

  • 语法
C#
YouMeErrorCode SetEventCallbackPriority(YouMeEvent evt, YouMeMessagePriority priority);
  • 功能

初始化成功后设置通用事件的派发优先级。它影响队列调度,不改变事件业务含义,也不替代等待初始化、进房结果的要求。

  • 参数说明

evt:要设置优先级的 YouMeEvent 事件类型。

priority:YouMeMessagePriority 优先级,使用 MsgPriority_Low、MsgPriority_Middle 或 MsgPriority_High。

  • 返回值

返回 YOUME_SUCCESS 表示设置成功;引擎尚未初始化时可返回 YOUME_ERROR_NOT_INIT。其他值表示失败,具体参见 YouMeErrorCode 类型定义。

  • 异步回调

无。本接口不单独返回异步完成通知。

查询事件优先级

  • 语法
C#
YouMeMessagePriority GetEventCallbackPriority(YouMeEvent evt);
  • 功能

查询指定通用事件当前的派发优先级。

  • 参数说明

evt:要查询的事件类型。

  • 返回值

返回 YouMeMessagePriority;引擎未初始化时返回 MsgPriority_Middle,因此不能用该值判断是否已初始化。

  • 异步回调

无。本接口不单独返回异步完成通知。

设置单次派发数量

  • 语法
C#
void SetOnceCallbackMaxEvents(int maxCount);
  • 功能

设置回调组件每次轮询从事件队列获取的最大事件数,默认 10。调大可加快积压事件处理,但会增加单次主线程耗时;它不是每帧严格上限,也不限制独立队列中的 PCM、日志进度等委托任务。

  • 参数说明

maxCount:单次轮询的最大事件数,传正整数。

  • 返回值

无(void)。

  • 异步回调

无。本接口不单独返回异步完成通知。

初始化

  • 语法
C#
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 错误。

服务器区域

设置服务器区域

  • 语法
C#
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)。

  • 异步回调

无。本接口不单独返回异步完成通知。

设置服务器区域(全)

  • 语法
C#
void SetServerRegion(string[] regionNames);
  • 功能

设置参与通话各方所在的区域,这个接口适合于分布区域比较广的应用。最简单的做法是只设定前用户所在区域。但如果能确定其他参与通话的应用所在的区域,则能使服务器选择更优。

  • 参数说明

regionNames:指定参与通话各方区域的数组,数组里每个元素为一个区域代码。用户可以自行定义代表各区域的字符串(如中国用 "cn" 或者 “ch"表示),然后把定义好的区域表同步给游密,游密会把这些定义配置到后台,在实际运营时选择最优服务器。

单区域重载替换当前区域配置(内部 append=false),不接受第三个参数。string[] 重载以第一个区域替换配置,再依次追加其他区域;请传非空数组,数组元素为已在后台配置的扩展区域名。

  • 返回值

无(void)。

  • 异步回调

无。本接口不单独返回异步完成通知。

安全验证码设置V3版本

  • 语法
C#
void SetTokenV3(string strToken, uint timestamp);
  • 功能

设置进房身份验证 token。先联系游密后台开启对应鉴权配置,token 由业务服务端按已配置规则生成;客户端在进房前设置 token 及其生成时使用的相同时间戳。

  • 参数说明

strToken:身份验证 token 字符串;传空字符串清空当前 token。

timestamp:Unix 时间戳,单位秒,C# 类型 uint。不能传毫秒时间戳或使用旧 long 签名。

  • 返回值

无(void)。

  • 异步回调

无。本接口不单独返回异步完成通知。

语音频道管理

加入语音频道

  • 语法
C#
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 处理原因。

示例:

C#
// 单频道自由通话,须显式传 true。
api.JoinChannel("user1", "team1", YouMeUserRole.YOUME_USER_TALKER_FREE, true, false);
// 多频道听众,仅加入已存在的频道。
api.JoinChannel("user1", "radio1", YouMeUserRole.YOUME_USER_LISTENER, false, true);

当前是否在语音频道中

  • 语法
C#
bool IsInAnyChannel();
  • 功能

查询当前是否在语音频道中。

  • 参数说明

无。

  • 返回值

返回true表示当前在语音频道中,否则当前不在语音频道内。

  • 异步回调

无。本接口不单独返回异步完成通知。

指定讲话频道

  • 语法
C#
YouMeErrorCode SpeakToChannel(string strChannelID);
  • 功能

多频道模式下,指定当前要讲话的频道。

  • 参数说明

strChannelID:全局唯一的频道标识,全局指在当前应用程序的范围内。

  • 返回值

返回 YouMeErrorCode.YOUME_SUCCESS 仅表示请求已受理;其他值表示失败,具体参见 YouMeErrorCode 类型定义。最终结果参见下方异步回调。

  • 异步回调

通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。

  • YOUME_EVENT_SPEAK_SUCCESS:成功切换到指定讲话频道。
  • YOUME_EVENT_SPEAK_FAILED:切换失败,按 err 处理网络或服务端等原因。

退出指定的语音频道

  • 语法
C#
YouMeErrorCode LeaveChannel(string strChannelID);
  • 功能

多频道模式下,退出指定的语音频道。

  • 参数说明

strChannelID:全局唯一的频道标识,全局指在当前应用程序的范围内。

  • 返回值

返回 YouMeErrorCode.YOUME_SUCCESS 仅表示请求已受理;其他值表示失败,具体参见 YouMeErrorCode 类型定义。最终结果参见下方异步回调。

  • 异步回调

通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。

  • YOUME_EVENT_LEAVED_ONE:已退出指定频道。

退出所有语音频道

  • 语法
C#
YouMeErrorCode LeaveChannelAll();
  • 功能

退出所有的语音频道(单频道模式下直接调用此函数离开频道即可)。

  • 参数说明

无。

  • 返回值

返回 YouMeErrorCode.YOUME_SUCCESS 仅表示请求已受理;其他值表示失败,具体参见 YouMeErrorCode 类型定义。最终结果参见下方异步回调。

  • 异步回调

通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。

  • YOUME_EVENT_LEAVED_ALL:已退出全部频道。

屏蔽指定频道

  • 语法
C#
YouMeErrorCode BlockChannels(string strChannelList);
  • 功能

多频道模式下设置频道收听黑名单,屏蔽后仍留在频道内。每次设置的是完整列表,不是追加。

  • 参数说明

strChannelList:以 | 分隔的频道 ID 字符串,例如 "room1|room2";传空字符串清空黑名单。

  • 返回值

返回 YouMeErrorCode.YOUME_SUCCESS 仅表示请求已受理;其他值表示失败,具体参见 YouMeErrorCode 类型定义。

  • 异步回调

通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。

  • YOUME_EVENT_BLOCK_CHANNELS:频道黑名单设置结果;err=YOUME_SUCCESS 表示成功,其他值按错误码处理。

设置用户角色

  • 语法
C#
YouMeErrorCode SetUserRole(YouMeUserRole userRole);
  • 功能

单频道模式下进入房间后设置当前用户角色。角色影响讲话、战歌和监听权限;切换角色可能停止不再允许的音频功能。

  • 参数说明

userRole:有效的 YouMeUserRole 枚举,不能传 YOUME_USER_NONE。

  • 返回值

返回 YouMeErrorCode.YOUME_SUCCESS 表示调用成功;其他值表示失败,具体参见 YouMeErrorCode 类型定义。

  • 异步回调

通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。

  • YOUME_EVENT_IDENTITY_MODIFY:角色变化通知。err 携带角色值,通过 (YouMeUserRole)(int)err 读取。

获取用户角色

  • 语法
C#
YouMeUserRole GetUserRole();
  • 功能

单频道模式下查询当前用户角色,应在已进入房间时使用。

  • 参数说明

无。

  • 返回值

返回 YouMeUserRole 枚举,表示当前用户角色;不是 YouMeErrorCode。

  • 异步回调

无。本接口不单独返回异步完成通知。

设置白名单用户

  • 语法
C#
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:设置失败。

设置黑名单用户

  • 语法
C#
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 表示取消屏蔽/屏蔽,按通用事件定义处理。

查询频道用户列表

  • 语法
C#
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个用户。

把人踢出房间

  • 语法
C#
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、原因及被禁时长。

范围语音

加入范围语音频道

  • 语法
C#
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:加入失败。

更新范围语音位置

  • 语法
C#
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 类型定义。

  • 异步回调

无。本接口不单独返回异步完成通知。

设备状态管理

切换语音输出设备

  • 语法
C#
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 判断。

设置扬声器状态

  • 语法
C#
void SetSpeakerMute(bool bMute);
  • 功能

打开/关闭扬声器。该状态值在加入房间成功后设置才有效。(设备状态异步生效)

  • 参数说明

bMute:true 关闭扬声器,false 开启扬声器。

  • 返回值

无(void)。

  • 异步回调

通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。

  • YOUME_EVENT_LOCAL_SPEAKER_ON:本机扬声器开启状态通知,按 err 判断结果。
  • YOUME_EVENT_LOCAL_SPEAKER_OFF:本机扬声器关闭状态通知,按 err 判断结果。

设备状态异步生效,不应将紧接着的一次 GetSpeakerMute 查询视为硬件已完成切换。

获取扬声器状态

  • 语法
C#
bool GetSpeakerMute();
  • 功能

获取当前扬声器状态。同步读取 SDK 当前扬声器状态;开关设备生效需要时间,不应把紧接着的一次查询当作硬件已完成切换的保证。

  • 参数说明

无。

  • 返回值

true——扬声器关闭,false——扬声器开启。

  • 异步回调

无。本接口不单独返回异步完成通知。

设置麦克风状态

  • 语法
C#
void SetMicrophoneMute(bool mute);
  • 功能

打开/关闭麦克风。该状态值在加入房间成功后设置才有效。(设备状态异步生效)。

  • 参数说明

mute:true——关闭麦克风,false——开启麦克风。

  • 返回值

无(void)。

  • 异步回调

通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。

  • YOUME_EVENT_LOCAL_MIC_ON:本机麦克风开启状态通知,按 err 判断结果。
  • YOUME_EVENT_LOCAL_MIC_OFF:本机麦克风关闭状态通知,按 err 判断结果。

设备状态异步生效,不应将紧接着的一次 GetMicrophoneMute 查询视为硬件已完成切换。

获取麦克风状态

  • 语法
C#
bool GetMicrophoneMute();
  • 功能

获取当前麦克风状态。同步读取 SDK 当前麦克风状态;开关设备生效需要时间,不应把紧接着的一次查询当作硬件已完成切换的保证。

  • 参数说明

无。

  • 返回值

true——麦克风关闭,false——麦克风开启。

  • 异步回调

无。本接口不单独返回异步完成通知。

设置是否通知别人麦克风和扬声器的开关

  • 语法
C#
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 接收状态通知。

设置扬声器音量增益

  • 语法
C#
void SetVolume(uint uiVolume);
  • 功能

设置扬声器音量增益,实际扬声器音量 = 扬声器音量增益 x 系统音量。建议该状态值在加入房间成功后按需再重置一次。

  • 参数说明

uiVolume:扬声器音量增益,范围 0~100,表示百分比;100 对应乘法系数 1,0 表示无声。

  • 返回值

无(void)。

  • 异步回调

无。本接口不单独返回异步完成通知。

获取扬声器音量增益

  • 语法
C#
int GetVolume();
  • 功能

获取当前扬声器音量增益。本接口返回 SDK 的增益配置,不是实际扬声器音量。实际扬声器音量 = 扬声器音量增益 x 系统音量。

  • 参数说明

无。

  • 返回值

当前扬声器音量增益,范围 0~100(百分比)。

  • 异步回调

无。本接口不单独返回异步完成通知。

设置麦克风音量增益

  • 语法
C#
void SetMicVolume(uint uiVolume);
  • 功能

设置程序内部麦克风音量增益。放大过多可能失真。

  • 参数说明

uiVolume:范围 0~1000,100 为正常值,0 为无声,大于 100 为增益,小于 100 为减益。

  • 返回值

无(void)。

  • 异步回调

无。本接口不单独返回异步完成通知。

获取麦克风音量增益

  • 语法
C#
int GetMicVolume();
  • 功能

查询当前麦克风音量增益。它不是当前说话的实时音量;实时音量使用 SetMicLevelCallback 的事件结果。

  • 参数说明

无。

  • 返回值

返回当前麦克风音量增益,范围 0~1000,100 为正常值。

  • 异步回调

无。本接口不单独返回异步完成通知。

设置房间内某成员音量

  • 语法
C#
YouMeErrorCode SetUserVolume(string strUserID, uint uiVolume);
  • 功能

设置房间内某成员的说话音量大小,仅在本端设备生效。自己退出频道时设置失效,被调节成员进出频道可以保持有效。

  • 参数说明

strUserID:被调节成员的用户 ID。

uiVolume:范围 0~300,100 为正常值,0 为无声;较大增益可能失真,按实际设备效果调节。

  • 返回值

返回 YouMeErrorCode.YOUME_SUCCESS 表示调用成功;其他值表示失败,具体参见 YouMeErrorCode 类型定义。

  • 异步回调

无。本接口不单独返回异步完成通知。

控制他人麦克风

  • 语法
C#
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 接收麦克风被打开/关闭的通知。

控制他人扬声器

  • 语法
C#
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 接收扬声器被打开/关闭的通知。

设置当麦克风静音时,是否释放麦克风设备

  • 语法
C#
YouMeErrorCode SetReleaseMicWhenMute(bool enabled);
  • 功能

设置当麦克风静音时,是否释放麦克风设备(需要在初始化成功后,加入房间之前调用)。

  • 参数说明

enabled: true--当麦克风静音时,释放麦克风设备,此时允许第三方模块使用麦克风设备录音。在Android和iOS上,语音由通话音轨切换到媒体音轨,回归到双声道高音质输出体验(如果媒体音量和通话音量不同时切换会产生音量变大变小的感觉);false--不管麦克风是否静音,麦克风设备都会被占用。

  • 返回值

返回 YouMeErrorCode.YOUME_SUCCESS 表示调用成功;其他值表示失败,具体参见 YouMeErrorCode 类型定义。

  • 异步回调

无。本接口不单独返回异步完成通知。

设置插入耳机时,是否自动退出系统通话模式

  • 语法
C#
YouMeErrorCode SetExitCommModeWhenHeadsetPlugin(bool enabled);
  • 功能

设置插入耳机时,是否自动退出系统通话模式(禁用手机系统硬件信号前处理)。 系统提供的前处理效果包括回声消除、自动增益等,有助于抑制战歌等回声噪音,减少系统资源消耗,对Windows系统无效。 默认为false,在初始化之后、加入房间之前调用。

  • 参数说明

enabled: true--当插入耳机时,自动禁用系统硬件信号前处理,拔出时还原;false--插拔耳机不做处理。

  • 返回值

成功返回YOUME_SUCCESS,其它返回值请参考YouMeErrorCode类型定义。

  • 异步回调

无。本接口不单独返回异步完成通知。

释放麦克风

  • 语法
C#
bool ReleaseMicSync();
  • 功能

调用后完成麦克风释放,只是为了方便使用 IM 的录音接口时切换麦克风使用权。

  • 参数说明

无。

  • 返回值

返回true,表示释放成功,可以认为只要在占用麦克风的状态肯定能释放成功。

  • 异步回调

无。本接口不单独返回异步完成通知。

恢复麦克风录音状态

  • 语法
C#
bool ResumeMicSync();
  • 功能

调用后恢复麦克风到释放前的状态,只是为了方便使用 IM 的录音接口时切换麦克风使用权。

  • 参数说明

无。

  • 返回值

返回true,表示恢复成功,可以认为只要在释放的状态,肯定可以恢复成功。

  • 异步回调

无。本接口不单独返回异步完成通知。

说话及音量检测

设置语音检测

  • 语法
C#
YouMeErrorCode SetVadCallbackEnabled(bool enabled);
  • 功能

设置是否开启语音检测回调,开启后频道内有人正在讲话与结束讲话都会发起相应回调通知。(需要游密后台配置开启,该状态值在加入房间成功后设置才有效,并且需要频道内所有用户都设置才生效。)

  • 参数说明

enabled:true 开启语音检测,false 关闭。

  • 返回值

如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。

  • 异步回调

通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。

  • YOUME_EVENT_OTHERS_VOICE_ON:其他用户进入讲话状态。
  • YOUME_EVENT_OTHERS_VOICE_OFF:其他用户进入静默状态。

上述为开启后的语音检测通知,不是本次设置的独立完成事件。

设置本地讲话音量级别回调

  • 语法
C#
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 读取音量值,不按错误码判断。

设置远端讲话音量级别回调

  • 语法
C#
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 为空。

通话管理

暂停通话

  • 语法
C#
YouMeErrorCode PauseChannel();
  • 功能

暂停通话,释放对麦克风等设备资源的占用。当需要用第三方模块临时录音时,可调用这个接口。

  • 参数说明

无。

  • 返回值

返回 YouMeErrorCode.YOUME_SUCCESS 仅表示请求已受理;其他值表示失败,具体参见 YouMeErrorCode 类型定义。最终结果参见下方异步回调。

  • 异步回调

通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。

  • YOUME_EVENT_PAUSED:暂停语音频道完成。

恢复通话

  • 语法
C#
YouMeErrorCode ResumeChannel();
  • 功能

恢复通话,调用PauseChannel暂停通话后,可调用这个接口恢复通话。(恢复通话后的麦克风的状态是和重新恢复通话时的角色相关,不一定与PauseChannel暂停通话时的麦克风状态一致)

  • 参数说明

无。

  • 返回值

返回 YouMeErrorCode.YOUME_SUCCESS 仅表示请求已受理;其他值表示失败,具体参见 YouMeErrorCode 类型定义。最终结果参见下方异步回调。

  • 异步回调

通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。

  • YOUME_EVENT_RESUMED:恢复语音频道完成。

抢麦连麦

抢麦相关设置

  • 语法
C#
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类型定义。

  • 异步回调

无。本接口不单独返回异步完成通知。

发起抢麦活动

  • 语法
C#
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:频道内的抢麦活动开始通知。

停止抢麦活动

  • 语法
C#
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:频道内的抢麦活动结束通知。

发起抢麦请求

  • 语法
C#
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:因使用时长到期或其他原因不再占用麦。

释放抢到的麦

  • 语法
C#
YouMeErrorCode ReleaseGrabMic(string pChannelID);
  • 功能

释放抢到的麦。

  • 参数说明

pChannelID:抢麦的频道id。

  • 返回值

返回 YouMeErrorCode.YOUME_SUCCESS 仅表示请求已受理;其他值表示失败,具体参见 YouMeErrorCode 类型定义。最终结果参见下方异步回调。

  • 异步回调

通过 SetOnEventCallback 注册的通用事件委托接收;使用 GameObject 方式时由 OnEvent 接收。

  • YOUME_EVENT_GRABMIC_RELEASE_OK:释放麦成功。
  • YOUME_EVENT_GRABMIC_RELEASE_FAILED:释放麦失败。

连麦相关设置

  • 语法
C#
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:连麦设置失败。

发起与某人的连麦请求

  • 语法
C#
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:双方可以通话。

对连麦请求做出回应

  • 语法
C#
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:对方被接受后,双方可以通话。

停止连麦

  • 语法
C#
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:对方结束连麦或连麦时长到期的通知。

战歌管理

播放战歌

  • 语法
C#
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:战歌播放失败。

停止播放战歌

  • 语法
C#
YouMeErrorCode StopBackgroundMusic();
  • 功能

停止播放当前正在播放的战歌。 这是一个同步调用接口,函数返回时,音乐播放也就停止了。

  • 参数说明

无。

  • 返回值

如果成功返回YOUME_SUCCESS,表明成功停止了音乐播放流程;否则返回错误码,具体请参考YouMeErrorCode类型定义。

  • 异步回调

无。本接口不单独返回异步完成通知。

设置战歌播放音量

  • 语法
C#
YouMeErrorCode SetBackgroundMusicVolume(int volume);
  • 功能

设定战歌的音量。这个接口用于调整战歌和语音之间的相对音量,使得战歌和语音混合听起来协调。 这是一个同步调用接口。

  • 参数说明

volume:战歌的音量,范围 [0-100]。

  • 返回值

如果成功(表明成功设置了战歌的音量)返回YOUME_SUCCESS,否则返回错误码,具体请参考YouMeErrorCode类型定义。

  • 异步回调

无。本接口不单独返回异步完成通知。

语音举报

语音举报功能需要联系游密进行开通。

语音举报流程:

  1. 调用 Init,等待初始化成功事件。
  2. 调用 JoinChannel,等待进房成功事件。
  3. 调用 SetReportInfo 设置本机举报音频缓存;被举报端需已配置本地缓存。
  4. 用户 A 调用 ReportUserAudio 举报用户 B。
  5. 用户 B 收到被举报信令后,将本地缓存的最近 nTimeSec 秒语音(不超过 60 秒)上报到游密服务器。

配置举报音频缓存

  • 语法
C#
YouMeErrorCode SetReportInfo(int nTimeSec, string language);
  • 功能

初始化成功后配置本机最近音频缓存的时长及语种,用于被举报时上报;本接口不直接发起举报。

  • 参数说明

nTimeSec:缓存时长(秒),有效范围 0~60,超出范围按 60 秒处理。

language:ISO 639 语言代码。

  • 返回值

返回 YOUME_SUCCESS 表示设置成功;其他值表示失败,具体参见 YouMeErrorCode 类型定义。

  • 异步回调

无。本接口不单独返回异步完成通知。

举报指定用户

  • 语法
C#
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 处理结果。

设置监听

  • 语法
C#
YouMeErrorCode SetHeadsetMonitorOn(bool micEnabled, bool bgmEnabled = true);
  • 功能

设置是否用耳机监听本机的麦克风声音或战歌。这是一个同步调用接口,进入频道时使用主播/指挥身份才能使用。

  • 参数说明

micEnabled:是否监听麦克风 true 监听,false 不监听。

bgmEnabled:是否监听战歌 true 监听,false 不监听。

  • 返回值

如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。

  • 异步回调

无。本接口不单独返回异步完成通知。

混响音效

设置混响音效

  • 语法
C#
YouMeErrorCode SetReverbEnabled(bool enabled);
  • 功能

设置是否开启混响音效,这个主要对主播/指挥有用。

  • 参数说明

enabled:true 开启混响音效,false 关闭。

  • 返回值

如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。

  • 异步回调

无。本接口不单独返回异步完成通知。

设置混响音效类型

  • 语法
C#
YouMeErrorCode SetAudioEffectType(YouMeAudioEffectType effectType);
  • 功能

初始化成功后按业务需要设置混响音效类型。

  • 参数说明

effectType:YouMeAudioEffectType 枚举;具体参见YouMeAudioEffectType定义。

  • 返回值

返回 YOUME_SUCCESS 表示设置请求已受理,混响音效随后生效;其他值表示失败,具体参见 YouMeErrorCode 类型定义。

  • 异步回调

无。本接口不单独返回异步完成通知。

变声音调

获取变声音调

  • 语法
C#
float GetSoundtouchPitchSemiTones();
  • 功能

获取变声音调(增值服务,需要后台配置开启)。

  • 参数说明

无。

  • 返回值

当前变声音调的值,范围[-12 ~ +12]。

  • 异步回调

无。本接口不单独返回异步完成通知。

设置变声音调

  • 语法
C#
YouMeErrorCode SetSoundtouchPitchSemiTones(float fPitchSemiTones);
  • 功能

设置变声音调(增值服务,需要后台配置开启),需在进入房间成功后调用,仅对当前房间有效,退出房间时重置为0。目前该接口在windows中只支持win32。

  • 参数说明

fPitchSemiTones:变声音调的值,范围[-12 ~ +12]。

  • 返回值

如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。

  • 异步回调

无。本接口不单独返回异步完成通知。

广播消息

  • 语法
C#
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 内容。

设置时间戳

设置录音时间戳

  • 语法
C#
void SetRecordingTimeMs(uint timeMs);
  • 功能

设置当前录音的时间戳。当通过录游戏脚本进行直播时,要保证观众端音画同步,在主播端需要进行时间对齐。 这个接口设置的就是当前游戏画面录制已经进行到哪个时间点了。

  • 参数说明

timeMs:当前游戏画面对应的时间点,单位为毫秒。

  • 返回值

无。

  • 异步回调

无。本接口不单独返回异步完成通知。

设置播放时间戳

  • 语法
C#
void SetPlayingTimeMs(uint timeMs);
  • 功能

设置当前声音播放的时间戳。当通过录游戏脚本进行直播时,要保证观众端音画同步,游戏画面的播放需要和声音播放进行时间对齐。 这个接口设置的就是当前游戏画面播放已经进行到哪个时间点了。

  • 参数说明

timeMs:当前游戏画面播放对应的时间点,单位为毫秒。

  • 返回值

无。

  • 异步回调

无。本接口不单独返回异步完成通知。

移动网络设置

设置是否允许使用移动网络

  • 语法
C#
void SetUseMobileNetworkEnabled(bool bEnabled);
  • 功能

设置是否允许使用移动网络。在WIFI和移动网络都可用的情况下会优先使用WIFI,在没有WIFI的情况下,如果设置允许使用移动网络,那么会使用移动网络进行语音通信,否则通信会失败。该接口需要在初始化后,加入房间前设置。

  • 参数说明

bEnabled:true——允许使用移动网络,false——禁止使用移动网络。

  • 返回值

无(void)。

  • 异步回调

无。本接口不单独返回异步完成通知。

获取是否允许使用移动网络

  • 语法
C#
bool GetUseMobileNetworkEnabled();
  • 功能

获取是否允许SDK在没有WIFI的情况使用移动网络进行语音通信。

  • 参数说明

无。

  • 返回值

true——允许使用移动网络,false——禁止使用移动网络,默认情况下允许使用移动网络。

  • 异步回调

无。本接口不单独返回异步完成通知。

网络质量检测

开始网络质量检测

  • 语法
C#
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)。

终止网络质量检测

  • 语法
C#
YouMeErrorCode StopDetectNetworkQuality();
  • 功能

终止检测网络质量。终止后将不会收到onDetectNetWorkComplete回调。

  • 参数说明

无。

  • 返回值

如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。

  • 异步回调

无独立终止完成回调。终止后不再继续等待该次网络检测结果。

用户体验问卷

用户体验问卷,是针对用户使用游密服务后对游密服务的体验反馈。游密依据后台对用户使用产品的质量监测,选择性下发问卷任务。默认针对同一个用户,24小时内最多只下发一次问卷任务。问卷弹框样式SDK内有默认实现,业务侧可以根据需要进行修改 YouMeSurveyPanel。问卷在游戏应用内弹框,不会跳转到外部。业务侧可以选择合适的时机(例如一局游戏结束后),调用 CanOpenSurvey 接口查询是否有可打开的用户体验问卷任务,如果有则调用 OpenSurvey() 接口弹出问卷弹框。玩家提交问卷时触发事件 OnSurveySubmitted, 业务侧可以据此为玩家发放奖励或进行其他操作。

用户体验问卷使用静态类 YouMeSurveyAPI,该类不在 YouMe 命名空间内,直接以 YouMeSurveyAPI.成员名 调用。业务侧需完整导入 SDK 的 Survey 模块及 Resources/YouMeSurveyPanel.prefab。

打开问卷界面

  • 语法
C#
public static bool OpenSurvey();
public static bool OpenSurvey(UnityEngine.Transform uiParent);
  • 功能

打开问卷界面,SDK 自动选择当前账号可打开的用户体验问卷。无参数重载使用 SDK 自建全屏覆盖层;指定父节点重载将面板挂到游戏 uGUI 节点下。重复打开同一任务保留已有作答。

  • 参数说明

无参数重载:无。

uiParent:问卷面板的 uGUI 父节点;传 null 时使用 SDK 自建覆盖层。

  • 返回值

true 表示界面已打开;false 表示当前没有可打开任务。可先用 CanOpenSurvey 查询,但仍需检查打开结果。

  • 异步回调

没有打开完成回调。玩家点击提交时触发 OnSurveySubmitted;该事件不表示答案已成功保存到服务端。

关闭问卷界面

  • 语法
C#
public static void CloseSurvey();
  • 功能

关闭已打开的问卷界面,未打开时无副作用;关闭不视为提交或完成问卷。

  • 参数说明

无。

  • 返回值

无(void)。

  • 异步回调

无。关闭操作不触发 OnSurveySubmitted。

查询问卷界面是否已打开

  • 语法
C#
public static bool IsSurveyOpen();
  • 功能

同步查询问卷界面当前是否处于打开状态。

  • 参数说明

无。

  • 返回值

true 表示已打开,false 表示未打开。

  • 异步回调

无。本接口不单独返回异步完成通知。

查询当前是否有可打开的问卷任务

  • 语法
C#
public static bool CanOpenSurvey();
  • 功能

同步查询当前账号是否有可打开的用户体验问卷任务;由业务在合适时机查询,有任务时直接调用 OpenSurvey。

  • 参数说明

无。

  • 返回值

true 表示当前账号有可打开任务,false 表示没有。

  • 异步回调

无。本接口不单独返回异步完成通知。

获取当前可打开的问卷任务ID

  • 语法
C#
public static ulong CurrentTaskId();
  • 功能

查询当前账号可打开的问卷任务 ID;这不是界面打开状态的判断。

  • 参数说明

无。

  • 返回值

返回 ulong 任务 ID;没有可打开任务时返回 0,预览模式下返回内置预览任务 ID。

  • 异步回调

无。本接口不单独返回异步完成通知。

问卷提交操作

  • 语法
C#
public static event System.Action<ulong> OnSurveySubmitted;
  • 功能

通知玩家在问卷界面点击了提交。业务用 += 订阅、-= 取消订阅,可据此处理奖励等逻辑。

  • 参数说明

taskId:事件处理委托的 ulong 参数,表示本次问卷任务 ID。

  • 返回值

事件处理委托无返回值(void)。事件成员本身没有同步调用返回值。

  • 异步回调

玩家点击提交时触发,时机在网络提交之前,不表示已成功提交到服务端。预览模式下点击提交也会触发。

预览用户体验问卷

  • 语法
C#
public static bool useMockData { get; set; }
  • 功能

预览用户体验问卷。启用后使用内置数据,不校验真实任务标志、不向问卷服务器请求题目或提交答案。仅编辑器和 Development Build 可启用;正式发布包设置 true 会被忽略,接入真实任务时使用 false。

  • 参数说明

属性没有方法参数。写入 value:true 启用预览,false 使用真实任务。

  • 返回值

读取返回 bool,表示当前是否启用预览;属性写入无返回值。预览结果不能当作真实答卷提交成功。

  • 异步回调

属性读写没有异步完成通知。预览界面点击提交仍会触发 OnSurveySubmitted。

用户体验问卷接入示例代码

C#
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 版本

  • 语法
C#
int GetSDKVersion();
  • 功能

查询 SDK 版本号。

  • 参数说明

无。

  • 返回值

返回压缩整数 SDK 版本号。

  • 异步回调

无。本接口不单独返回异步完成通知。

上传 SDK 日志

  • 语法
C#
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。

终止日志上传

  • 语法
C#
YouMeErrorCode AbortUploadLog();
  • 功能

同步终止当前日志上传,并清除日志上传进度委托。

  • 参数说明

无。

  • 返回值

返回 YOUME_SUCCESS 表示终止成功;其他值表示失败,具体参见 YouMeErrorCode 类型定义。

  • 异步回调

无独立终止完成回调;本接口会清除上传进度委托。

反初始化

  • 语法
C#
YouMeErrorCode UnInit();
  • 功能

反初始化引擎,可在退出游戏时调用,以释放SDK所有资源。

  • 参数说明

无。

  • 返回值

如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。

  • 异步回调

无。本接口不单独返回异步完成通知。

变声相关文档

需要配合游密变声管理模块文档使用。

设置变声是否可用

  • 语法
C#
YouMeErrorCode SetMagicVoiceEnable(bool enabled);
  • 功能

设置变声是否可用。

  • 参数说明

enabled:设置变声是否可用,开启后会略微增大声音延迟。

  • 返回值

如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。

  • 异步回调

无。本接口不单独返回异步完成通知。