我尝试为Android运行我的Unity项目(不确定是否重要),但是我从同一来源收到多个错误,提示“由于不存在,无法检查Menu Component / MaterialUI / Toaster”。当我查找这些文件时,它们确实存在于适当的位置,并且我认为它们没有任何问题。
任何人都可以帮助我弄清楚为什么说这些文件不存在吗?
这是我的工作环境(https://imgur.com/ZW5BUTQ)的屏幕截图
我没有太多的Unity背景知识,在互联网上其他任何地方也找不到此问题。不确定我可以尝试什么。有问题的文件可以很好地打开,并且代码中没有错误。
预期结果应该是找到这些文件,而不是将其标记为不存在。
答案 0 :(得分:0)
我在互联网上其他任何地方都找不到此问题
有一个最可能相关的Issue report
ProtoPottyGames提供了可能的修补程序:
只要删除错误所在的任何文件中带有
Component/
的部分Bugged代码:
[MenuItem("Component/Physics/Obi/Obi Particle Renderer", false, 0)]
固定代码:
[MenuItem("Physics/Obi/Obi Particle Renderer", false, 0)]
或者,如新版Unity文档中所述,最好使用[AddComponentMenu]
attribute来更好地组织组件菜单。
因此,由于您有权访问原始脚本文件,因此您只需在VisualStudio(或您使用的任何工具)中搜索整个解决方案,即可找到相应的字符串,例如
"Component/MaterialUI/Toaster"
并替换为
[MenuItem("MaterialUI/Toaster")]
以便将其放置在单独的菜单中
[AddComponentMenu("MaterialUI/Toaster")]
以便仍将其放置在组件的子菜单中。
很有可能会在MaterualUI/Editor
文件夹中的脚本中找到这些方法。
另一个原因可能是这些确实只是检查方法(请参见[MenuItem]
的布尔参数)。如果您有
[MenuItem("SomeMenu/SomeEntry", true)]
private static bool CanClick()
{
// return true or false depending on some condition
return false;
}
这是用于类似方法的检查器方法
[MenuItem("SomeMenu/SomeEntry")]
private static void DoSomething()
{
// ...
}
现在,如果第二个方法不存在或其路径字符串被更改,则Unity会抱怨,因为没有菜单项具有与第一个方法相同的路径。这可能会发生如果它们是在不同的类中实现的(理论上是愚蠢的,但可能的话),并且删除了具有实际void
方法的类。
注意:接下来要担心的是关于您在某处尝试使用new SomeMonoBehaviourClass()
的警告...