Unity之资源打包之AssetBundle

Unity之资源打包之AssetBundle

这里写图片描述

1.打包资源

using UnityEngine;
using System.Collections;
using UnityEditor;
public class AssetsBundle
{
    /// <summary>
    /// 打包资源
    /// </summary>
    public void BundleAssets()
    {
        //创建资源包数组,里面只能存一个资源包
        AssetBundleBuild[] assetBundleBuild = new AssetBundleBuild[1];
        //资源包命名
        assetBundleBuild[0].assetBundleName = "cube.assetbundle";
        //资源路径
        assetBundleBuild[0].assetNames = new string[] { "Assets/Resources/Cube.prefab" };
        //打包
        BuildPipeline.BuildAssetBundles(Application.persistentDataPath, assetBundleBuild,BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows);
    }
}

2.创建菜单

using UnityEditor;

class OperateMenu
{
    [MenuItem("Tools/BundleAssets")]
    public static void Bundle()
    {
        AssetsBundle assetsBundle = new AssetsBundle();
        assetsBundle.BundleAssets();
    }
}

3.加载打包资源

using System.IO;
using UnityEngine;

/// <summary>
/// 加载打包资源
/// </summary>
class LoadBundleAssets : MonoBehaviour
{
    private void Start()
    {
        byte[] buffer = GetBuffer();
        //从流中加载出资源包
        AssetBundle assetBundle = AssetBundle.LoadFromMemory(buffer);
        GameObject cube = assetBundle.LoadAsset<GameObject>("Cube");
        Instantiate(cube, Vector3.zero, cube.transform.rotation);
    }

    /// <summary>
    /// 获取打包资源
    /// </summary>
    /// <returns></returns>
    private byte[] GetBuffer()
    {
        //读取资源包文件,并写入字符流
        FileStream fs = new FileStream(Application.persistentDataPath + "/cube.assetbundle",FileMode.Open);
        byte[] buffer = null;
        buffer = new byte[fs.Length];
        fs.Read(buffer, 0, buffer.Length);
        return buffer;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值