Unity ml-agents assets 抛出警告和错误 [PushBlock WithInput, Actuator, Barracuda]

分享于2022年07月17日 c# ml-agent python unity3d 问答
【问题标题】:Unity ml-agents assets 抛出警告和错误 [PushBlock WithInput, Actuator, Barracuda](Unity's ml-agents assets throw warnings and errors [PushBlockWithInput, Actuator, Barracuda])
【发布时间】:2022-07-12 00:58:00
【问题描述】:

问题

我正在尝试使用 Unity Machine Learning Agents ,但在设置过程中遇到了问题。当我尝试将资产从 Unity's ml-agents git 导入 Unity 时,我在 Unity 中收到许多警告和错误。出于上下文的目的,我刚开始学习 Unity,所以我不知道这些错误是由于 ml-agents 包还是我这边的用户错误导致的。

错误和警告

使用 Unity 的 ml-agents git 中的资产创建第一个测试场景的说明建议在 Unity 中创建一个新的 3D 项目,然后将文件夹 projects/assets/ml-agents 拖放到项目的资产中。此时,Unity 在终端中显示了许多错误和警告。它仍然有资产中的示例,但场景中的每个元素都充满了警告。

根据 2020 年的这些教程,通过将资产拖放到 Unity [1] [2] ,我随后 Unity's ml-agents assets throw warnings and errors [PushBlockWithInput, Actuator, Barracuda]

在我的情况下,大多数警告似乎来自 PushBlockWithInput PushblockActions PushBlockWithInputPlayerController ,缺少 UnityEngine.InputSystem Unity.MLAgents.Extensions.Input ,并带有注释“(您是否缺少 using 指令或程序集引用? )”。这个;但是,在上述教程中没有发生。

虽然他们犯了大部分错误,但他们并不完全是关于程序集引用。其他错误,可能与程序集引用有关,也可能不是,是

  • 错误 CS0115:“Match3Board.GetCurrentBoardSize()”:找不到合适的方法来覆盖
  • 错误 CS0535:“SensorBase”未实现接口成员“ISensor.GetCompressionType()”

Unity's ml-agents assets throw warnings and errors [PushBlockWithInput, Actuator, Barracuda]

我尝试过的事情

Python

我遵循了 Unity 的 ml-agents git 中的 instructions ,并成功地通过 pip 安装了带有 Anaconda 的 Python 3.7 环境、带有 Cuda 的 PyTorch 和 Unity 的 ml-agents python 包。在尝试验证 ml-agents python 包是否与 mlagents-learn --help 一起使用时,我首先遇到了一个异常,但可以通过按照 suggestion from a forum 更新 protobuf==3.20.1 来解决这个问题(只是提到这一点以防相关)。

团结

我从 Unity 的包管理器下载了 C# 包并尝试了多个版本 ( 1.0.8 (Verified), 1.9.1 (Preview), 2.0.1, and 2.1.0 (Preview) -- lastest )。之后,我可以从 Inspector 的“添加组件”菜单中选择 ML-Agents。

我还尝试使用 ml-agent package 1.9.1 (Preview) 和正确的梭子鱼版本以及 Unity 的 ml-agents git 的 release 19 分支创建一个新的 Unity 项目,但没有成功(现在是 53 个警告和 70 个错误)。现在也找不到执行器,这似乎是一个更常见的问题。

VS 代码

我使用的是 VS Code,而不是推荐的 here 中的 VS。我下载了 .Net 6.0.301 版并检查了它是否安装了“dotnet --info”。在 VS Code 的扩展管理器中,我安装了扩展 C# Code Runner Unity Tools Debugger for Unity

Git 存储库

我还从 Unity 的 ml-agents git 的主分支切换到 release 19 branch 并尝试了其他版本的梭子鱼包,例如 Version 3.0.0 ,它似乎删除了警告,但没有删除错误,而是给出了这些通知:

Unity's ml-agents assets throw warnings and errors [PushBlockWithInput, Actuator, Barracuda]

但是,资产设置中仍会显示警告:

Unity's ml-agents assets throw warnings and errors [PushBlockWithInput, Actuator, Barracuda]

课程:ML-Agents:蜂鸟

我成功完成了 ML-Agents: Hummingbirds 。本课程不使用 ML-agents Git 存储库中的任何资产。虽然,本课程的资产以相同的方式下载和添加,没有问题。这让我假设 ML-agents 的常规设置正在运行,但我特别无法导入资产。

我的设置

  • 我正在使用装有 Windows 11 的机器
  • Unity Version is 2020.3.32f1 Personal <DX11>
  • Unity ml-agent package 已与 1.0.8 (Verified), 1.9.1 (Preview), 2.0.1, and 2.0.2 (Preview) 一起尝试过
  • Unity ML Agents Extensions 包 0.6.1(预览版)
  • Python 版本是,根据 instructions 3.7 with an Anaconda virtual environment
  • Unity 的 ml-agents git 是 main ,以及 release_19_branch
  • C# 编辑器将是 Visual Studio Code 1.67.2
  • DotNet 版本:6.0.301

到目前为止我发现的事情

这个问题似乎有些普遍,几年来我发现了类似问题的几种变体,一些更具体到 Actuators 缺失,一些更多 general 。有些人也发布了关于 problems with the InputSystem 的帖子,但似乎不同的解决方案和对解决方案的混合反应。

关于 Unity、ml-agents 包和 Visual Studio Code 的版本更改有各种建议。其他解决方案包括在 Visual Studio 或 Unity 中下载其他包。有些人建议在克隆的 git 存储库中编辑脚本。尽管这些线程大部分来自过去 2 年。我花了两天时间尝试设置和修复这个问题,我正要放弃 ml-agents 包。令人遗憾的是,看似很棒的资源的安装过程似乎如此不可行。对于如何设置此软件包的其他资源,我将不胜感激。

  • 有时我单位的输入系统是这样的。有时电影机也会这样做。我重新导入所有然后它工作。不幸的是,我不知道原因。
  • 必须尝试在 Unity Preferences > External Tools 中重新生成项目文件?
  • @DavidSdot 是的,我尝试了启用“生成所有 .csproj 文件”的“重置参数”,我也尝试重复创建一个新项目,不幸的是结果相同。

【解决方案1】:

您需要添加对输入程序集定义(asmdef)的引用 Assets/Scripts 通常是 asmdef 所在的位置,但如果它不存在,则不能只搜索它 Unity's ml-agents assets throw warnings and errors [PushBlockWithInput, Actuator, Barracuda]

在“程序集定义引用”部分,单击 + 按钮添加新引用并将其设置为 Unity.InputSystem

Unity's ml-agents assets throw warnings and errors [PushBlockWithInput, Actuator, Barracuda]