Unity 6.3
0 онлайн 85 гостей 3 в системе
Вход
Разработка платформы Шаг 168 из 387

Создание для встраиваемых систем Linux из командной строки

Чтобы собрать проект Unity для системы Embedded Linux из интерфейса командной строки (CLI), на хосте сборки должен быть установлен Unity Editor. Хостом сборки может быть машина с Linux, Windows или macOS.

В следующем примере используется вариант исполняемого файла Linux (Unity), но его можно заменить эквивалентным исполняемым файлом для операционной системы выбранного узла сборки.

Аргументы командной строки

Чтобы дать указание Unity начать работу в режиме CLI и построить проект в <path-to-unity-project-root> для Встроенного Linux, запустите следующую команду:

Unity -quit -batchmode -nographics -buildTarget EmbeddedLinux -executeMethod Builder.Build -projectPath <path-to-unity-project-root>

Процесс сборки также вызывает функцию Builder.Build для продолжения процесса настройки сборки.

Скрипт сборки

Вы можете поместить примерный скрипт сборки Assets/Editor/ для проекта, который будет построен из командной строки. Используйте -executeMethod возможность вызвать Build() метод этого класса, который задаёт параметры сборки и запускает её.

Дополнительные сведения см. в документации BuildPipeline.BuildPlayer API.

using UnityEditor;
using UnityEditor.Build.Reporting;
using UnityEngine;

public class Builder
{
    private static void BuildEmbeddedLinux(EmbeddedLinuxArchitecture architecture)
    {
        // Set architecture in BuildSettings
        EditorUserBuildSettings.selectedEmbeddedLinuxArchitecture = architecture;

        // Setup build options (e.g. scenes, build output location)
        var options = new BuildPlayerOptions
        {
            // Change to scenes from your project
            scenes = new[]
            {
                "Assets/Scenes/SampleScene.unity",
            },
            // Change to location the output should go
            locationPathName = "../EmbeddedLinuxPlayer/",
            options =  BuildOptions.CleanBuildCache | BuildOptions.StrictMode,
            target = BuildTarget.EmbeddedLinux
        };

        var report = BuildPipeline.BuildPlayer(options);

        if (report.summary.result == BuildResult.Succeeded)
        {
            Debug.Log($"Build successful - Build written to {options.locationPathName}");
        }
        else if (report.summary.result == BuildResult.Failed)
        {
            Debug.LogError($"Build failed");
        }
    }

    // This function will be called from the build process
    public static void Build()
    {
        // Build EmbeddedLinux ARM64 Unity player
        BuildEmbeddedLinux(EmbeddedLinuxArchitecture.Arm64);
    }
}

Дополнительные ресурсы: