Unity 下载网络图片的方法,并把图片赋值给UI和物体的方法

Unity 下载网络图片的方法,可使用WWW类或UnityWebRequest类,其中UnityWebRequest是新版的方法。

通常我们下载图片都会转成Texture,然后赋值给UI或者物体。

具体实现方法:

复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;

public class LoadNetImage : MonoBehaviour
{
    private string imagePath1 = "http://photocq.photo.store.qq.com/psc?/V12I366i33niTT/D58JeCw1McT8yUSxC9nwTKkKt7uD3ggcCPwGHf.kCG4HUdicWJ9EQ5ouDbp5F*R9DRS1hvwirV1qrJZO1AOKFA!!/b&bo=qgFAAQAAAAABF9o!&rf=viewer_4"; // 网络图片的路径    
    

    public Renderer render1;  //Plan对象1
    public Renderer render2;  //Plan对象2

    public RawImage image1;  //图片对象1
    public RawImage image2;  //图片对象2
    
    // Start is called before the first frame update
    void Start()
    {
        StartCoroutine(LoadTextureFromNet1(imagePath1));
        StartCoroutine(LoadTextureFromNet2(imagePath1));
    }

    // Update is called once per frame
    void Update()
    {

    }
    

    //方法1
    IEnumerator LoadTextureFromNet1(string filePath)
    {
        // 创建一个WWW对象并加载本地图片
        WWW www = new WWW(filePath);

        yield return www;

        if (string.IsNullOrEmpty(www.error))
        {
            // 获取加载的纹理
            Texture2D texture = www.texture;


            //把贴图赋到RawImage
            image1.texture = texture;

            //把贴图赋到物体
            Material material = new Material(Shader.Find("Standard"));
            material.mainTexture = texture;
            render1.material = material;
        }
        else
        {
            Debug.LogError("下载失败:" + www.error);
        }
    }

    //方法2
    IEnumerator LoadTextureFromNet2(string filePath)
    {
        // 创建一个UnityWebRequest对象并加载本地图片
        UnityWebRequest www = UnityWebRequestTexture.GetTexture(filePath);

        yield return www.SendWebRequest();

        if (www.result == UnityWebRequest.Result.Success)
        {
            // 获取加载的纹理
            Texture2D texture = DownloadHandlerTexture.GetContent(www);

            //把贴图赋到RawImage
            image2.texture = texture;

            //把贴图赋到物体
            Material material = new Material(Shader.Find("Standard"));
            material.mainTexture = texture;
            render2.material = material;
        }
        else
        {
            Debug.LogError("下载失败:" + www.error);
        }
    }
}

使用上面方法,运行前:

运行后:

完美把网络图片Load下来,并赋到UI和物体上。

相关推荐
CoderIsArt2 小时前
C#中UI 线程与 Dispatcher
开发语言·ui·c#
WiChP4 小时前
【V0.1B15】从零开始的2D游戏引擎开发之路
游戏引擎
呆呆敲代码的小Y15 小时前
【游戏开发】Lua 与 C# 交互原理解析
c#·lua·交互·热更新·lua与c#交互·游戏热更新
用户2986985301416 小时前
PDF 转纯文本(TXT)免费攻略:轻松提取文字内容
人工智能·后端·c#
呆呆敲代码的小Y16 小时前
【游戏开发】C# 中的迭代器
java·开发语言·c#·迭代器
格林威1 天前
C# 相机Burst模式图像采集:使用相机内存配合OpenCvSharp和Halcon实现短时间的高速采集的方法
开发语言·人工智能·数码相机·计算机视觉·c#·视觉检测·工业相机
J总裁的小芒果1 天前
参数过多-分批传参
c#
典典分享指南2 天前
短视频分镜提示词:让 AI 出片的产品口播
java·c#·bash·composer·symfony
Z5998178412 天前
c#软件开发学习笔记--WPF(Canvas、数据绑定、MVVM模式、值转换器)
笔记·学习·c#