锋531 2023-07-20 19:29 采纳率: 88.1%
浏览 59
已结题

unity怎么动态切换image图片?

如何用名字来更换image的图片,比如我通过sprite图片名字去切换那样子!怎么做!

  • 写回答

1条回答 默认 最新

  • nameless_233 2023-07-24 08:50
    关注

    不推荐使用名字去更换,这样的性能会很低,因为是全局查找
    另一种方式是通过标签查找
    你可以试试预先读取到一个数组中,然后遍历读取,或者哈希表读取(在图片过大的时候,需要进行优化处理)
    哈希表的查找效率更高
    下面的代码是哈希的读取文件与查找

    using UnityEngine;
    using System.IO;
    using System.Collections.Generic;
    public string folderPath;
    public Dictionary<string, Texture2D> imageDict;
        void LoadImages()
        {
            DirectoryInfo dir = new DirectoryInfo(folderPath);
            FileInfo[] files = dir.GetFiles("*.png"); // 可根据需要更改文件扩展名
    
            imageDict = new Dictionary<string, Texture2D>();
    
            for (int i = 0; i < files.Length; i++)
            {
                byte[] fileData = File.ReadAllBytes(files[i].FullName);
                Texture2D tex = new Texture2D(2, 2);
                tex.LoadImage(fileData);
                imageDict.Add(tex.name, tex);
            }
        }
    
        public Texture2D GetImageByName(string imageName)
        {
            if (imageDict.ContainsKey(imageName))
            {
                return imageDict[imageName];
            }
    
            return null;
        }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 8月10日
  • 已采纳回答 8月2日
  • 创建了问题 7月20日