首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >服务器上的AssetBundle统一

服务器上的AssetBundle统一
EN

Stack Overflow用户
提问于 2014-07-09 20:05:53
回答 2查看 3.6K关注 0票数 1

我想问一下,是否有人在云上创建Assetbundle?我想在云上动态生成AssetBundle,客户端应用程序会相应地下载它。

你能告诉我你的想法吗?有什么云服务来托管联合吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-10 08:23:16

AssetBundles需要统一支持才能构建。有一个命令行批处理模式,您可以使用它自动构建资产包,并在虚拟的任何主机上承载它(一个简单的HTTP )。

请记住,您可能不需要资产包(或统一支持)-您可以轻松地下载纹理和音频从网上使用WWW类。对于纹理,您可以使用png,jpeg和tiff,音频wav,ogg (仅桌面和webplayer),mp3 (仅移动)。网格加载也应该是可能的,但这将需要额外的工具。

票数 0
EN

Stack Overflow用户

发布于 2017-06-13 05:59:58

接受的答案是点,但有轻微的变化,因为Unity5.6现在也支持所有其他特性在自由版本。我一直在做一个类似的项目,需要动态地构建资产包。我将发布相同的代码片段,这样以后对其他人来说,识别这段代码的过程就更简单了。

但在此之前,您可能需要考虑此过程的一些限制。在云需要(命令行)的批处理模式上动态构建资产捆绑包,该模式在命令行上运行统一(应安装统一以构建包)。此资产构建过程仅适用于Windows和OSX (No Linux)。下面给出了在批处理模式下调用Unity的命令,必须从Unity可执行文件的位置执行,

此命令创建一个空项目,

Unity -batchmode -quit -createProject <path/to/create a project>

在创建一个项目之后,您可以保存一个脚本,以便在资产/编辑器文件夹中构建资产,我编写了一个脚本来自动构建资产/模型文件夹中所有资产的资产包过程。

代码语言:javascript
复制
//BuildAssets.cs
using System.Collections;
using System.Collections.Generic;

public class BuildAssets : UnityEngine.MonoBehaviour
{
static void BuildAssetBundle()
{
    int i = 0;
    string log = "log.txt";
    string[] assetN;
    int N_Files;
    UnityEditor.AssetBundleBuild[] AssetMap = new UnityEditor.AssetBundleBuild[2];
    AssetMap[0].assetBundleName = "res";

    // Adding to path /Models
    string path = UnityEngine.Application.dataPath + "/Models";

    //log
    System.IO.File.AppendAllText(log, System.DateTime.Now.ToString() + "\n\n");
    System.IO.File.AppendAllText(log, path + "\n");


    System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(path);
    System.IO.FileInfo[] files = dir.GetFiles();

    // Number of files in "/Models" folder
    N_Files = files.Length;

    //log
    System.IO.File.AppendAllText(log, "Num assets: "+N_Files + " \n");


    assetN = new string[N_Files];
    foreach (System.IO.FileInfo file in files)
    {
        if (file.Exists)
        {
            if (!file.Extension.Equals(".meta"))
            {
                assetN[i] = "Assets/Resources/" + file.Name;
                System.IO.File.AppendAllText(log, assetN[i] + " \n");
                i += 1;
            }
        }
    }
    AssetMap[0].assetNames = assetN;

    UnityEditor.BuildPipeline.BuildAssetBundles("Assets/AssetBundles", AssetMap, UnityEditor.BuildAssetBundleOptions.None, UnityEditor.BuildTarget.Android);
    System.IO.File.AppendAllText(log, "\t----X----\n"); //log
   }
}

这是通过命令行构建资产包的命令。

代码语言:javascript
复制
Unity -batchmode -quit -projectPath path/to/UnityProjects/Projectname -executeMethod BuildAssets.BuildAssetBundle -logFile <Log file location>

我已经测试过这个了,它适用于我们的项目。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24662882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档