Unity 简单实现资源管理类加载AssetBundle

本文介绍如何在Unity中通过C#编写一个资源管理类,利用协程和优先级队列优化AssetBundle的加载性能。文章提供两种不同的实现方案,并附带具体项目供读者下载参考。
摘要由CSDN通过智能技术生成

基于Unity用C#语言编写一个资源管理类,要求如下:
使用协程加载加载AssetBundle,支持优先级队列,尽量考虑加载新能。

设置打包编辑器:

#if UNITY_EDITOR
using UnityEngine;
using UnityEditor;
using System.Collections;
using System.IO;

public class AssetBundle
{
    //编辑器扩展,在菜单栏Assets下生成Build AssetBundles菜单
    [MenuItem("Assets/Build AssetBundles")]
    //进行资源打包
    static void BuildAllAssetBundles()
    {
        //打包之前要保证文件夹存在,不存在的话会报错
        //使用相对路径保存
        string dir = "AssetBundle";
        if (Directory.Exists(dir) == false)
        {
            Directory.CreateDirectory(dir);
        }
        //BuildPipeline是UnityEditor中用于打包的类,其中的BuildAssetBundle用于AssetBundle打包
        //dir:存储的路径
        //BuildAssetBundleOptions:表示压缩式的算法   None为LZMA算法
        //BuildTarget: 表示用于什么平台
        BuildPipeline.BuildAssetBundles(dir, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64);

        Debug.Log("打包成功!");
    }
}
#endif

第一种实现方式:

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking; //UnityWebRequest
using UnityEngine.UI;

public class RS : MonoBehaviour //资源管理类,进行资源优先级排序并进行资源加载
{
    /*
    //UnityWebRequest加载测试实例,用来检测一开始是否加载成功
    IEnumerator Start()
    {//使用UnityWebRequest

        string uri = @"http://localhost:56000/AssetBundle/image1.unity3d"; //获取请求,注意端口号
        UnityWebRequest request = UnityWebRequest.GetAssetBundle(uri);
        yield return request.SendWebRequest(); //等待请求发送完
        Debug.Log(request);

        //DownloadHandlerAssetBundle.GetContent(request); 注意,此时仅仅是取得ab对象
        //AssetBundle ab = (request.downloadHandler as DownloadHandlerAssetBundle).assetBundle;
        UnityE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值