网络加载资源

3 篇文章 0 订阅
using System;
using System.Collections;
using UnityEngine;
using UnityEngine.Networking;

public class WebRequest : MonoBehaviour
{

    // 加载文本
    public IEnumerator GetRequest<T>(string url, Action<T> callBack)
    {
        using(UnityWebRequest unityWebRequest = UnityWebRequest.Get(url))
        {
            yield return unityWebRequest.SendWebRequest();
            if (unityWebRequest.isNetworkError || unityWebRequest.isHttpError)
            {
                Debug.LogError("加载出错");
            }
            else
            {
                string content = unityWebRequest.downloadHandler.text;
                T data = JsonUtility.FromJson<T>(content);
                callBack(data);
            }
        }
    }

    // 从网络加载一张图片
    public IEnumerator GetTexture<Texture>(string url, Action<Texture> callBack)
    {
        using(UnityWebRequest unityWebRequest = UnityWebRequest.Get(url))
        {
            DownloadHandlerTexture texDl = new DownloadHandlerTexture(true);
            unityWebRequest.downloadHandler = texDl;
            yield return unityWebRequest.SendWebRequest();
            if(!unityWebRequest.isNetworkError)
            {
                callBack(texDl.texture);
            }
        }
    }
}
using UnityEngine;
using UnityEngine.UI;

public class WebRequestImg : MonoBehaviour
{
    public Image image;
    AndroidJavaClass _JC = null;

    void Start()
    {
        // Java示例
        _JC = new AndroidJavaClass("com.example.test.Test");
    }

    // 请求加载图片
    void RequestImage()
    {
        // 网络地址
        string url = "";
        StartCoroutine(WebRequest.GetTexture(url, DownLoadImg));
        StartCoroutine(WebRequest.GetTexture(url, SaveImg));
    }

    // 设置图片
    void DownLoadImg(Texture texture)
    {
        image.mainTexture = texture;
    }

    // 保存图片在本地
    void SaveImg(Texture texture)
    {
        Texture2D texture2D = new Texture2D(texture.width, texture.height, TextureFormat.ARGB32, true);
        texture2D = texture as Texture2D;
        texture2D.Apply();

        byte[] bytes = texture2D.EncodeToPNG();
        string url = Application.persistentDataPath + "/share.png";
        /*
            Application.persistentDataPath 可读可写
            Application.dataPath 可读不可写
        */
        System.IO.File.WriteAllBytes(url, bytes);
    }

    // 分享图片
    void ShareImg()
    {
        string url = Application.persistentDataPath + "/share.png";
        _JC.Call("ShareImg", "", url);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值