
unity3d專案中進行錄屏操作,用到的地方不少,特別是在游戲和AR的專案中,都會看到錄屏功能的使用,但是這個功能的解決方案卻很少,網上也基本都是一些小打小鬧的理論性文章,沒有太多實際的意義,
小編我也是真的體會深刻,這個功能在當初unity3d專案中給我帶了一萬點傷害,當時自己為了實作這個功能,可謂是千方百計絞盡腦汁,因為涵蓋IOS/Android原生開發+NDK+GPU渲染等知識,所以難度略大,好在最后終于自己開發出來了,不說了,
本文也主要是對unity3d 錄屏功能插件工具 Cross Platform Replay Kit 進行介紹和使用講解,該插件可以在移動設備 iOS 和 Android 上輕松進行螢屏錄制,可以在 Unity 上對你的游戲和其他你想要錄制的畫面輕松進行螢屏錄制,并保存到你的本地圖庫,

直奔主題!!!!
文章底部有下載鏈接 供大家學習
1,匯入插件

檢查插件所在路徑:
| 插件根目錄 | Assets/Plugins/VoxelBusters/CrossPlatformReplayKit |
| Demos案例場景 | Assets/Plugins/VoxelBusters/CrossPlatformReplayKit/Demo/Scenes |
| 安卓庫所在路徑 | Assets/Plugins/Android/replay_kit_lib |
2,專案中接入
2.1 關鍵API介紹
插件初始化,在啟動app時呼叫:
ReplayKitManager.Initialise();
檢查設備設備 錄屏功能是否可用:
ReplayKitManager.IsRecordingAPIAvailable();
檢查app是否正在錄制:
ReplayKitManager.IsRecording();
開始錄屏作業:
ReplayKitManager.StartRecording();
結束錄屏:
ReplayKitManager.StopRecording();
檢查app是否支持預覽錄制預覽:
ReplayKitManager.IsPreviewAvailable()
保存視頻:
ReplayKitManager.SavePreview();
2.2,初始化
在APP初始化時呼叫:
ReplayKitManager.Initialise();
private void Awake()
{
ReplayKitManager.Initialise();//這里呼叫錄制工具進行注冊,開啟功能
}
2.3,錄制/停止
開始錄制:
ReplayKitManager.StartRecording(true/false);
引數為true: 代表在錄制螢屏時也要錄制麥克風語音
引數為false: 靜音錄制螢屏
停止錄制:
ReplayKitManager.StopRecording();
如:
public void startRecord()
{
ReplayKitManager.StartRecording(true);//錄制含麥克風聲音
}
public void stopRecord()
{
ReplayKitManager.StopRecording();
}
2.4,保存錄制
在保存錄屏之前,必須要呼叫
ReplayKitManager.IsPreviewAvailable(),如果回傳為true,才能進行保存
如:
public void saveRecord()
{
if (ReplayKitManager.IsPreviewAvailable())
{
ReplayKitManager.SavePreview((error) =>
{
});
}
else
{
statusLog("當前錄制的視頻還沒處理完成!");
}
}
完整代碼如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using VoxelBusters.ReplayKit;
public class recordCon : MonoBehaviour
{
public Text logText;
private void OnEnable()
{
}
private void OnDisable()
{
ReplayKitManager.DidInitialise -= DidInitialiseEvent;//注銷事件
ReplayKitManager.DidRecordingStateChange -= DidRecordingStateChangeEvent;//注銷事件
}
private void Awake()
{
ReplayKitManager.Initialise();//這里呼叫錄制工具進行注冊,開啟功能
}
void Initialise()
{
ReplayKitManager.DidInitialise += DidInitialiseEvent; //注冊狀態回呼函式
ReplayKitManager.DidRecordingStateChange += DidRecordingStateChangeEvent; //錄制狀態改變事件回呼函式
}
// Start is called before the first frame update
void Start()
{
}
private void DidInitialiseEvent(ReplayKitInitialisationState state, string message)
{
}
private void DidRecordingStateChangeEvent(ReplayKitRecordingState state, string message)
{
}
void statusLog(string log)
{
logText.text = log;
}
public void startRecord()
{
ReplayKitManager.StartRecording(true);//錄制含麥克風聲音
}
public void stopRecord()
{
ReplayKitManager.StopRecording();
}
public void saveRecord()
{
if (ReplayKitManager.IsPreviewAvailable())
{
ReplayKitManager.SavePreview((error) =>
{
});
}
else
{
statusLog("當前錄制的視頻還沒處理完成!");
}
}
// Update is called once per frame
void Update()
{
}
}
3, Android 10崩潰問題解決
小編我第一次匯入包,打包就遇到這個問題,如果直接打包,在android 10設備會崩潰,
配置如下:
1,unity3d頂部選單 Windows -> Voxel Busters -> Cross Platform Replay Kit -> Settings
2,勾選 “Android Q support under Android section”
3,點擊保存
妥妥的,錄屏功能解決了,最后希望這篇文章對大家有幫助,有不理解的地方歡迎大家留言,如果有錯誤的地方,也歡迎大家指正,

如果有需要該插件的朋友們,可以點擊這里下載
assetstore官網地址
下載地址 提取碼: 71yq
注意:該資源僅用于個人學習目的,嚴禁用于一切商業用途!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/131840.html
標籤:其他
