Unity异步加载图片,当该文件夹下有大量图片会缓慢加载,没有什么实际用处,可以用于学习异步

public class AnatomyLeftRight : MonoBehaviour
{
    public Text TopText;//顶层动物名字
    public Button LeftBtn;//前一页
    public Button RightBtn;//后一页
    public Text NowText;//当前图片
    public Text SumText;//总数
    public Image image;//图片

    public Slider sliderLine;
    public Text CountText;
    public Text StartText;
    public Text DescribeText;
    public Text EndText;

    public int Sum;
    public int NowCount;
    public List<Sprite> spriteList;
    private int currentImageIndex = 0;  // 当前显示的图片在列表中的索引
    public string Path;选择数据源
async System.Threading.Tasks.Task SelectSataAsync()
{
    print(TopText.text.ToString());
    switch (TopText.text.ToString())
    {
        case "猪":
            Path = "Assets/AssetsPackage/Texture/Images/猪/猪水平切";
            print("猪猪");
            await LoadImagesAsync(Path);
            ShowCurrentImage();

            break;
        case "马":
            Path = "Assets/AssetsPackage/Texture/Images/马/马水平切";
            await LoadImagesAsync(Path);
            ShowCurrentImage();
            break;
        case "牛":
            Path = "Assets/AssetsPackage/Texture/Images/牛/牛水平切";
            await LoadImagesAsync(Path);
            ShowCurrentImage();
            break;
        case "羊":
            Path = "Assets/AssetsPackage/Texture/Images/羊/羊水平切";
            await LoadImagesAsync(Path);
            ShowCurrentImage();
            break;
        case "鸡":
            Path = "Assets/AssetsPackage/Texture/Images/鸡/鸡水平切";
            await LoadImagesAsync(Path);
            ShowCurrentImage();
            break;
        case "狗":
            Path = "Assets/AssetsPackage/Texture/Images/狗/狗水平切";
            await LoadImagesAsync(Path);
            ShowCurrentImage();
            break;
        case "猫":
            Path = "Assets/AssetsPackage/Texture/Images/猫/猫水平切";
            await LoadImagesAsync(Path);
            ShowCurrentImage();
            break;
        case "兔":
            Path = "Assets/AssetsPackage/Texture/Images/兔/兔水平切";
            await LoadImagesAsync(Path);
            ShowCurrentImage();
            break;
        default: Debug.LogError("起始字段有误"); break;
    }

}
//加载图片并添加到列表中
async Task LoadImagesAsync(string imagepath)
{
    string[] files = Directory.GetFiles(imagepath, "*.png");//获取文件
    if (files.Length > 0)
    {
        Sum = files.Length;//获取图片总数
        print(Sum);
    }
    else
    {
        print("folder does not contain any .png files");
    }
    print(imagepath);
    Sum = files.Length;//获取图片总数
    sliderLine.maxValue = Sum - 1;
    foreach (string file in files)
    {
        byte[] data = await Task.Run(() => File.ReadAllBytes(file));//读取文件数据
        Texture2D texture = new Texture2D(2, 2);
        texture.LoadImage(data);
        Sprite sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), Vector2.zero);
        spriteList.Add(sprite);
    }
}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值