赞
踩
目录
路径Unity 基础之 实现动态加载网络端、PC端和 Android 端指定路径下的图片的简单方法
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 版权所有,并保留所有权利。