unity StreamingAssets

StreamingAssets:

要说到StreamingAssets,其实和Resources还是蛮像的。同样作为一个只读的Unity3D的保留文件夹出现。不过两者也有很大的区别,那就是Resources文件夹中的内容在打包时会被压缩和加密。而StreamingAsset文件夹中的内容则会原封不动的打入包中,因此StreamingAssets主要用来存放一些二进制文件。下面也同样做一个简单的总结:

  • 只读不可写。
  • 主要用来存放二进制文件。
  • Android平台下一般是通过过WWW类来读取。
    下边的例子是把unity里StreamingAssets下的一个文件复制到手机上
    可以打包成APK在手机上测试 把unity里streamingAssetsPath目录下选定的文件拷贝到手机的目标位置。
  string path = Application.streamingAssetsPath + "/white.png";//找到streamingAssetsPath目录下的文件 把路径返回
    public void file()
    {
        StartCoroutine(Png());
    }
    IEnumerator Png()
    {
        WWW www = new WWW(path);
        yield return www;
        if (www.isDone)
        {
            string topath = Application.persistentDataPath + "/" + "white.png";//目标路径
            File.WriteAllBytes(topath, www.bytes);//把文件数据写入   可以打包成APK在手机上测试 把unity里streamingAssetsPath目录下选定的文件拷贝到手机的目标位置。
                                                
        }
    }

Unity在构建项目时将大多数资产组合到一个项目中。但是,将文件放入目标计算机上的普通文件系统以使其可通过路径名访问有时很有用。这方面的一个例子是在iOS上部署电影文件设备; 必须从文件系统中要由该PlayMovie功能播放的位置提供原始电影文件。

放置在Unity项目中名为StreamingAssets(区分大小写)的文件夹中的任何文件将逐字复制到目标计算机上的特定文件夹中。您可以使用Application.streamingAssetsPath属性检索该文件夹。最好使用它Application.streamingAssetsPath来获取StreamingAssets文件夹的位置,因为它始终指向运行应用程序的平台上的正确位置。

返回的位置Application.streamingAssetsPath因平台而异:

  • 大多数平台(Unity Editor,Windows,macOS,Linux播放器,PS4,Xbox One,Switch)使用Application.dataPath + “/StreamingAssets”,
  • iOS使用Application.dataPath + “/Raw”,
  • Android使用压缩APK内的文件 / JAR文件"jar:file://" + Application.dataPath + “!/assets”。

下边举个在安卓平台上播放StreamingAssets视屏的例子
添加一个面板用来当做视频的背景 添加video player 和脚本
在这里插入图片描述
video player里的URL不选 在脚本里调用

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Video;

public class StreamingAssetsDataPathDemo : MonoBehaviour 
{
    //public AudioSource MAudioSource;
    public VideoPlayer MVideoPlayer;

	// Use this for initialization
	void Start () {
        Debug.LogError("Program Starts");
        StartCoroutine("FindAudioFile");
	}
	
	// Update is called once per frame
	void Update () {
		
	}

    private IEnumerator FindAudioFile()
    {
        //string filepath = Application.dataPath + "/StreamingAssets/" + "GuitarLoop.wav";
        //string filepath = "jar:file://" + Application.dataPath + "!/assets/" + "GuitarLoop.wav";
        string filepath_video = "jar:file://" + Application.dataPath + "!/assets/" + "EasyMovieTexture.mp4";
        //打包后在安卓上的路径
        string path= Application.dataPath + "/StreamingAssets/" + "EasyMovieTexture.mp4";
        //在unity中调试
        Debug.LogError("File Path: " + filepath_video);
        WWW www = new WWW(filepath_video);
        yield return www;

        MVideoPlayer.url = filepath_video;//video player 的url
        MVideoPlayer.Play();

    }
}

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值