之前加载本地电脑文件都是通过www加载,但是新版Unity已经不支持这个API了。看了一下提醒,说是让用UnityWebRequest代替。命名空间同样是NetWorking,整理了一下加载常用资源的方式。
1.加载本地文档
IEnumerator LoadFile()
{
UnityWebRequest request = UnityWebRequest.Get(@"E:\UnityProjects\TestFile\TestFile.txt");
yield return request.SendWebRequest();
if (request.isHttpError||request.isNetworkError)
{
Debug.Log(request.error);
}
else
{
ShowText.text = request.downloadHandler.text;
}
}
downloadhandler.text 返回文本内容。
2.加载音视频图片文件
IEnumerator LoadFile()
{
UnityWebRequest request = UnityWebRequestMultimedia.GetAudioClip(@"E:\UnityProjects\TestFile\TestMusic.ogg", AudioType.OGGVORBIS);
yield return request.SendWebRequest();
if (request.isHttpError||request.isNetworkError)
{
Debug.Log(request.error);
}
else
{
AudioClip audio = DownloadHandlerAudioClip.GetContent(request);
this.GetComponent<AudioSource>().clip = audio;
GetComponent<AudioSource>().Play();
}
}
这里测试音频为ogg格式,MP3格式会报错,提示不支持MPEG。
3.加载视频......本来以为DownloadHandlerMovieTexture,还能用,谁知道又过时了,使用VideoPlayer代替。
VideoPlayer超级简单粗暴
可以直接拖工程里面的视频进去,也可以通过传入一个URL链接来加载使用。通过RendTexture 来显示出来
4.加载本地图片
IEnumerator LoadFile()
{
UnityWebRequest request = UnityWebRequestTexture.GetTexture(@"E:\UnityProjects\TestFile\TestImage.jpg");
yield return request.SendWebRequest();
if (request.isHttpError || request.isNetworkError)
{
Debug.Log(request.error);
}
else
{
Texture tt = DownloadHandlerTexture.GetContent(request);
GetComponent<RawImage>().texture = tt;
}
}
总体感觉UnityWebRequest 这个类和之前的WWW类是一样的,加载各种资源。