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

注意:该资源仅用于个人学习目的,严禁用于一切商业用途!

 

 

猜你喜欢

转载自blog.csdn.net/ly15196612058/article/details/108779542