文档

Unity Engine

Unity Engine

为嵌入式 Linux 启用可选功能

Enable optional features to improve your application performance.
阅读时间9 分钟最后更新于 1 个月前

您可以启用以下可选功能来提高应用程序的性能。

加载场景

启动嵌入式 Linux 播放器时,将显示一个单独的加载屏幕(在我们的参考系统上,通常会在 200 毫秒内出现),其中包含在 Player Settings 窗口中配置的 2D 图像。初始场景内容仍然可用,只是它会在加载屏幕的后方加载。

GLES3 的着色器缓存持久性

嵌入式 Linux 支持在安装 Unity Player 的设备上进行二进制着色器缓存,以优化启动时间。缓存是在加载着色器后在运行时创建的。当此缓存写入临时文件夹时:
[TEMP]/[COMPANY_NAME]/[PROJECT_NAME]/UnityShaderCache/
,因此可以在重新启动系统时将其擦除。
要在系统重新启动时使用着色器缓存,请按照以下步骤将缓存复制到播放器数据中:
  1. 将 Unity Player 部署到目标系统。
  2. 运行应用程序并确保触及所有着色器。
  3. 将所有文件从
    [TEMP]/[COMPANY_NAME]/[PROJECT_NAME]/UnityShaderCache/
    复制到
    [PATH_TO_PLAYER]/Data/UnityShaderCache/
    。
注意:
  • 每次更新播放器时,都必须刷新缓存。
  • 由于缓存特定于设备,因此只能在具有相同硬件和软件配置的设备之间共享缓存。

Vulkan 的管线缓存持久性

嵌入式 Linux 支持在安装 Unity Player 的设备上进行二进制 Vulkan 管线缓存,以优化启动时间。使用 Vulkan 管线时,会在运行时创建二进制 Vulkan 管线缓存。当此缓存写入临时
[TEMP]/[COMPANY_NAME]/[PROJECT_NAME]/vulkan_pso_cache.bin
文件时,可以在重新启动系统时将其擦除。
要在系统重新启动时使用管线缓存,请按照以下步骤将缓存复制到播放器数据中:
  1. 将 Unity Player 部署到目标系统。
  2. 运行应用程序并确保正在使用所有管线。
  3. 将
    [TEMP]/[COMPANY_NAME]/[PROJECT_NAME]/vulkan_pso_cache.bin
    文件复制到
    [PATH_TO_PLAYER]/Data
    。
注意:
  • 每次更新播放器时,都必须刷新缓存。
  • 由于缓存特定于设备,因此只能在具有相同硬件和软件配置的设备之间共享缓存。

启动时间日志

启动时间记录指的是应用程序启动所花费的时长。它通常用作系统安全和监管要求的关键指标。
嵌入式 Linux 中的启动时间日志包括自应用程序启动以来的持续时间或总时间(以毫秒为单位)。有两种类型的启动时间日志:
  • **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
参数启动播放器。也可以将其作为
platform-embedded-linux-wayland-enable-evdev-input=1
添加到位于
Data/boot.config
的配置文件中。

强制使用 Wayland

在同时支持 X11 和 Wayland 窗口系统的系统中,可以通过将环境变量设置为
SDL_VIDEODRIVER=wayland
来强制 Unity Player 使用 Wayland。

命令行参数

可从命令行启动 Unity Embedded Linux Player,并传递参数来更改 Player 的执行方式。
**注意:**所有命令行参数都优先于 Unity Editor 和
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(禁用核心)的组合。例如,在 4 核以上 CPU 上,
DHLL
表示禁用第一个核心,将第二个核心标记为 “高性能”,将第三个和第四个核心标记为 “低性能”。请参阅 Player Settings > Configuration > CPU 配置。
-platform-hmi-player-data-path
输入您想在系统中保存
.config
和日志文件的目录路径。请参阅 Player Settings > Configuration > Player Data 路径。
-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 输入处理。

其他资源