Unity中的AssetBundle笔记

Unity中的AssetBundle笔记
# Unity中的AssetBundle笔记

## 什么是AssetBundle

AssetBundle是Unity pro提供的一种用来存储资源的文件格式,它可以存储任意一种Unity引擎能够识别的资源,如Scene、Mesh、Material、Texture、Audio等。同时,AssetBundle也可以包含开发者自定义的二进制文件,只需要将自定义文件的扩展名改为.bytes,Unity就可以把它识别为TextAsset,进而就可以被打包到AssetBundle中。

## AssetBundle的特点

- 压缩(缺省)
- 动态载入
- 本地缓存

## AssetBundle VS Resource

AssetBundle作为Unity官方推崇的资源更新方案,与传统的Resource差异如下:

- Resource放在Resources目录下,resources.assets文件,单个文件有2GB限制,首次必须全部下载。
- AssetBundle创建需要通过Editor脚本创建,支持动态下载,是Unity中唯一支持热更新的资源格式。

## 创建AssetBundle

1. **创建预制体**:在Unity中创建一个预制体(例如Cube)。
2. **编写脚本**:

```csharp
using System.Collections;
using UnityEngine;

public class BuildAssetBundles : MonoBehaviour
{
    [MenuItem("Assets/Build AssetBundles")]
    static void BuildAllAssetBundles()
    {
        BuildPipeline.BuildAssetBundles("Assets/AssetBundles", BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64);
    }
}
  1. 运行脚本:在Unity中运行上述脚本,将会生成AssetBundle文件。

加载AssetBundle

  1. 编写脚本
using System.Collections;
using UnityEngine;

public class LoadAssetBundles : MonoBehaviour
{
    public string url;
    public string playerName;

    void Start()
    {
        StartCoroutine(Load());
    }

    IEnumerator Load()
    {
        using (WWW www = new WWW(url))
        {
            yield return www;
            if (www.error == null)
            {
                AssetBundle assetbundle = www.assetBundle;
                UnityEngine.Object obj = assetbundle.LoadAsset(playerName);
                Instantiate(obj);
                assetbundle.Unload(false); // 把用完后的资源删除,不会把全部的AssetBundle都删除了
            }
            else
            {
                Debug.Log("资源加载失败");
            }
        }
    }
}
  1. 挂载脚本:将上述脚本挂载到游戏对象上。
  2. 填写基本信息
    • url = file:///E:/Users/Unity Projects/Learning20180708/Assets/AssetBundles/capsule.assetbundle
    • playerName = capsule

此时,便能实例化出游戏对象了。

Read more

🚀Zeek.ai一款基于 Electron 和 Vite 打造的跨平台(支持 Windows、macOS 和 Linux) AI 浏览器

🚀Zeek.ai一款基于 Electron 和 Vite 打造的跨平台(支持 Windows、macOS 和 Linux) AI 浏览器

是一款基于 Electron 和 Vite 打造的跨平台(支持 Windows、macOS 和 Linux) AI 浏览器。 集成了 SearXNG AI 搜索、开发工具集合、 市面上最流行的 AI 工具门户,以及代码编写和桌面快捷工具等功能, 通过模块化的 Monorepo 架构,提供轻量级、可扩展且高效的桌面体验, 助力 AI 驱动的日常工作流程。

By Ne0inhk
超快速,使用ChatGPT编写回归和分类算法

超快速,使用ChatGPT编写回归和分类算法

本文将使用一些 ChatGPT 提示,这些提示对于数据科学家在工作时非常重要。 微信搜索关注《Python学研大本营》,加入读者群,分享更多精彩 以下是一些示例ChatGPT 提示的列表以及数据科学家的响应。 ChatGPT 提示 为决策树回归算法生成 python 代码。 下面是使用scikit-learn在 Python 中进行决策树回归的示例代码: import numpy as np import matplotlib.pyplot as plt from sklearn.tree import DecisionTreeRegressor # Generate random data rng = np.random.default_rng() x = 5 * rng.random(100) y = np.sin(x) + 0.

By Ne0inhk
力扣每日一题:993.二叉树的堂兄弟节点 深度优先算法

力扣每日一题:993.二叉树的堂兄弟节点 深度优先算法

993.二叉树的堂兄弟节点 难度:简单 题目: 在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处。 如果二叉树的两个节点深度相同,但 父节点不同 ,则它们是一对堂兄弟节点。 我们给出了具有唯一值的二叉树的根节点 root ,以及树中两个不同节点的值 x 和 y 。 只有与值 x 和 y 对应的节点是堂兄弟节点时,才返回 true 。否则,返回 false。 示例: 示例 1: 输入:root = [1,2,3,4], x = 4, y = 3 输出:false

By Ne0inhk