包含此页的版本:
不含此页的版本:
Unity 根据设备的 CPU 拓扑配置线程关联和线程优先级。Unity 的默认线程配置适用于大多数项目,但在某些情况下,您可能希望更改线程配置(例如,如果您想针对特定设备进行优化,或者如果您的应用程序旨在低功耗并且不需要高帧速率)。
重要提示:尽可能使用 Unity 的默认设置。如果您更改线程配置以针对特定设备进行优化,则您所做的任何更改都可能对其他设备甚至未来作系统版本中的相同设备产生负面性能影响。
线程的亲和性控制线程应在哪些 CPU 内核上运行。对于 Android 设备,内核通常分为两类:
重要提示:对于面向各种 Android 设备的典型应用,请勿将线程绑定到特定内核。
Unity 通常会从设备的作系统接收每个 CPU 内核的容量和大小分配。对于较旧的作系统版本,此信息并不总是可用。在这种情况下,Unity 会计算 CPU 内核的容量,并使用该信息将每个内核分配为大或小。为了分配一个内核,Unity 会将每个内核的 CPU 容量与阈值进行比较。默认情况下,如果一个内核的 CPU 容量至少是最慢内核的两倍,那么它就很大,否则它就很小。
为了更好地控制 Unity 分配的大或小内核,您可以提供自定义阈值。要提供自定义阈值,请使用-platform-android-cpucapacity-threshold [value]命令行参数,值介于 0 和 1024 之间,其中 0 表示最低容量核心,1024 表示最高容量核心。例如,值870,大约是 85 的 1024%,这意味着如果一个核心的 CPU 容量在芯片上的前 15% 中,则该核心很大。有关如何在 Android 设备上向 Unity 添加启动命令行参数的信息,请参阅从自定义 UnityPlayerActivity 文件指定 Unity 启动参数。
注意:Unity 始终将核心分类为大或小。对于一些复杂的 CPU 拓扑(例如,具有中等内核的拓扑),Unity 仍将其内核分为大或小。
Unity 提供了以下别名,可用作线程关联值:
any:允许线程在任何内核上运行。little:允许线程在任何小核心上运行。big:允许线程在任何大内核上运行。还可以使用十六进制和二进制值来指定线程关联性。在二进制中,位的索引引用特定的 CPU 内核。通常,小核心从索引 0 开始,大核心紧随其后。
例如,如果 CPU 包含四个小核和四个大核:
0b11110000和十六进制值0xf0允许线程在大内核上运行。0b1111和十六进制值0xf允许线程在小核心上运行。线程的优先级控制设备的作系统如何将 CPU 时间分配给线程。作系统将更多的 CPU 时间分配给优先级较高的线程,而不是优先级较低的线程。
您可以在 Unity 中使用的线程优先级值在 –20 到 19 的范围内,其中 –20 表示最高优先级,19 表示最低优先级。
本部分包含有关您可以配置的 Unity 线程以及用于配置它们的命令行参数的信息。
有关如何在 Android 设备上向 Unity 添加启动命令行参数的信息,请参阅从自定义 UnityPlayerActivity 文件指定 Unity 启动参数。
重要提示:在某些设备和 Android作系统版本上,Android作系统可能会忽略命令行参数并引发错误。如果发生这种情况,您的应用仍可以正常运行,没有问题,但 Android 不会应用您指定的线程关联或线程优先级设置。
Unity 的主线程执行所有脚本一段代码,允许您创建自己的组件、触发游戏事件、随时间修改组件属性以及以您喜欢的任何方式响应用户输入。更多信息
请参阅术语表并且通常具有较高的 CPU 负载。影响此线程的命令行参数包括:
-platform-android-unitymain-priority [value]哪里[value]是线程的优先级。-platform-android-unitymain-affinity [value]哪里[value]是线程的亲和力。Unity 的工作线程从核心引擎和应用程序通过 C# 作业系统调度的作业执行作业。影响这些线程的命令行参数包括:
-platform-android-jobworker-priority [value]哪里[value]是线程的优先级。-platform-android-jobworker-affinity [value] [value1 value2 value3]哪里[value]是线程的亲和力,并且[value1 value2 value3]是可选值,可用于指定每个线程的工作线程的关联性。如果只设置一个值,Unity 会对所有工作线程使用相同的值。您可以使用“-job-worker-count”来指定工作线程数。如果您的项目使用多线程渲染,则 Unity 的渲染线程将与图形 API 交互。
-platform-android-gfxdeviceworker-priority [value]哪里[value]是线程的优先级。-platform-android-gfxdeviceworker-affinity [value]哪里[value]是线程的亲和力。注意:如果您使用 GraphicsJobs,则 JobWorker 线程也会与图形 API 交互。