Unity怎么打包成Bundle文件?

我这边用assetbundle master打包了一个fbx物体,用UABE打开后里面有一个Test(Mesh)文件,我用自己的代码读取里面的Mesh并且在游戏中生成,结果生成了一个 Test的游戏物体,但是网络显示 未找到网络,我已经检查过了Test(Mesh)在里面,没有成功!
当我识别别人的bundle竟然在游戏中生效了,有没有人能告诉我是不是我用assetbundle master的错误操作或者是其他方法

切记:我知道代码,就是不知道怎么把Unity打包的多个assets文件进行捆绑压缩成Bundle文件!

基于ChatGPT的回答:
首先,你需要确保你的代码正确读取了Test(Mesh)文件中的Mesh数据,并成功生成了游戏物体。如果你的代码没有问题,那么可能是网络设置的问题导致了未找到网络的错误。

你可以尝试在游戏中使用其他网络资源,比如图片或者音频文件,看看是否能够成功加载和播放。如果其他资源能够正常加载,那么可能是你的Test(Mesh)文件中的Mesh数据有问题,需要检查一下是否正确导出和打包。

另外,你也可以尝试使用其他的打包工具来打包你的fbx物体,比如Unity自带的AssetBundle工具,看看是否能够解决问题。

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
使用AssetBundle Master打包Unity项目时需要注意以下几点:

  1. 将需要打包的资源放在一个文件夹中,然后右键选择“Asset Bundle” -> “New Main Asset Bundle” 创建一个主资源包,并设置其名字和路径。

  2. 将需要打包的资源拖拽至主资源包区域,然后打开“Build”窗口(快捷键Ctrl + B),在“AssetBundle”区域中选择要打包的资源,设置打包信息,如AssetBundle 名称、压缩方式等。点击“Build”按钮,即可开始打包。

下面是读取打包生成的AssetBundle文件,并生成物体的示例代码:

IEnumerator LoadAssetBundle()
{
    // 加载AssetBundle文件
    UnityWebRequest www = UnityWebRequestAssetBundle.GetAssetBundle("file:///path/to/your/asset_bundle_file");
    yield return www.SendWebRequest();

    if (www.error == null)
    {
        // 获取AssetBundle包
        AssetBundle bundle = DownloadHandlerAssetBundle.GetContent(www);

        // 通过包名和资源名加载出想要的资源
        GameObject obj= bundle.LoadAsset<GameObject>("Test");

        // 在场景中生成物体
        Instantiate(obj);
    }
}

在生成AssetBundle文件时,需要注意下面几点:

  1. 资源名称必须与加载时使用的名称一致。

  2. 确认资源路径无误,路径中需要使用相对路径而不是绝对路径。

  3. 确认资源是否被正确打包,可以使用UABE等工具检查AssetBundle文件内容。

希望这些信息对你有所帮助。
如果我的回答解决了您的问题,请采纳!

Unity可以通过AssetBundle系统将资源打包成bundle文件。AssetBundle可以包含游戏中的各种资源,如场景、纹理、音频文件、预制体等,可以在运行时动态加载。这在减小安装包大小和支持资源更新等方面非常有用。以下是打包AssetBundle的基本步骤:
1.首先确保已经安装了Unity,并打开你的项目。
2.在项目的Assets文件夹下创建一个新的文件夹,例如“AssetBundles”,用于存放打包后的AssetBundle文件。
3.在Unity编辑器中选择你想要打包成AssetBundle的资源。可以是场景、预制体、材质等。
4.在Inspector面板中,找到“AssetBundle”选项。点击“New”按钮,为选定的资源创建一个新的AssetBundle。给AssetBundle命名,例如“example_bundle”。
5.创建一个C#脚本,例如“BuildAssetBundles.cs”,用于定义AssetBundle的打包过程。将该脚本放在项目的“Assets/Editor”文件夹下。如果没有该文件夹,请创建一个。脚本内容如下:

img


这个脚本将在Unity编辑器的“Assets”菜单中创建一个名为“Build AssetBundles”的子菜单。根据需要,可以将“BuildTarget”更改为其他平台,如Android或iOS等。
回到Unity编辑器,点击菜单栏的“Assets”,在下拉菜单中选择“Build AssetBundles”以开始打包过程。完成后,你会在“Assets/AssetBundles”文件夹下看到生成的AssetBundle文件,例如“example_bundle”。
最后,你可以在项目的运行时加载和使用这些AssetBundle。以下是一个简单的示例,演示了如何在运行时加载AssetBundle:

img


这个示例脚本将从本地加载名为“example_bundle”的AssetBundle,并实例化其中名为“ExamplePrefab”的预制体。在实际项目中,你可能需要从服务器下载AssetBundle,只需将“bundleUrl”更改为服务器上的URL即可。

引用chatGPT作答,你的问题似乎涉及到了几个不同的方面,因此我会逐步回答你的问题。

首先,关于 "未找到网络" 的错误信息,这可能是由于网络连接出现了问题,或者是由于你的代码在尝试连接到某个网络资源时发生了错误。为了更好地帮助你解决这个问题,我建议你检查一下你的网络连接是否正常,并确保你的代码能够正确地访问所需的网络资源。

其次,关于使用 AssetBundle Master 打包 FBX 文件并在游戏中生成 Mesh 的问题,你需要检查一下你的代码是否正确地加载了 AssetBundle,并使用正确的名称来获取 Mesh。你可以尝试使用 Unity 自带的 AssetBundle 加载 API 来加载 AssetBundle,例如:

AssetBundle assetBundle = AssetBundle.LoadFromFile("path/to/your/assetbundle");
GameObject gameObject = assetBundle.LoadAsset<GameObject>("Test");
Mesh mesh = gameObject.GetComponent<MeshFilter>().sharedMesh;

这段代码将加载名为 "Test" 的 GameObject,并从它的 MeshFilter 组件中获取 Mesh。请注意,这里的 "Test" 是 GameObject 的名称,而不是 Mesh 的名称。

最后,如果你发现别人的 AssetBundle 在游戏中能够生效,但是你自己的 AssetBundle 不行,那么可能是由于你在打包 AssetBundle 时出现了错误或者遗漏了某些步骤。你可以尝试重新打包你的 AssetBundle,并确保你正确地设置了所有必需的参数。你还可以尝试使用 Unity 提供的 AssetBundle Browser 工具来查看你的 AssetBundle 中包含了哪些资源,并检查它们的属性是否正确。

希望这些建议能够帮助你解决问题。如果你需要进一步的帮助,请提供更多的详细信息,以便我能够更准确地理解你的问题并提供更好的解决方案。

以下内容引用CHATGPT:

首先,确保您使用的是正确的打包方式和代码,以确保资源正确打包和加载。以下是一个简单的示例代码,演示如何在Unity中加载和实例化AssetBundle中的Mesh:

```csharp
IEnumerator LoadAssetBundle(string url)
{
using (WWW www = new WWW(url))
{
yield return www;
AssetBundle bundle = http://www.assetbundle/;
GameObject obj = bundle.LoadAsset<GameObj