UNITY 基础之 实现动态加载网络端、PC端和 ANDROID 端指定路径下的图片的简单方法
一、简单介绍
Unity中的一些基础知识点,便于后期查看学习。
本节介绍,如何动态加载网络上,电脑上或者Android手机上指定路径的图片的简单方式,方法不唯一,仅供参考。
二、实现原理
UnityWebRequest 发起网络请求,DownloadHandlerTexture 作为发起下载图片,解析得到图片
下载地址不仅支持网络路径,电脑端和Android 手机端等路径也支持
三、注意事项
移动端,例如 Android 注意请给读写权限
因为要加载网络服务器上的图片,还需要网络开启哈
四、效果预览
五、实现步骤
打开Unity,新建工程
在场景上布局UI,显示加载的图片
新建脚本,编辑代码,把脚本挂载到 UI上,勾选是加载网络图片,还是电脑Android上的图片
注意,Android 注意 给读写权限
运行效果如上
六、关键代码
-
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
(); -
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.texture = texture;
-
}
-
///
-
/// 请求图片
-
///
-
/// 图片地址,like 'http://www.my-server.com/image.png '
-
/// 请求发起后处理回调结果的委托,处理请求结果的图片
-
///
-
public void GetTexture(string url, Action
actionResult) -
{
-
StartCoroutine(_GetTexture(url, actionResult));
-
}
-
///
-
/// 请求图片
-
///
-
/// 图片地址,like 'http://www.my-server.com/image.png '
-
/// 请求发起后处理回调结果的委托,处理请求结果的图片
-
///
-
IEnumerator _GetTexture(string url, Action
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);
-
}
-
}
-
}
来源地址:https://blog.csdn.net/qq_21743659/article/details/131686355
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341