Принятый ответ верен, но есть небольшие изменения, поскольку Unity5.6 теперь поддерживает все остальные функции в бесплатной версии. Я работал над аналогичным проектом, который требовал динамического создания пакетов ресурсов. Я опубликую свой фрагмент кода для того же, чтобы процесс идентификации стал проще для всех в будущем.
Но перед этим есть некоторые ограничения для этого процесса, которые вам, возможно, придется учитывать. Для динамического построения пакетов ресурсов в облаке требуется (командная строка) пакетный режим, который запускает Unity в командной строке ( Для сборки пакетов необходимо установить Unity). Этот процесс создания ресурсов работает только в Windows и OS X (без Linux). Команда для вызова Unity в пакетном режиме приведена ниже и должна выполняться из местоположения исполняемого файла Unity,
эта команда создает пустой проект,
Unity -batchmode -quit -createProject <path/to/create a project>
После создания проекта вы можете сохранить сценарий для создания ресурсов в папке Assets / Editor. У меня есть сценарий для автоматизации процесса создания набора ресурсов для всех ресурсов в папке Assets / Models.
//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
}
}
Это команда для создания пакета ресурсов через командную строку.
Unity -batchmode -quit -projectPath path/to/UnityProjects/Projectname -executeMethod BuildAssets.BuildAssetBundle -logFile <Log file location>
Я протестировал это, и он работает для нашего проекта.
person
Arvind
schedule
13.06.2017