Unity Everyplay 教程:从零开始集成游戏录制与分享功能
Everyplay 是一个强大的移动端游戏 SDK,它允许玩家在游戏中轻松录制精彩瞬间(Replay)、添加语音解说、并一键分享到社交媒体,对于开发者来说,集成 Everyplay 可以极大地提升游戏的社交传播性和用户粘性。

本教程将分为以下几个部分:
- 准备工作
- 集成 Everyplay SDK
- 录制与回放核心功能
- 高级功能:语音解说与滤镜
- 分享功能
- 最佳实践与注意事项
准备工作
在开始之前,请确保你已经完成了以下准备工作:
- Unity 版本:Everyplay 支持 Unity 5.4 及以上版本,本教程以较新版本为例。
- 目标平台:Everyplay 主要为 iOS 和 Android 平台设计,请确保你的 Unity 项目已经正确配置了相应的构建目标。
- Everyplay 账号:
- 访问 Everyplay 官网 并注册一个开发者账号。
- 登录后,创建一个新的应用,你需要提供应用的 Bundle ID (iOS) 和 Package Name (Android),你可以在 Unity 的
Player Settings中找到这些信息。 - Everyplay 会为你的应用生成一个 API Key 和 Secret Key,请务必妥善保管这两个密钥。
- 必要的依赖:
- iOS: 你需要一个有效的 Apple Developer 账号来构建和发布到 App Store。
- Android: 你需要一个有效的 Google Play Developer 账号。
- 视频回放依赖:Everyplay 的视频回放功能依赖于第三方解码器,对于 iOS,通常不需要额外操作,对于 Android,你需要集成 FFmpeg,Everyplay 官方提供了预编译的
.jar和.so文件,你需要将它们手动导入到 Unity 项目中。
集成 Everyplay SDK
这是最关键的一步,我们将通过 Unity 的 Package Manager 来集成 SDK。
步骤 1: 添加包依赖
- 在 Unity 编辑器中,打开
Window > Package Manager。 - 点击左上角的 号,选择
Add package from git URL...。 - 输入 Everyplay 的官方 Git 仓库地址:
https://github.com/everyplay/unity-sdk.git - 点击 "Add",Unity 会自动下载并导入 SDK。
步骤 2: 配置 API Key
-
在 Unity 编辑器中,创建一个空的 C# 脚本,
EveryplayInitializer.cs。
(图片来源网络,侵删) -
将以下代码粘贴到脚本中:
using UnityEngine; public class EveryplayInitializer : MonoBehaviour { // 在 Inspector 中填入你在 Everyplay 后台获取的 API Key public string everyplayApiKey = "YOUR_EVERYPLAY_API_KEY"; void Start() { // 初始化 Everyplay Everyplay.Initialize(everyplayApiKey); // 可选:设置日志级别,方便调试 Everyplay.SetLogLevel(Everyplay.LogLevel.Debug); } } -
在你的主场景(比如第一个加载的场景)中,创建一个空的 GameObject。
-
将
EveryplayInitializer.cs脚本拖拽到这个 GameObject 上。 -
在 Inspector 窗口中,找到
Everyplay Initializer组件,将你从 Everyplay 后台复制的 API Key 粘贴到Everyplay API Key字段中。
(图片来源网络,侵删)
步骤 3: 处理 Android 依赖 (重要!)
如果你要发布到 Android 平台,必须手动集成 FFmpeg。
-
下载 FFmpeg 依赖包:
- 从 Everyplay 的 GitHub 仓库的
prebuilt目录下载 Android 依赖包,通常是一个包含android.jar和armeabi-v7a,arm64-v8a,x86,x86_64等文件夹的压缩包。 - GitHub 地址: https://github.com/everyplay/unity-sdk/tree/master/prebuilt
- 从 Everyplay 的 GitHub 仓库的
-
导入到 Unity 项目:
- 在 Unity 的
Assets文件夹下,创建一个名为Plugins/Android的文件夹(如果不存在)。 - 将下载的
android.jar文件放入Assets/Plugins/Android文件夹中。 - 将包含
armeabi-v7a等原生库的文件夹(通常命名为libs)也放入Assets/Plugins/Android文件夹中,并确保其内部的.so文件路径正确。
- 在 Unity 的
录制与回放核心功能
让我们来实现最核心的录制和回放功能。
步骤 1: 开始录制
你可以在游戏的关键时刻(如游戏开始、玩家死亡、达成成就时)开始录制,推荐在游戏开始时启动。
using UnityEngine;
using Everyplay;
public class GameManager : MonoBehaviour
{
void Start()
{
// 开始录制
// 参数:录制时长(秒),-1 表示无限制,直到手动停止
Everyplay.StartRecording(-1);
}
// 在玩家死亡时停止录制
public void OnPlayerDeath()
{
// 停止录制
Everyplay.StopRecording();
}
}
步骤 2: 停止录制
通常在特定事件(如关卡结束、玩家失败)时停止录制。
// 在需要停止录制的时刻调用 Everyplay.StopRecording();
步骤 3: 保存并编辑回放
停止录制后,回放会自动保存在本地,你需要将其上传到 Everyplay 服务器,并生成一个可分享的 URL。
// 1. 获取最后一次录制的回放对象
Everyplay.Replay lastReplay = Everyplay.GetLastReplay();
if (lastReplay != null)
{
// 2. 添加一个元数据标签,方便管理
lastReplay.AddMetadata("level", "Level 1");
lastReplay.AddMetadata("score", "1000");
// 3. 上传回放
// 参数:是否在后台上传,回调函数
lastReplay.UploadInBackground(true, OnReplayUploaded);
}
else
{
Debug.Log("没有找到可上传的回放。");
}
// 回调函数,处理上传结果
private void OnReplayUploaded(Everyplay.Replay replay, Everyplay.ReplayUploadStatus status)
{
if (status == Everyplay.ReplayUploadStatus.Success)
{
Debug.Log("回放上传成功!URL: " + replay.Url);
// 在这里可以显示一个分享按钮
}
else
{
Debug.LogError("回放上传失败: " + status);
}
}
步骤 4: 播放回放
你可以提供一个界面让玩家观看自己的回放。
// 播放最后一次录制的回放 Everyplay.PlayLastReplay(); // 或者播放特定的回放 // Everyplay.PlayReplay(someReplayObject);
高级功能:语音解说与滤镜
Everyplay 允许玩家在录制时添加语音解说,并为视频添加滤镜效果。
语音解说
-
开始录音:
// 开始录音,可以指定音质 Everyplay.StartRecordingVoice(Everyplay.VoiceRecordingQuality.High);
-
停止录音:
Everyplay.StopRecordingVoice();
-
检查录音状态:
if (Everyplay.IsRecordingVoice()) { Debug.Log("正在录音中..."); }
滤镜
在录制或编辑时,可以应用滤镜。
// 获取可用的滤镜列表
Everyplay.Filter[] availableFilters = Everyplay.GetAvailableFilters();
// 应用一个特定的滤镜(第一个滤镜)
if (availableFilters.Length > 0)
{
Everyplay.ApplyFilter(availableFilters[0]);
}
// 移除所有滤镜
Everyplay.RemoveFilter();
分享功能
一旦回放上传成功,就可以生成分享链接。
Everyplay.Replay replayToShare = Everyplay.GetLastReplay();
if (replayToShare != null && replayToShare.IsUploaded)
{
// 创建分享意图
EveryplayShareIntent shareIntent = new EveryplayShareIntent();
shareIntent.AddReplay(replayToShare);
// 可选:添加自定义文本
shareIntent.SetText("看看我刚在游戏中录制的精彩瞬间!");
// 显示原生分享对话框
Everyplay.ShowShareDialog(shareIntent);
}
最佳实践与注意事项
-
用户授权:
- 在 iOS 10+ 和 Android 6.0+ 上,应用必须明确请求麦克风和相机的使用权限。
- 强烈建议使用 Unity 的
PermissionAPI (在Unity.Android.Permissions命名空间下) 或第三方插件(如Native Plugins)来处理权限请求。 - 在请求麦克风权限前,最好先检查一下,避免在不必要的时候打扰用户。
// 示例:检查麦克风权限 if (!Everyplay.HasMicrophonePermission()) { // 请求权限 Everyplay.RequestMicrophonePermission(); }
-
性能影响:
- 录制和视频回放是资源密集型操作,尤其是在低端设备上。
- 建议:在录制时,适当降低游戏的图形质量(分辨率、纹理等),以减少性能开销。
- 不要在后台录制:除非你的游戏设计如此,否则通常只在游戏前台运行时进行录制。
-
UI 集成:
- 不要直接使用 Everyplay 提供的预制 UI(它通常很旧且样式固定)。
- 最佳实践是隐藏其默认 UI,然后根据你的游戏美术风格,创建自己的按钮(如“开始录制”、“停止录制”、“查看回放”、“分享”)。
- 通过调用
Everyplay.ShowHideUI(true/false)来控制其默认 UI 的显示与隐藏。
-
测试:
- 务必在真机上进行测试,模拟器上的表现和真实设备可能有很大差异。
- 分别在 iOS 和 Android 设备上测试录制、上传、回放和分享的完整流程。
- 测试在不同网络环境(Wi-Fi, 4G)下的表现。
-
错误处理:
在调用 Everyplay 的 API 时,始终检查返回值或使用回调函数来处理可能出现的错误(如网络错误、权限被拒绝等),并给用户友好的提示。
通过以上步骤,你就可以成功地将 Everyplay 集成到你的 Unity 游戏中,核心流程是:初始化 -> 开始录制 -> 停止录制 -> 上传回放 -> 播放/分享。
充分利用 Everyplay 的功能,可以为你的游戏增加一个非常棒的社交分享点,鼓励玩家创造和分享内容,从而实现口碑传播,祝你集成顺利!
