Unity3d 錄屏功能教程指南 | Cross Platform Replay Kit


       


        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

注意:該資源僅用於個人學習目的,嚴禁用於一切商業用途!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM