Я успешно могу запускать базовые функции Unity Editor из командной строки с помощью такой команды:
"C:\Program Files\Unity\Hub\Editor\2019.1.0b1\Editor\Unity" -batchmode -quit -projectPath "C:\Users\me\OneDrive\Documents\totally empty" -executeMethod COBY.BuildIt -logfile "C:\Users\me\OneDrive\Desktop\wow.txt"
и некоторого кода на C #, например:
public class COBY : MonoBehaviour
{
public static void BuildIt() {
AssetBundleBuild[] assets = new AssetBundleBuild[2];
assets[0].assetBundleName = "cobysNewBundle";
string[] assetNames = new string[2];
assetNames[0] = "Assets/CobyThings/teffilin.fbx";
assetNames[1] = "Assets/CobyThings/up.fbx";
assets[0].assetNames = assetNames;
assets[1].assetBundleName = "anotherBundle";
string[] notherBundleNames = new string[1];
notherBundleNames[0] = "Assets/CobyThings/atzmusPic.png";
assets[1].assetNames = notherBundleNames;
var path = "Assets/m23214ycobytest.txt";
StreamWriter writer = new StreamWriter(path, true);
writer.WriteLine("Just wrote to these assets!");
writer.Close();
Debug.Log("ASDFGG");
MonoBehaviour.print("wow");
BuildPipeline.BuildAssetBundles("Assets/CobysAssets", assets, BuildAssetBundleOptions.None, BuildTarget.WebGL);
}
}
который на самом деле прекрасно работает (пока я помещаю файл C # в папку «Assets / Editor»), как при запуске его как MenuItem в редакторе Unity, так и при вызове команды из командной строки.
Проблема:
Я хотел бы иметь возможность вызывать несколько команд из редактора Unity (после проверки, например, что файл журнала выполнил одну команду).В настоящее время для этого мне нужно добавить аргумент -quit для каждого вызова командной строки, который завершает весь экземпляр единицы, а затем, когда я хочу запустить новую команду, он должен снова запустить единство, что можетзаймет много времени, если я выполняю много команд.
Как я могу просто получить доступ к уже запущенному экземпляру Unity, который либо работает в пакетном режиме, или даже если он открыт в редакторе?Это означает, что когда я убираю параметр -quit, то команда все еще работает, но ясно, что Unity все еще работает (как я вижу из диспетчера задач, а также, когда я пытаюсь запустить команду снова, я получаю сообщение об ошибке врегистрировать, что Unity уже выполняет текущий проект), и, очевидно, когда фактический редактор Unity работает с открытым проектом, тогда журнал выдает ошибку, что другой экземпляр Unity запущен с этим проектом и т. д.
Итак, есть ли способ просто получить текущий экземпляр Unity, который работает с желаемым проектом, и просто запустить команду из этого, или я имею , чтобы перезапускать Unity каждый раз, когда я хочу запустить команду изкомандная строка?