Version: Unity 6.0 (6000.0)
언어 : 한국어
임베디드 Linux용 자동 감지 플러그인
임베디드 Linux 문제 해결

임베디드 Linux의 선택적 기능 활성화

아래의 선택적 기능을 활성화하여 애플리케이션의 성능을 높일 수 있습니다.

화면 로딩

임베디드 Linux 플레이어를 시작하면 별도의 로딩 화면이 나타납니다(일반적으로 레퍼런스 시스템에서는 200ms 이내). 여기에는 Player Settings 창에서 구성한 2D 이미지가 포함되어 있습니다. 초기 장면 콘텐츠는 로딩 화면 뒤에 로드된다는 점을 제외하고는 여전히 사용할 수 있습니다.

GLES3의 셰이더 캐시 지속성

임베디드 Linux는 Unity 플레이어가 설치된 기기에서 바이너리 셰이더 캐싱을 지원하여 시작 타이밍을 개선합니다. 캐시는 셰이더를 로드한 후 런타임 시점에 생성됩니다. 이 캐시는 임시 폴더 [TEMP]/[COMPANY_NAME]/[PROJECT_NAME]/UnityShaderCache/에 기록되므로 시스템을 재시작할 때 지울 수 있습니다.

시스템이 재시작될 때 셰이더 캐싱을 사용하려면 다음 과정을 따라 캐시를 플레이어 데이터에 복사하십시오.

  1. Unity 플레이어를 타겟 시스템에 배포합니다.
  2. 애플리케이션을 실행하고 모든 셰이더가 터치되었는지 확인합니다.
  3. [TEMP]/[COMPANY_NAME]/[PROJECT_NAME]/UnityShaderCache/의 모든 파일을 [PATH_TO_PLAYER]/Data/UnityShaderCache/로 복사합니다.

참고:

  • 플레이어가 업데이트될 때마다 캐시를 새로 고쳐야 합니다.
  • 캐시는 디바이스별로 다르므로, 정확히 동일한 하드웨어 및 소프트웨어 구성을 가진 기기 간에만 캐시를 공유해야 합니다.

Vulkan의 파이프라인 캐시 지속성

임베디드 Linux는 Unity 플레이어가 설치된 기기에서 바이너리 Vulkan 파이프라인 캐싱을 지원하여 시작 타이밍을 개선합니다. 바이너리 Vulkan 파이프라인 캐시는 Vulkan 파이프라인을 사용할 때 런타임 시점에 생성됩니다. 이 캐시는 임시 [TEMP]/[COMPANY_NAME]/[PROJECT_NAME]/vulkan_pso_cache.bin 파일에 기록되므로 시스템을 재시작할 때 지울 수 있습니다.

시스템이 재시작될 때 파이프라인 캐싱을 사용하려면 다음 과정을 따라 캐시를 플레이어 데이터에 복사하십시오.

  1. Unity 플레이어를 타겟 시스템에 배포합니다.
  2. 애플리케이션을 실행하고 모든 파이프라인이 사용되고 있는지 확인합니다.
  3. [TEMP]/[COMPANY_NAME]/[PROJECT_NAME]/vulkan_pso_cache.bin 파일을 [PATH_TO_PLAYER]/Data에 복사합니다.

참고:

  • 플레이어가 업데이트될 때마다 캐시를 새로 고쳐야 합니다.
  • 캐시는 디바이스별로 다르므로, 정확히 동일한 하드웨어 및 소프트웨어 구성을 가진 기기 간에만 캐시를 공유해야 합니다.

시작 시간 로그

시작 시간 로그는 애플리케이션을 시작하는 데 걸리는 시간입니다. 이는 시스템 안전 및 규제 요건에 중요한 지표로서 자주 사용됩니다.

임베디드 Linux의 시작 시간 로그에는 애플리케이션 실행 이후의 지속 시간 또는 총 시간(밀리초)이 포함됩니다. 시작 시간 로그의 유형은 2가지 입니다.

  • Real: 시간 계산에 사용되는 스톱워치와 마찬가지로 시계 기준으로 흐르는 실제 시간입니다.
  • User: 애플리케이션 또는 해당 스레드 중 하나가 CPU 코어에서 소비한 시간입니다. 애플리케이션을 시작할 때 여러 스레드가 사용 중일 경우 실제 시간보다 더 길어질 수 있습니다.

C#에서 시작 타이밍 로그를 추가하려면 다음을 사용하십시오.

HmiPlatform.LogStartupTiming("log tag");

결과는 다음 Player.log 줄에 표시됩니다.

[TIMING::STARTUP] log tag: Real: xxx ms | User: yyy ms

여기에는 플레이어 시작 시간 이후 밀리초 단위의 로그 태그, 실제 시간(xxx), cpu 시간(yyy)이 포함됩니다.

#if UNITY_EMBEDDED_LINUX_API ... #endif를 사용하여 코드를 보호할 수 있습니다.

참고: Time 커맨드와 동일한 용어를 사용하여 실제 시간과 CPU 시간을 참조할 수 있습니다. 자세한 내용은 메인 Linux 매뉴얼을 참조하십시오.

출력 예시

[TIMING::STARTUP] Initial probing done: Real: 19 ms | User: 11 ms
[TIMING::STARTUP] SDL Initialized: Real: 64 ms | User: 54 ms
[TIMING::STARTUP] Scripting runtime loaded: Real: 97 ms | User: 86 ms
[TIMING::STARTUP] Plugins loaded: Real: 97 ms | User: 87 ms
[TIMING::STARTUP] Engine initialized (nogfx): Real: 104 ms | User: 94 ms
[TIMING::STARTUP] Player Prefs loaded: Real: 104 ms | User: 94 ms
[TIMING::STARTUP] Screen initialized: Real: 139 ms | User: 112 ms
[TIMING::STARTUP] Engine initialized (gfx): Real: 187 ms | User: 161 ms
[TIMING::STARTUP] Gfx initialized: Real: 190 ms | User: 163 ms
[TIMING::STARTUP] Input initialized: Real: 190 ms | User: 163 ms
[TIMING::STARTUP] SPLASH - Begin: Real: 190 ms | User: 164 ms
[TIMING::STARTUP] SPLASH - Primary scene assets loaded (async): Real: 2197 ms | User: 1670 ms
[TIMING::STARTUP] SPLASH - All engine initial states established: Real: 2197 ms | User: 1670 ms

스크립트 API를 사용한 커스텀 이벤트의 출력

[TIMING::STARTUP] HELLO!!: Real: 2198 ms | User: 1671 ms

boot.config 출력에서 platform-hmi-quit-after-frame을 지정하면 프레임 번호 X까지 로그에 다음이 포함됩니다. 여기서 X는 부트 설정 값에 제공된 숫자입니다.

[TIMING::STARTUP] Frame 1 rendered: Real: 2209 ms | User: 1687 ms

[TIMING::STARTUP] Frame 2 rendered: Real: 2210 ms | User: 1692 ms

Wayland로 EVDEV 입력 처리

Wayland에서 실행하는 동안 EVDEV SDL2 입력 드라이버를 활성화하려면 -platform-embedded-linux-wayland-enable-evdev-input 인자를 사용하여 플레이어를 시작하십시오. 또한 이를 Data/boot.config에 있는 설정 파일에 platform-embedded-linux-wayland-enable-evdev-input=1로 추가할 수도 있습니다.

Wayland 강제 사용

X11과 Wayland 윈도잉 시스템을 모두 사용할 수 있는 시스템에서는 환경 변수를 SDL_VIDEODRIVER=wayland로 설정하여 Unity 플레이어가 Wayland을 사용하도록 강제할 수 있습니다.

커맨드 라인 인자

커맨드 라인에서 Unity 임베디드 Linux 플레이어를 실행하고 인자를 전달하여 플레이어가 실행하는 방법을 변경할 수 있습니다.

참고: 모든 커맨드 라인 인자는 Unity 에디터 및 boot.config 설정보다 우선합니다.

CLI 인자 설명
-log-startup-times-and-quit (지원 중단 예정) 첫 번째 프레임을 렌더링한 후 플레이어를 종료합니다.
-platform-hmi-force-srgb-blit 강제 srgb-blit 설정을 변경합니다. 자세한 내용은 Player Settings > Rendering > Color Space를 참조하십시오.
-platform-hmi-quit-after-frame 로깅을 활성화합니다. Player Settings > Configuration > Logging을 참조하십시오.
-platform-hmi-log-startup-times 로깅을 활성화합니다. Player Settings > Configuration > Logging을 참조하십시오.
-platform-hmi-single-gl-context GLES에 대한 컨텍스트 공유를 비활성화합니다. 참고: 인자가 멀티 디스플레이 지원을 비활성화합니다.
-platform-hmi-cpu-configuration <configuration> 플레이어의 CPU 설정을 지정합니다. 이 인자는 문자 H(고성능 코어), L(저성능 코어) 또는 D(비활성화 코어)의 조합이 포함된 문자열을 기대합니다. 예를 들어 DHLL는 첫 번째 코어 사용을 비활성화하고, 두 번째 코어를 High로, 세 번째와 네 번째 코어를 4+ 코어 CPU에서 Low 성능으로 태그합니다. Player Settings > Configuration > CPU configuration을 참조하십시오.
-platform-hmi-player-data-path .config 및 로그 파일을 저장할 시스템의 디렉토리 경로를 입력합니다. Player Settings > Configuration > Player Data path를 참조하십시오.
-platform-hmi-force-vsync-count [C] 각 프레임 간에 전달할 수 있는 수직 동기화 횟수입니다. 0으로 설정하면 수직 동기화가 완전히 비활성화되고, –1로 설정하면 QualitySettings에 설정된 값을 사용합니다.
-platform-embedded-linux-enable-gamepadinput 게임 컨트롤러 설정을 변경합니다. Player Settings > Configuration > Enable Game Controllers를 참조하십시오.
-platform-embedded-linux-offscreen-video 플레이어가 SDL2의 오프스크린 렌더링 드라이버를 사용하도록 설정합니다. 이는 시뮬레이션과 렌더 서버 생성에 유용합니다. 모든 렌더링은 오프스크린이지만 여전히 GPU로 가속화됩니다. 참고: 이 기능을 사용할 경우 Application.targetFrameRate를 설정하여 CPU/GPU 사용량을 제한할 수 있습니다.
-platform-embedded-linux-wayland-enable-evdev-input Wayland에서 실행하는 동안 EVDEV SDL2 입력 드라이버를 활성화합니다. 자세한 내용은 Wayland로 EVDEV 입력 처리를 참조하십시오.

추가 리소스

임베디드 Linux용 자동 감지 플러그인
임베디드 Linux 문제 해결