很多3D模型文件可以冻结Unity编辑器和Jetbrains Rider
A lot of 3D model file can freeze Unity editor and Jetbrains Rider
我想用4000多个3D模型。
该文件夹的大小至少为 20GB。
当我用 Unity 编辑器打开这个文件夹时,它像你想象的那样冻结了我的 Unity 引擎和 Jetbrains Rider。但是,没有理由每次都加载这些模型,因为加载的多个模型是在运行时动态确定的。
我想我可以利用 AssetBundle 特性来动态加载这些模型。但是,我认为限制资产必须放在Assets文件夹中才能构建为资产。那会冻结我的编辑器和 Rider。
但从技术上讲,我认为 AssetBundle 必须能够单独构建。
我该如何解决这个问题?
我认为最好的解决方法就是不要使用那么多模型。
就这么简单。
您应该选择最适合其余模型的模型,并为每个模型创建一些不同的纹理。
就像电影里的一样。你不需要 2000 人来吸引人群。您只需要 20 个不同的人并在 CGI 中复制粘贴。
您可以尝试将文件夹排除在索引之外。
https://youtrack.jetbrains.com/issue/RIDER-8664#comment=27-2399808
您确实可以使用 Assetbundle 来解决这个问题。如果您将所有模型构建到 assetbundles 中,您可以将 assetbundle 文件和 assetbundle.manifest 存储在远程服务器或 FTP 上,并在需要资产时在运行时下载它。这样模型就永远不会在你的构建项目中,甚至可以在一个单独的统一项目中,解决你的主项目的崩溃问题。
对于我的回答,我将假设您使用的是 Unity 的新 Assetbundle 浏览器工具并且使用高于 5.6 的 Unity 版本。如果你没有新的 Assetbundle 浏览器,这里有一些快速的步骤来获得它:
- 从 Unity GitHub
下载 AssetBundle 浏览器工具
- 将下载的文件添加到您的 Unity 项目的 /Asset/ 文件夹中
- 转到 Window > assetbundle 浏览器
- 可以找到快速教程here
构建捆绑包
为此使用 assetbundle 的好处是,只要 Unity 版本匹配,它们就可以从单独的项目中构建。因此,我建议创建一个新的空项目并测试在不使 Unity 崩溃的情况下您可以在该项目中拥有多少个模型。
一旦你发现了限制,就可以从模型中创建预制件,并将它们添加到 Assetbundle 浏览器工具中。
在 assetbundle 浏览器工具的 "build" 部分中设置要为其构建 assetbundle 的目标平台和要应用的压缩。完成后点击 "build" 构建您的资产包。
完成此过程后,您可以获取 assetbundle 文件和 assetbundle.manifest 并将它们上传到单独的服务器或 FTP 客户端可以在运行时连接到该服务器以下载所需的 assetbundle,其中包含想要的型号。
由于新的 Assetbundle 浏览器工具是开源的,您还可以在构建 assetbundle 后直接自动上传它们。
这样做的另一个好处是 assetbundle 浏览器会检测任何共享资源(例如着色器、脚本),并为您提供将它们移动到共享资源包中的选项,只需下载一次,并且任何后续资源包都可以称呼。这样您就不必继续下载共享资源了。
构建 assetbundle 是一项非常耗时的任务(也取决于目标平台和压缩设置),因此如果您有可用资源,您可能希望同时在多台计算机上执行此操作。
我想用4000多个3D模型。 该文件夹的大小至少为 20GB。 当我用 Unity 编辑器打开这个文件夹时,它像你想象的那样冻结了我的 Unity 引擎和 Jetbrains Rider。但是,没有理由每次都加载这些模型,因为加载的多个模型是在运行时动态确定的。
我想我可以利用 AssetBundle 特性来动态加载这些模型。但是,我认为限制资产必须放在Assets文件夹中才能构建为资产。那会冻结我的编辑器和 Rider。 但从技术上讲,我认为 AssetBundle 必须能够单独构建。
我该如何解决这个问题?
我认为最好的解决方法就是不要使用那么多模型。
就这么简单。
您应该选择最适合其余模型的模型,并为每个模型创建一些不同的纹理。
就像电影里的一样。你不需要 2000 人来吸引人群。您只需要 20 个不同的人并在 CGI 中复制粘贴。
您可以尝试将文件夹排除在索引之外。 https://youtrack.jetbrains.com/issue/RIDER-8664#comment=27-2399808
您确实可以使用 Assetbundle 来解决这个问题。如果您将所有模型构建到 assetbundles 中,您可以将 assetbundle 文件和 assetbundle.manifest 存储在远程服务器或 FTP 上,并在需要资产时在运行时下载它。这样模型就永远不会在你的构建项目中,甚至可以在一个单独的统一项目中,解决你的主项目的崩溃问题。
对于我的回答,我将假设您使用的是 Unity 的新 Assetbundle 浏览器工具并且使用高于 5.6 的 Unity 版本。如果你没有新的 Assetbundle 浏览器,这里有一些快速的步骤来获得它:
- 从 Unity GitHub 下载 AssetBundle 浏览器工具
- 将下载的文件添加到您的 Unity 项目的 /Asset/ 文件夹中
- 转到 Window > assetbundle 浏览器
- 可以找到快速教程here
构建捆绑包
为此使用 assetbundle 的好处是,只要 Unity 版本匹配,它们就可以从单独的项目中构建。因此,我建议创建一个新的空项目并测试在不使 Unity 崩溃的情况下您可以在该项目中拥有多少个模型。
一旦你发现了限制,就可以从模型中创建预制件,并将它们添加到 Assetbundle 浏览器工具中。
在 assetbundle 浏览器工具的 "build" 部分中设置要为其构建 assetbundle 的目标平台和要应用的压缩。完成后点击 "build" 构建您的资产包。
完成此过程后,您可以获取 assetbundle 文件和 assetbundle.manifest 并将它们上传到单独的服务器或 FTP 客户端可以在运行时连接到该服务器以下载所需的 assetbundle,其中包含想要的型号。
由于新的 Assetbundle 浏览器工具是开源的,您还可以在构建 assetbundle 后直接自动上传它们。
这样做的另一个好处是 assetbundle 浏览器会检测任何共享资源(例如着色器、脚本),并为您提供将它们移动到共享资源包中的选项,只需下载一次,并且任何后续资源包都可以称呼。这样您就不必继续下载共享资源了。
构建 assetbundle 是一项非常耗时的任务(也取决于目标平台和压缩设置),因此如果您有可用资源,您可能希望同时在多台计算机上执行此操作。