Unity3D

来自 ArchWiki

来自 https://unity.com

创建互动式实时内容的首要平台
快速构建 2D、3D 和 VR 游戏及应用。从艺术家工具到 LiveOps – 满足您将愿景变为现实所需的一切。

请勿与 Canonical 的 Unity 混淆(该 Unity 现在由 UBPorts 基金会维护并更名为 Lomiri)。

注意:Linux 编辑器目前为实验性版本。请将所有错误报告给 Unity 论坛

安装

Unity 提供了一个名为 Unity Hub 的程序,旨在通过提供一个集中位置来管理您的 Unity 项目,并简化您查找、下载和管理 Unity 编辑器安装的方式,从而简化您的工作流程。该应用程序以 DebRPM 软件包的形式提供。要安装 Unity Hub,只需安装 unityhubAUR 软件包。

要安装 beta 版本,只需安装 unityhub-betaAUR 软件包。

注意:最新的 beta 版本有时比最新的发布版本旧。

Android 远程

Unity Remote 是一款 Android 应用程序,旨在帮助测试 Android 设备的输入。它通过每帧向设备发送压缩的屏幕截图来实现这一点。

准备电脑

安装软件包

安装 android-udev 软件包,这将确保您为设备配置了正确的 udev 规则。

安装 android-sdkAUR 软件包。

配置编辑器

打开编辑器,导航到 编辑 > 首选项 并设置 Android SDK 和 JDK 的正确路径。

提示
  • Android SDK 通常位于 /opt/android-sdk
  • JDK 因您使用的版本而异,如果要使用默认版本,请将其设置为 /usr/lib/jvm/default

导航到 编辑 > 项目设置 > 编辑器 并将 Unity Remote Device 设置为 任意 Android 设备

有关更多帮助,请参阅 Unity 文档

准备 Android

从 Play 商店安装 Unity Remote 5。或者,您可以从 Asset Store 下载并自行构建。

建议将您的 Android 设备设置为 PTP 模式。

注意:不要忘记在您的设备上打开“USB 调试”。转到 设置 > 开发者 选项,然后启用 USB 调试。从 Android Jelly Bean 4.2 开始,开发者选项默认情况下是隐藏的。要启用它们,请多次点击 设置 > 关于手机 > 版本号。然后您将能够访问 设置 > 开发者 选项。
提示:对于某些设备,如果禁用“保持唤醒”功能,远程功能将无法工作。如果您遇到任何问题,请确保通过转到 设置 > 开发者 选项,然后启用“保持唤醒”来启用它

有关更多帮助,请参阅 Unity 文档

测试

如果您已打开 Unity,请关闭它。

将手机连接到电脑并启动 Unity Remote。

打开编辑器并按播放。您现在应该看到您的游戏传输到您的 Android 设备。

如果它不起作用或您有疑问,请参阅 Unity 文档

Visual Studio Code

对于那些使用 Visual Studio Code 作为脚本编辑器的人来说,您需要执行一些额外的步骤才能使其运行而不会显示类似于以下的错误

[fail]: The reference assemblies for framework ".NETFramework,Version=v3.5" were not found
[warn]: OmniSharp.MSBuild.ProjectFile.ProjectFileInfo Unable to create directory "/Debug/". Access to the path "/Debug/" is denied.
[fail]: OmniSharp.MSBuild.ProjectFile.ProjectFileInfo Could not write lines to file "/Debug/Assembly-CSharp.csproj.CoreCompileInputs.cache". Could not find a part of the path "/Debug/Assembly-CSharp.csproj.CoreCompileInputs.cache".

要消除这些错误,您需要安装以下软件包: dotnet-runtime, dotnet-sdk, mono-msbuild, mono-msbuild-sdkresolver, 和 mono。如果您想使用 C# Dev Kit 或 Unity 扩展,还需要安装 aspnet-runtime。最后,请记住通过按 Ctrl-P 并输入以下内容从 VS Code Marketplace 安装 C# 扩展

ext install ms-dotnettools.csharp

要使用系统提供的 .NET SDK,您还需要禁用以下选项

"omnisharp.useModernNet": false

在此配置更改之后,您可能需要重启 Visual Studio Code。

故障排除

崩溃日志位于 $HOME/.config/unity3d/Editor.log

Unity 在首次启动时或登录时崩溃

这是一个罕见的错误,其中 Unity 的配置创建错误。您可以尝试通过以下方式重置它

$ rm -rf ~/.config/unity3d/{*.prefs,*.log,Preferences} 

Unity 尝试加载项目时崩溃

用户 报告称,取消设置 GTK_IM_MODULE 可以防止崩溃。

如果缺少 ~/.config/user-dirs.dirs,Unity 崩溃

请参阅此处了解如何生成 xdg 文件: XDG 用户目录

Unity 因 DllNotFoundException 崩溃

在 Unity 2019 及更高版本中,如果您看到类似以下的消息: DllNotFoundException: Unable to load the unmanaged library (x) Reason: libtinfo.so: cannot open shared object file: No such file or directory ,请尝试安装 ncurses5-compat-libsAUR

Unity 构建项目到 webGL 平台失败

IL2CPP 在构建过程中需要 libtinfo-5.so 库,而 ncurses5 提供了它。因此,如果您想构建到 webGL,请确保安装 ncurses5-compat-libsAUR

在 Playtesting 时出现轻微卡顿 (NVIDIA)

垂直同步似乎无法在 NVIDIA 显卡/驱动程序上正常工作。解决方案:在 nvidia-settings 中转到“OpenGL 设置”并关闭“同步到 VBlank”。

当将 “transform.Rotate” 与 “Input.GetKey” 结合使用时,会出现/注意到这种行为。

错误:多个 Unity 实例无法打开同一项目

Unity 可能没有正确关闭,在这种情况下,您应该导航到您的项目文件夹并删除 Temp 文件夹。

Android 远程无法工作 / 运行 Android 构建失败,提示 "无法将网络流量转发到设备"

尝试此解决方法 

  1. 关闭 Unity。
  2. 使用 adb kill-server 关闭 adb 守护程序
  3. 插入 Android 设备。
  4. 使用 adb devices 查找您的设备 ID
  5. 使用 adb -s "deviceID" forward "tcp:34999" " ""deviceID" 替换为正确的设备 ID。

现在您可以打开 Unity 并进行测试了,将会出现一个错误 "socket bind failed",您可以安全地忽略它。

没有窗口打开:桌面为 0 x 0 @ 0 Hz

如果使用 Wayland,请尝试通过设置环境变量 SDL_VIDEODRIVER=x11 来使用 Xorg 后端的 SDL。

Brotli 无效 ELF 标头

如果您看到类似于以下的错误

Failed running python2 "$EDITOR_PATH/Editor/Data/PlaybackEngines/WebGLSupport/BuildTools/Brotli/python/bro.py"

您可以将 Brotli Mac OS X egg 替换为位于 ~/.cache/Python-Eggs/Brotli-0.4.0-py2.7-macosx-10.10-x86_64.egg-tmp 的 Linux egg,或者在 文件 > 构建设置 > 播放器设置 > 播放器 > 发布设置 > 压缩格式 中将 Brotli 切换为 gzip。

无法在包管理器中加载资源

如果您配置了代理/VPN,请重置它。重置您的 防火墙 也可能有效(例如,iptablesiptables#重置规则)。

菜单在进入播放模式后不响应点击

首先,安装 downgradeAUR

然后,运行

downgrade glib2

并选择版本 "2.72.1"。

Unity 无法保存首选项

Unity Hub 或编辑器无法创建用于存储首选项的文件夹。

如果发生这种情况,请在 ~/.local/share 中手动创建 unity3d 文件夹。完整路径应为:~/.local/share/unity3d

如果成功完成,编辑器将在其中创建一个 prefs 文件。