赞
踩
Unity中的一些基础知识点,便于后期查看学习。
本节介绍,如何动态加载网络上,电脑上或者Android手机上指定路径的图片的简单方式,方法不唯一,仅供参考。
1、UnityWebRequest 发起网络请求,DownloadHandlerTexture 作为发起下载图片,解析得到图片
2、下载地址不仅支持网络路径,电脑端和Android 手机端等路径也支持
1、移动端,例如 Android 注意请给读写权限
2、因为要加载网络服务器上的图片,还需要网络开启哈
1、打开Unity,新建工程
2、在场景上布局UI,显示加载的图片
3、新建脚本,编辑代码,把脚本挂载到 UI上,勾选是加载网络图片,还是电脑Android上的图片
4、注意,Android 注意 给读写权限
5、运行效果如上
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
public class LoadPicture : MonoBehaviour
{
public bool isLoadNetImage = false;
[SerializeField]
// 网络上的图片,也可以加载
private string url = @"http://a2.att.hudong.com/36/48/19300001357258133412489354717.jpg";
RawImage rawImage;
public string Url { get => url;
set {
url = value;
GetTexture(url, SetTexttureToRawImage);
}
}
private void Start()
{
rawImage = GetComponent<RawImage>();
if (isLoadNetImage)
{
// 加载网络服务器的图片
GetTexture(url, SetTexttureToRawImage);
}
else {
#if UNITY_EDITOR
// 加载PC端上的图片
GetTexture(@"D:\Tmp\Images\HappFish.png",
SetTexttureToRawImage);
#else
// 加载Android端的图片
GetTexture(@"file:///storage/emulated/0/tencent/MicroMsg/WeiXin/mmexport1537166579555.jpg",
SetTexttureToRawImage);
#endif
}
}
void SetTexttureToRawImage(Texture texture)
{
if (rawImage ==null)
{
rawImage = GetComponent<RawImage>();
}
rawImage.texture = texture;
}
/// <summary>
/// 请求图片
/// </summary>
/// <param name="url">图片地址,like 'http://www.my-server.com/image.png '</param>
/// <param name="action">请求发起后处理回调结果的委托,处理请求结果的图片</param>
/// <returns></returns>
public void GetTexture(string url, Action<Texture2D> actionResult)
{
StartCoroutine(_GetTexture(url, actionResult));
}
/// <summary>
/// 请求图片
/// </summary>
/// <param name="url">图片地址,like 'http://www.my-server.com/image.png '</param>
/// <param name="action">请求发起后处理回调结果的委托,处理请求结果的图片</param>
/// <returns></returns>
IEnumerator _GetTexture(string url, Action<Texture2D> actionResult)
{
UnityWebRequest uwr = new UnityWebRequest(url);
DownloadHandlerTexture downloadTexture = new DownloadHandlerTexture(true);
uwr.downloadHandler = downloadTexture;
yield return uwr.SendWebRequest();
Texture2D t = null;
if (!(uwr.isNetworkError || uwr.isHttpError))
{
t = downloadTexture.texture;
}
else
{
Debug.Log("下载失败,请检查网络,或者下载地址是否正确 ");
}
if (actionResult != null)
{
actionResult(t);
}
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。