抖音开放平台Logo
开发者文档
控制台

ICloudSync

收藏
我的收藏
云同步能力 SDK 单例,功能入口。
前提条件
业务背景
使用限制
注意事项
相关教程

ICloudSync.Instance

云同步全局单例对象获取。

语法

public static ICloudSync Instance { get; }

代码示例

void TestInitSDK() { var cloudSyncSdk = ICloudSync.Instance; }

ICloudSync.SeatManager

“座位” ICloudSeat 管理器。

语法

public ICloudSeatManager SeatManager { get; }

类型说明

类型为 ICloudSeatManager,参考 ICloudSeatManager。

代码示例

void TestInitSDK() { var seatManager = ICloudSync.Instance.SeatManager; }

ICloudSync.MatchManager

匹配同玩管理器。

语法

public ICloudMatchManager MatchManager { get; }

类型说明

类型为 ICloudMatchManager,参考 ICloudMatchManager。

代码示例

void TestInitSDK() { var clientManager = ICloudSync.Instance.MatchManager; }

ICloudSync.Init(...)

云同步 SDK 初始化。

语法

public Task<InitResult> Init( string appId, IVirtualDeviceFactory deviceFactory, IAnchorPlayerInfoProvider playerInfoProvider = null, ISplashScreen splash = null );

参数说明

参数名
类型
默认值
必填
说明
appId
string
小玩法appId。 形如'tt123456abcd1234'
deviceFactory
IVirtualDeviceFactory
指定虚拟设备创建工厂
playerInfoProvider
IAnchorPlayerInfoProvider
null
设置主播的用户信息,包含开平的基本信息,如:NickName, OpenId, AvatarUrl, RoomId
splash
ISplashScreen
null
自定义启动屏界面(一般用于云游戏环境调试,可忽略)

代码示例

async void Test() { var appId = "tt123456abcd1234"; // 你的小玩法 appId var myDeviceFactory = ...; // 你自定义的 ClientView 创建工厂对象 await ICloudSync.Instance.Init("tt123456abcd1234", myDeviceFactory); }

ICloudSync.OnMouse (事件)

云游戏终端用户触发的鼠标事件。

语法

public delegate void ClientMouseEventHandler(ICloudClient client, RemoteMouseEvent e); public event ClientMouseEventHandler OnMouse;

事件参数说明

参数名
类型
说明
client
ICloudClient
云游戏终端触发的鼠标事件对应的 ICloudClient 对象(可用于获取主播信息)
e
RemoteMouseEvent
云游戏终端触发的鼠标事件

代码示例

void Test() { ICloudSync.Instance.OnMouse += OnMouse; } private void OnMouse(ICloudClient client, RemoteMouseEvent e) { if (e.action == MouseAction.DOWN) { Debug.Log($"OnMouse: 主播: {client.Index} MouseDown, view position: {e.viewPosition}"); } }

ICloudSync.OnKeyboard (事件)

云游戏终端用户触发的键盘事件。

语法

public delegate void ClientKeyboardEventHandler(ICloudClient client, RemoteKeyboardEvent e); public event ClientKeyboardEventHandler OnKeyboard;

事件参数说明

参数名
类型
说明
client
ICloudClient
云游戏终端用户触发的键盘事件对应的 ICloudClient 对象(可用于获取主播信息)
e
RemoteKeyboardEvent
云游戏终端用户触发的键盘事件

代码示例

void Test() { ICloudSync.Instance.OnKeyboard += OnKeyboard; } private void OnKeyboard(ICloudClient client, RemoteKeyboardEvent e) { if (e.action == KeyboardAction.DOWN) { Debug.Log($"OnMouse: 主播: {client.Index} KeyDown, KeyCode: {e.key}"); } }

ICloudSync.OnTouches (事件)

支持的版本:2.5.0+
事件:触摸操作(移动端)。

语法

// 事件:触摸操作(移动端) public event TouchesEventHandler OnTouches; public delegate void TouchesEventHandler(ICloudSeat seat, RemoteTouchesEvent touchesEvent);

事件参数说明

参数
类型
说明
seat
ICloudSeat
发生该操作的用户席位
touchesEvent
RemoteTouchesEvent
远端触摸事件,包含touches触摸数据
RemoteTouchesEvent 触摸数据说明:
/// 触摸事件 public struct RemoteTouchesEvent : IRemoteInputEvent { public IVirtualDevice device { get; set; } public string InputType => "Touch"; public byte displayIndex; /// 触摸touches数据列表 public List<RemoteTouch> touches; } /// 触摸Touch(单个手指的数据) public struct RemoteTouch { /// 触摸手指id public int touchId; /// 触摸阶段类型。 枚举值按`UnityEngine.InputSystem.TouchPhase`对齐,推荐使用。 public RemoteTouchPhase phase; /// 触摸动作类型。 枚举值按云游戏的定义。 public TouchAction action; /// `viewPosition` 左上角坐标 ( 0, 1 ) , 原点在左下角,值范围 0~1.0 public Vector2 viewPosition; /// `position` 左上角坐标 ( 0, Screen.Height ) , 原点在左下角,值范围 0~Screen宽高 public Vector2Int position; }

代码示例

// 监听事件:触摸操作(移动端) ICloudSync.Instance.OnTouches += OnTouches; // 收到事件:触摸操作(移动端) private void OnTouches(ICloudSeat seat, RemoteTouchesEvent evt) { foreach (var t in evt.touches) { if (isTouchVerboseLog) Debug.Log($"OnTouch 触摸: 用户 {seat.Index}, touchId: {t.touchId} {t.phase}, viewPos: {t.viewPosition:F3}, pos: {t.position:F0}, #{Time.frameCount}f"); var viewPos = t.viewPosition; if (t.phase == RemoteTouchPhase.Ended) { ProcessClicked(seat, viewPos, evt.InputType); } } }
备注:
在移动端开播时,不会触发鼠标事件 ICloudSync.OnMouse

ICloudSync.OnTouch (事件) [已废弃]

废弃的版本:2.5.0
云游戏终端用户触发的触摸事件。

语法

public delegate void ClientTouchEventHandler(ICloudClient client, RemoteTouchEvent e); public event ClientTouchEventHandler OnTouch;

事件参数说明

参数名
类型
说明
client
ICloudClient
云游戏终端用户触发的触摸事件对应的 ICloudClient 对象(可用于获取主播信息)
e
RemoteTouchEvent
云游戏终端用户触发的触摸事件

代码示例

void Test() { ICloudSync.Instance.OnTouch += OnTouch; } private void OnTouch(ICloudClient client, RemoteTouchEvent e) { if (e.action == KeyboardAction.DOWN) { Debug.Log($"OnMouse: 主播: {client.Index} Touch, position: {e.position}"); } }

ICloudSync.OnSeatPlayerJoined (事件)

当有玩家加入了此座位(也称为进房事件)。

语法

public delegate void SeatEventHandler(ICloudSeat seat); public event SeatEventHandler OnSeatPlayerJoined;

事件参数说明

参数名
类型
说明
seat
ICloudSeat
玩家加入的 ICloudSeat

ICloudSync.OnSeatPlayerLeaving (事件)

当玩家正在离开此座位(也称为退房事件)。

语法

public delegate void SeatEventHandler(ICloudSeat seat); public SeatEventHandler OnSeatPlayerLeaving;

事件参数说明

参数名
类型
说明
seat
ICloudSeat
玩家离开的 ICloudSeat

ICloudSync.OnWillDestroy (事件)

云游戏实例即将在倒计时 N 秒后销毁。
注意:该事件为一个必接事件,开发者需要响应此事件,在云游戏进程销毁前处理同玩玩家的退出问题。

语法

public delegate void WillDestroyHandler(DestroyInfo info); public event WillDestroyHandler OnWillDestroy;

事件参数说明

参数名
类型
说明
info
DestroyInfo
云游戏实例即将销毁的信息

代码示例

void Test() { ICloudSync.Instance.OnWillDestroy += OnWillDestroy; } private void OnWillDestroy(DestroyInfo e) { Debug.Log($"游戏进程将在: {e.Time} 秒后销毁!"); }

DestroyInfo

语法

/// <summary> /// 云游戏实例即将销毁的信息 /// </summary> public struct DestroyInfo { /// <summary> /// 在 x 秒后销毁 /// </summary> public int Time; /// <summary> /// 原因 /// </summary> public DestroyReason Reason; } /// <summary> /// 云游戏实例即将销毁原因 /// </summary> public enum DestroyReason { /// <summary> /// Host 主播离开 /// </summary> HostAnchorLeave }