一、简单介绍
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);
-
}
文章来源地址https://www.toymoban.com/news/detail-699387.html -
}
文章来源:https://www.toymoban.com/news/detail-699387.html -
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);
-
}
-
}
-
}
到了这里,关于UNITY 基础之 实现动态加载网络端、PC端和 ANDROID 端指定路径下的图片的简单方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!