问题标签 [assetbundle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
518 浏览

javascript - 将脚本添加到 HTML 中的assetbundle

我正在开发一个项目,该项目使用 Unity WebGL 以 3D 显示不同的机器/零件/..,这些零件或机器由用户选择,然后加载到场景中(现在只有一个场景,但我们可能还想动态加载场景)。

由于我们想要创建不同的资产包,每个包含 1 个或多个部分,因此我们可以按需下载这些选择的大量选择。

我通过将 URL 传递给LoadFromCacheOrDownload并从 www 对象中提取 gameObject 成功地做到了这一点。

现在我们还想在资产中包含脚本来创建动画和用户交互。我按照这里给出的解释:docs.unity3d link这在 WebPlayer 中完美运行。但是最终要求是 WebGL,为 WebGL 构建的相同代码会出现以下错误:

NotSupportedException:/Users/builduser/buildslave/unity/build/Tools/il2cpp/il2cpp/libil2cpp/icalls/mscorlib/System/AppDomain.cpp(184):不支持对 IL2CPP:AppDomain::LoadAssemblyRaw 的内部调用-“这个 icall 不是由 il2cpp 支持。” System.AppDomain.LoadAssemblyRaw (System.Byte[] rawAssembly, System.Byte[] rawSymbolStore, System.Security.Policy.Evidence securityEvidence, Boolean refonly) System.AppDomain.Load (System.Byte[] rawAssembly, System.Byte[] rawSymbolStore, System.Security.Policy.Evidence securityEvidence, Boolean refonly) System.AppDomain.Load (System.Byte[] rawAssembly, System.Byte[] rawSymbolStore, System.Security.Policy.Evidence securityEvidence) System.AppDomain.Load (System .Byte[] rawAssembly) System.Reflection.Assembly.Load (System.Byte[] rawAssembly) API+c__Iterator0。

它似乎源于调用System.Reflection.Assembly.Load(txt.bytes);(我从示例中得到),所以我认为反射类(还没有?)完全支持 WebGL。我似乎找不到任何关于此的文档。

有没有办法为此使用反射?充其量我希望有一些不同的代码可以解决这个问题,最坏的情况是我们将不得不在 Javascript 中为 WebGL 创建脚本并添加它们而不是作为二进制文件?我在这里有点迷路,所以任何线索都值得赞赏。

(从answers.unity3d交叉发布)

0 投票
3 回答
4997 浏览

yii2 - yii2 资产包 - 单个文件位置

我正在 Yii2 框架上做一个网络应用程序。定义(扩展)新的 AssetBundle

渲染时,CSS 文件在<head>标签中发布,JS 文件在标签底部<body>。没关系。但我想在标签中发布
一个be_in_head_tag.js文件。<head>当我使用$jsOptions它时,它会将所有 JS 文件移动到<head>标签中。
是否可以只为一个文件设置选项?

0 投票
1 回答
822 浏览

javascript - Yii2 AssetBundle 中的 Javascript 未在更新时发布

我有一个非常简单的 AssetBundle:

如果我更改捆绑包中的 JavaScript,它不会在开发模式下发布到 web/asset 目录。每次我都必须删除 web/asset 目录才能获得最新版本。这很烦人。我应该怎么办?

0 投票
1 回答
1054 浏览

optimization - Unity 4 - 使用 AssetBundle 预加载跨多个场景共享的资产?

我的游戏项目中有几个区域被分成几个场景,例如,假设有一个名为“地下室”的第一个区域,它被分成 Basement_1、Basement_2 和 Basement_3 场景;另一个区域“阁楼”分为 Attic_1 和 Attic_2。

一些资产(纹理图集和声音)在一个区域的所有场景中共享,所以我认为我可以为“地下室”制作一个包含所有共享资产的 AssetBundle,并为“阁楼”区域制作另一个包含共享资产的 AssetBundle . 然后当我的播放器即将进入“Basement”区域时,我会加载“Basement” AssetBundle,这样当我调用 Application.LoadLevel("Basement_1")、Application.LoadLevel("Basement_2") 或 Application.LoadLevel (“Basement_3”),共享资源(已加载到包中)不会不必要地重新加载,只会加载特定于场景的资源。然后,如果我到了游戏知道不再需要地下室资产的地步,或者至少在很长一段时间内都不需要,那么我会卸载捆绑包,

我的问题是:它是这样工作的吗?例如,假设我即将进入“Basement”,所以如果我从磁盘加载我的“Basement”AssetBundle,并且基本上只是在其上调用 LoadAllAssets(),Application.LoadLevel("Basement_1") 会“自动”查找我已加载的捆绑包中的资产?还是 Application.LoadLevel 只是重新加载它需要的资产?

我目前的理解是 Application.LoadLevel 不会自动在 AssetBundle 中查找。如果是这样,有没有办法让它看起来在加载的 AssetBundle(s) 中?还有另一种我看不到的方法吗?

这个想法是尝试减少加载时间,因为例如进出门可能会触发对 Application.LoadLevel("Basement_X") 和 Application.LoadLevel("Basement_Y") 的来回调用。

在此先感谢您的任何见解;)

干杯!

0 投票
0 回答
905 浏览

unity3d - 缺少材质的 Unity3D AssetBundle 预制件

我有一个项目,我正在构建一个 AssetBundle 并从所述assetbundle 加载一个预制件。这个预制件由一个空的,带有一个包含网格、网格过滤器、碰撞器和材质的单个子对象组成。当我加载这个预制件时,材料丢失了。但是,如果我删除空的父对象,以便预制件仅包含具有先前列出的组件的单个对象,则预制件具有预期的一切。

知道为什么会发生这种情况以及如何解决吗?

0 投票
1 回答
2538 浏览

unity3d - Unity3D 资产捆绑清单

再会!我是统一资产包的新手,所以我有一个问题:“是否有必要将AssetBundleManifestLoadFromCacheOrDownload函数一起使用”?而且,AssetBundleManifest文件是否适用于所有捆绑包?

在我的项目中,我每个月都会创建很多新的资产包。那么我应该每次都手动重写 AssetBundleManifest 吗?

PS如果问题的措辞不正确,我深表歉意。

0 投票
1 回答
1599 浏览

unity3d - 从资产包中加载预制件上的脚本时出错

我目前正在尝试设置我的项目以允许用户在发布后下载迷你游戏。为此,我尝试使用资产包来促进这一点,一个包含新游戏场景,一个包含所需脚本的资产和 DLL。我遇到的问题是,当我从包中加载场景或预制件时,所有附加的脚本仍然存在,但警告说“无法加载关联的脚本。请修复任何编译错误并分配有效的脚本”。是否有一些明显的东西我丢失或资产包不能以这种方式工作,我将不得不在加载时重建我的场景?

0 投票
1 回答
9614 浏览

unity3d - Unity:从无文件扩展名的资产包加载资产

我正在使用资产包来加载本地化的 VO。这些 VO 文件可能是 .wavs 或 .oggs,在加载文件之前指定哪个是不可行的。从资源加载默认文件时这很好,因为 Unity 不需要文件扩展名。但是,当从 Asset Bundle 加载本地化文件时,如果文件扩展名未包含在加载调用中,则无法找到该文件。清单文件确实包含扩展名。

有没有办法在不提供扩展名的情况下从 Asset Bundle 加载文件?据我所知,这在 Unity 4 中是可行的,但我在使用 Unity 5 (5.1.2p3) 时遇到了问题。

就像我正在尝试做的一个例子:

这有效:

这也有效:

但这不会:

回答后编辑:

我的例子并不完全正确,因为我是在解释它们。第三个示例实际上可以像上面写的那样工作。但是,我在代码中实际尝试做的是:

由于我既没有指定有效的路径,也没有指定有效的文件名,所以这不起作用。有关完整解释,请参阅已接受的答案。

0 投票
1 回答
1573 浏览

android - 在 Unity 中使用新的 Vuforia 标记/数据集加载 Assetbundle

我有一个通过assetbundle 加载新场景的应用程序,问题是,我有时需要更新应用程序,但我无法更新ios 和android 商店中可用的核心。所以我需要通过assetbundle 加载新的内容和新的vuforia 数据集。Vuforia Cloud 不是一个选项。

我知道不可能通过assetbundle 加载脚本。但也许还有另一种通过互联网/资产包加载新的 vuforia 数据集的方法?

我正在使用 Unity 5 和 Vuforia 5,该应用程序是为 ios 和 android 开发的。

谢谢!

0 投票
2 回答
5864 浏览

unity3d - Unity - 是否有必要从游戏构建中排除 AssetBundles 中使用的资产?

很难找到有关 AssetBundles 实际工作方式的大量信息。找不到有关如何使用游戏构建管理资产包的任何解释。

AssetBundles基本上我的项目窗口中有一个文件夹。我放在这个文件夹中的所有资产都作为 AssetBundles 构建在我的构建目录中的一个文件夹中(如 GameName/Data/AssetBundles),然后在需要时加载。

但是当我自己构建游戏时,它是否知道在游戏构建中不包含 AssetBundles 中使用的这些资产?还是我需要以某种方式排除它们?

编辑:我已经取得了一些进展。

据我了解,只有存在于构建设置中的场景中的资产才会与游戏构建一起构建。脚本总是在游戏构建中构建的(我不确定是否有办法解决这个问题,但这对我来说不是问题)。

所以我在游戏构建中有一个场景,它充当游戏的启动对象。此场景上有一个 Asset Manager 脚本,其中DontDestroyOnLoad指定了Awake.

我的资产管理器脚本基本上只处理包、资产和实例的加载/卸载。

我目前不太确定如何为场景构建资产包。我让它使用LoadAllAssets然后做LoadLevel,但是如果多个场景共享一些资产怎么办?场景构建最终是否会因拥有可共享的资产副本而变得臃肿?我读到 Unity 5 会自动处理依赖项,但我不确定这是否与此有关。