当前位置: 首页 > article >正文

Unity 加载本地图片的方法

Unity加载本地图片有不少方法,一般使用以下这些:

1、使用System.IO下的File.ReadAllBytes方法:

    //方法一
    void LoadTextureFromFile1(string filePath)
    {
        // 创建一个Texture2D
        Texture2D texture = new Texture2D(1, 1);

        // 加载图片数据
        byte[] imageData = File.ReadAllBytes(filePath);

        // 将图片数据加载到Texture2D对象中
        texture.LoadImage(imageData);

        // 创建一个新的材质
        Material material = new Material(Shader.Find("Standard"));

        // 将加载的纹理应用到材质上
        material.mainTexture = texture;

        // 将材质应用到游戏对象上        
        render1.material = material;

    }

2、 使用System.IO下的数据流FileStream加载

    //方法二
    void LoadTextureFromFile2(string filePath)
    {
        //创建数据流并加载图片
        FileStream files = new FileStream(filePath, FileMode.Open);

        byte[] imgByte = new byte[files.Length];
        files.Read(imgByte, 0, imgByte.Length);
        files.Close();

        Texture2D texture = new Texture2D(1, 1);
        texture.LoadImage(imgByte);
        
        Material material = new Material(Shader.Find("Standard"));        
        material.mainTexture = texture;               
        render2.material = material;
    }

3、使用www类:

    //方法三
    IEnumerator LoadTextureFromFile3(string filePath)
    { 
        // 创建一个WWW对象并加载本地图片
        WWW www = new WWW(filePath);
        
        yield return www;
        
        if (string.IsNullOrEmpty(www.error))
        {
            // 获取加载的纹理
            Texture2D texture = www.texture;

            image1.texture = texture;
        }
        else
        {
            Debug.LogError("下载失败:" + www.error);
        }
    }

4、由于www类在新版中已经过时了,所以在新版Unity中我们可以使用UnityWebRequest类加载本地图片:

    //方法四
    IEnumerator LoadTextureFromFile4(string filePath)
    {        
        // 创建一个UnityWebRequest对象并加载本地图片
        UnityWebRequest www = UnityWebRequestTexture.GetTexture(filePath);
        
        yield return www.SendWebRequest();
        
        if (www.result == UnityWebRequest.Result.Success)
        {
            // 获取加载的纹理
            Texture2D texture = DownloadHandlerTexture.GetContent(www);

            image2.texture = texture;            
        }
        else
        {
            Debug.LogError("下载失败:" + www.error);
        }
    }

加载效果如下:Unity分别用4种方法加载本地图片_哔哩哔哩_bilibili


http://www.kler.cn/a/154397.html

相关文章:

  • aws中AcmClient.describeCertificate返回值中没有ResourceRecord
  • MongoDB在现代Web开发中的应用
  • 文心一言编写小球反弹程序并优化
  • Spring纯注解开发
  • 鸿蒙中如何实现图片拉伸效果
  • 基于gradio+networkx库对图结构进行可视化展示
  • 24.有哪些生命周期回调方法?有哪几种实现方式?
  • mysql区分大小写吗
  • 亚马逊云科技推出新一代自研芯片
  • 程序员的亚健康
  • N-135基于springboot,vue高校图书馆管理系统
  • 如何使用 NFTScan NFT API 在 Starknet 网络上开发 Web3 应用
  • JIRA 基本使用
  • Web框架与Django路由层
  • 初始数据结构(加深对旋转的理解)
  • Python自动化——原生警告框和自定义弹窗的区别
  • 智能优化算法应用:基于共生生物算法无线传感器网络(WSN)覆盖优化 - 附代码
  • 【嵌入式-51单片机】常见位运算和数据类型以及sbit使用
  • 5个被忽视的Linux实用命令
  • 《第一行代码:Android》第三版4.2常用控件的使用方法(2)
  • 求整数序列中出现次数最多的数
  • 深入理解同源限制:网络安全的守护者(下)
  • Linux 磁盘分区处理
  • JPEG 协议中英文对照
  • 分布式ID生成框架Leaf升级踩坑
  • vue 前端实现login页登陆 验证码