Unity打开本地文件夹替换视频

这篇具有很好参考价值的文章主要介绍了Unity打开本地文件夹替换视频。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

一、导入AVpro插件

AVpro插件是一款很强大的视频播放插件,配合Unity使用有意想不到的效果,他的各项功能网上都有,我就不进行展开讨论了。
该插件的获取方式为AssetStore中购买下载,该插件有一个免费版本可供使用,付费版本的功能强大一点。
有需要的也可以私信我,我分享给你,你只能用于学习,不可用于商用。
Unity打开本地文件夹替换视频

将下载好的AVpro导入Unity。

二、插件对应的UI界面

Unity打开本地文件夹替换视频
图中显示视频的GUI主要是导入AVPro之后创建的,右键UI/AVproVideouGUI

Unity打开本地文件夹替换视频
在该GUI的Inspector窗口有一个Display uGui的组件,该组件中有一个MediaPlayer的选项,该选项是一个播放器,右键添加该播放器并且拉入到该位置。
Unity打开本地文件夹替换视频
Unity打开本地文件夹替换视频
Unity打开本地文件夹替换视频

三、创建ChangeVideo脚本

/****************************************************
    文件:ChangeVideo.cs
	作者:Mark
    日期:#CreateTime#
	功能:替换视频
*****************************************************/

using RenderHeads.Media.AVProVideo;
using System.Collections;
using System.IO;
using System.Runtime.InteropServices;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
public class ChangeVideo : MonoBehaviour 
{
    public Button changeVideoBtn;  //替换视频的按钮
    public MediaPlayer mediaPlayer;//AVpro的播放器
    public DisplayUGUI displayUGUI;//AVpro的UGUI
    private string savePath = Application.streamingAssetsPath + "/1.mp4";//视频加载后的保存位置
    private void Start()
    {
        changeVideoBtn.onClick.AddListener(onRead);//监听按钮是否点击,如果点击就执行打开窗口
    }
    private void onRead()
    {
        OpenFileName ofn = new OpenFileName();

        ofn.structSize = Marshal.SizeOf(ofn);

        ofn.filter = "视频文件(*.mp4*.mov)\0*.mp4;*.mov";

        ofn.file = new string(new char[256]);

        ofn.maxFile = ofn.file.Length;

        ofn.fileTitle = new string(new char[64]);

        ofn.maxFileTitle = ofn.fileTitle.Length;
        string path = Application.streamingAssetsPath;
        path = path.Replace('/', '\\');
        //默认路径
        ofn.initialDir = path;

        ofn.title = "选择需要替换的视频";

        ofn.defExt = "mp4";//显示文件的类型
                           //注意 一下项目不一定要全选 但是0x00000008项不要缺少
        ofn.flags = 0x00080000 | 0x00001000 | 0x00000800 | 0x00000200 | 0x00000008;//OFN_EXPLORER|OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST| OFN_ALLOWMULTISELECT|OFN_NOCHANGEDIR

        if (WindowDll.GetOpenFileName(ofn))
        {
            StartCoroutine(Download(ofn.file));
        }

    }
    IEnumerator Download(string url)
    {
        mediaPlayer.OpenVideoFromFile(MediaPlayer.FileLocation.RelativeToStreamingAssetsFolder, null, false);
        UnityWebRequest request = UnityWebRequest.Get(url);
        request.SendWebRequest();
        if (request.isHttpError || request.isNetworkError)
        {
            //print("当前的下载发生错误" + request.error);
            yield break;
        }
        while (!request.isDone)
        {
            //获取视频读取进度,有需要可以加入
            //print("当前的下载进度为:" + request.downloadProgress);
            //downloadProgress.text = (request.downloadProgress * 100).ToString() + "%";
            yield return 0;
        }
        if (request.isDone)
        {
            //downloadProgress.text = "100%";
            using (FileStream fs = new FileStream(savePath, FileMode.Create))
            {
                byte[] results = request.downloadHandler.data;
                fs.Write(results, 0, results.Length);
                fs.Flush();
                fs.Close();
            }
        }
        mediaPlayer.OpenVideoFromFile(MediaPlayer.FileLocation.RelativeToStreamingAssetsFolder, savePath, false);
        //加载成功后打开并且播放
        mediaPlayer.m_AutoOpen = true;
        mediaPlayer.Play();
    }

}

四、创建OpenFileName类用于打开窗口

/****************************************************
    文件:OpenFileName.cs
	作者:Mark
    日期:#CreateTime#
	功能:打开文件夹
*****************************************************/

using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
public class OpenFileName
{
    public int structSize = 0;
    public IntPtr dlgOwner = IntPtr.Zero;
    public IntPtr instance = IntPtr.Zero;
    public String filter = null;
    public String customFilter = null;
    public int maxCustFilter = 0;
    public int filterIndex = 0;
    public String file = null;
    public int maxFile = 0;
    public String fileTitle = null;
    public int maxFileTitle = 0;
    public String initialDir = null;
    public String title = null;
    public int flags = 0;
    public short fileOffset = 0;
    public short fileExtension = 0;
    public String defExt = null;
    public IntPtr custData = IntPtr.Zero;
    public IntPtr hook = IntPtr.Zero;
    public String templateName = null;
    public IntPtr reservedPtr = IntPtr.Zero;
    public int reservedInt = 0;
    public int flagsEx = 0;
}

public class WindowDll
{
    [DllImport("Comdlg32.dll", SetLastError = true, ThrowOnUnmappableChar = true, CharSet = CharSet.Auto)]
    public static extern bool GetOpenFileName([In, Out] OpenFileName ofn);
    public static bool GetOpenFileName1([In, Out] OpenFileName ofn)
    {
        return GetOpenFileName(ofn);
    }
}

五、挂载脚本并且运行

Unity打开本地文件夹替换视频文章来源地址https://www.toymoban.com/news/detail-402701.html

到了这里,关于Unity打开本地文件夹替换视频的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity C# 打开windows对话框选择文件夹或选择文件

    unity没有提供打开windows对话框的api,在开发种也会遇到选择系统文件夹或选择系统文件的需求

    2024年04月26日
    浏览(49)
  • Windows11打开此电脑,没有视频、图片等文件夹,解决方法

    那次更新完电脑,发现电脑变了个样 如果你打开“此电脑”,发现视频、图片、音乐等那些文件夹不见了,只剩下驱动器了。 如下图: 别慌, 我们可以通过注册表来解决,把视频、图片等这些文件夹添加回来,注册表在我下面这个百度网盘链接里: 链接: https://pan.baidu.

    2024年02月11日
    浏览(111)
  • linux 再文件夹目录下,批量替换文件名、文件内容字符串

    基本使用命令 具体使用命令方法 1.替换文件内容 搜索当前目录下所有.DTA文件,并将文件中字符串\\\"string1\\\",替换为\\\"string2\\\" 2.替换文件名 搜索当前目录下所有.DTA文件,并将文件名中字符串\\\"string1\\\"替换为\\\"string2\\\". 3.批量替换文件内容 该目录及子目录下所有文件,将文件中所有的字符

    2024年02月16日
    浏览(60)
  • Mac双击无法打开文件或者文件夹

    在使用MAC过程中出现双击无法打开文件或者文件夹,这可能与鼠标连按速度有关,下面分享一下如何解决Mac鼠标双击打不开文件和文件夹的问题。 打开 系统偏好设置 打开 辅助功能 指针控制 ,将“连按速度”的滑块左右调整,同时测试双击打开文件或文件夹。

    2024年02月06日
    浏览(95)
  • 右击文件或者文件夹使用vscode打开

    平常我们在打开项目时,经常会需要快捷打开方式,直接使右键使用编辑器打开,但是有时在安装时忘记了选择 “Add “Open with Code” action to Windows Explorer file context menu” 在Windows资源管理器文件上下文菜单中添加“用代码打开”操作 Add “Open with Code” action to Windows Explorer d

    2024年02月05日
    浏览(63)
  • 在任何文件夹下打开jupyter 内核都是同一个文件夹

     我在 D:anaconda实例代码 下打开jupyter notebook  无论我在那个文件下打开jupyter 都是同一个文件这是因为你可能在jupyter notebook 的那个配置文件中设置固定的路径 假如你的.py 文件在D:anaconda实例代码 下 你想通过jupyter notebook 运行它很简单  上传到jupyter notebook本地      如何运

    2024年02月12日
    浏览(68)
  • 【C#】在Windows资源管理器打开文件夹,并选中指定的文件或文件夹

    因软件里使用了第三方插件,第三方插件的日志文件夹存在路径不止一个,并且可能层级较深。 为便于运维人员和最终用户使用,在界面上增加一个“打开XX文件夹”的按钮,点击时,打开第三方插件日志文件夹所在的上级文件夹,并选中其下级指定名称的若干个文件和文件

    2024年02月14日
    浏览(63)
  • PowerShell 获取某目录下所有的文件、文件夹,同时对获取到的文件路径字符串进行替换处理

    前言: 为了将Windows系统下的Java编译文件与linux服务器上的文件进行比较,故进行此文件路径的获取及路径处理。 在只有文件路径 而没有实际文件的情况下的比较。 代码如下: 输出文件(grepKekka.csv): 输出文件(grepKekka1.csv): 输出文件(grepKekka2.csv): 结语: 为了将

    2024年02月13日
    浏览(57)
  • 解决打开文件、文件夹、拖拽复制删除时鼠标卡顿

    最近新换了电脑,一开始没有问题,但是用了一段时间后又出现了鼠标卡顿(说明这问题不是因为电脑性能太差),最后参考如下文章解决问题【学习笔记】记录一个win 11 操作文件卡顿,Windows 资源管理器CPU占用飙升问题_shexview-x64-CSDN博客 原来是百度网盘惹的祸 我这个方法

    2024年02月11日
    浏览(102)
  • Windows:设置右键用RStudio打开文件和文件夹

    在使用RStudio写R脚本的时候总是要先打开它,再通过它打开脚本和文件夹,感觉不是很方便。由于VSCode以及其他软件都可以整合到右键菜单中打开文件或文件夹,因此就折腾了一下怎么在右键中使用RStudio打开文件,下面是效果展示以及设置步骤,最后是参考链接。 右键选择文

    2024年02月06日
    浏览(79)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包