【问题标题】:Can't add script component because the script class cannot be found?由于找不到脚本类而无法添加脚本组件?
【发布时间】:2018-08-06 18:18:10
【问题描述】:

昨天我把unity从unity5更新到了2018.2.2f1。更新 2018.2.2f1 后未加载 Unity 脚本。

一旦我尝试播放场景,脚本未加载,我无法再次添加脚本,它会出现此错误:

无法添加脚本组件“CubeScript”,因为脚本类 找不到。确保没有编译错误,并且 文件名和类名匹配。

【问题讨论】:

  • unity5 到 2018.2.2f1 是一个很大的飞跃。最好将 unity5 到 2017 然后 2018.2.2f1 以减少更新项目中出现问题的机会。 “CubeScript”放在你的项目中的什么位置?
  • @Programmer 它在我的资产中的文件夹_scripts 中,我从资产中打开它,脚本在monodevelop 中照常打开。
  • Assets 旁边有一个floder Packages 我需要处理它吗? @程序员
  • 这完全不专业我想要另一个解决方案
  • 我的项目太大了,我无法手动访问每个文件夹,有没有比这更好的方法

标签: c# unity3d updates


【解决方案1】:

如果您仍有项目的旧副本,请先将 Unity 项目升级到 Unity 2017,然后再升级到 2018.2.2f1

以下是您可能会收到此错误的几个可能原因(从很可能开始)

1.脚本名与类名不匹配。

如果脚本名为MyClass,则类名必须为MyClass。这也是区分大小写的。仔细检查以确保这不是问题。要确保这不是问题,请复制类名并将其粘贴为脚本名称以确保这不是问题。

请注意,如果您在一个脚本中有多个类,则应与脚本名称匹配的类名称是派生自 MonoBehaviour 的类。


2。您的脚本中有错误。由于这是一次升级,您可能正在使用现已弃用和删除的 API。用 Visual Studio 打开你的脚本,看看那里是否有错误,然后修复它。代码下方通常有一条红线,表示有错误。


3.使用 Unity 导入器及其自动升级脚本导入错误。

要尝试的事情:

A。首先要做的是重新启动 Unity 编辑器。

B。右键单击“项目”选项卡,然后单击“全部重新导入”

C。如果仍有问题,唯一剩下的就是删除有问题的脚本并创建一个新脚本。如果脚本附加到场景中的许多游戏对象,则有一种更简单的方法。

A。打开脚本,将其内容复制到记事本中。

B。从编辑器中,在项目选项卡上右键单击脚本“CubeScript”,选择“在场景中查找引用” .

C.Unity 现在将仅显示附加了此脚本的所有游戏对象。删除旧脚本。创建一个新的,然后将内容从记事本复制到这个新脚本。现在,您只需将新脚本拖到场景中所有过滤的游戏对象即可。对每个受影响的脚本执行此操作。这是一项手动工作,但应在完成后解决您的问题。

【讨论】:

  • 感谢您的回答,但FPSController 中使用的公共数据类型全部消失了,其他脚本也重置了我在统一编辑器检查器窗口中输入的数据。
  • 如果 #3 是您最后的手段,那么您必须手动执行此操作。除非您拥有旧项目,否则除了自己重新创建和重新分配它们之外,您实际上无能为力。我知道这很糟糕,但我总是告诉人们通过脚本进行变量初始化,这就是原因。有时,由于更新或崩溃,场景可能会变得疯狂。如果变量和脚本附加等初始化是通过脚本完成的,那么您所要做的就是将脚本拖到另一个文件夹然后将其拖回来。
  • 它发生了。您甚至不必更新 Unity 即可。我认为您应该接受我的建议并开始从脚本中附加脚本。这将节省您在将来遇到相同问题的时间。在更新之前始终制作项目的副本。这是必须的。
  • @Confused 是的。而不是将脚本拖放到游戏对象上更容易。您应该创建一个名为ComponentInit 的脚本,该脚本附加到一个空项目。您应该使用该脚本来查找游戏对象,然后将必要的脚本附加到它们。尤其是当您有大型项目时尤其如此。例如,GameObject shipObj = GameObject.Find("Ship").AddComponent<ShipScript>();
  • 哦,谢谢,这很重要,这是我第一次看到.AddComponent,那会很方便。
【解决方案2】:

出于历史目的在此处发帖,如果 Google 的某个人最终来到这里,我确实遇到了同样的问题(我在 Windows 10 上),这是我修复它的方法:

对我来说,问题是找不到“Tools\Roslyn\csc”,这是 Unity 用来编译 C# 文件的东西。

  • 我打开C:\Program Files\Unity\Hub\Editor\2019.2.14f1\Editor\Data\Tools\RoslynScripts\unity_csc.bat 并在"%APPLICATION_CONTENTS%\Tools\Roslyn\csc" /shared %* 行中添加了“.exe”

(这一行现在应该是:"%APPLICATION_CONTENTS%\Tools\Roslyn\csc.exe" /shared %*

现在可以完美运行了。

【讨论】:

  • 这很危险吗?
  • 不应该,它只会将 Unity 重定向到正确的可执行文件以供使用,无需担心。
【解决方案3】:

这里,这是堆积的一些原因。

1。你的脚本名和你的类名不一样。

2。可能是你的脚本有错误。

这是解决它的几种方法。

1。在此脚本中设置相同名称的脚本和类。

2。发现有错误?并尝试解决它。​​

【讨论】:

    【解决方案4】:

    我对 Unity 和游戏开发完全陌生,但我发现通过输入错误的名称使错误为真,然后输入正确的名称似乎会“欺骗”Unity 修复其错误。

    【讨论】:

    • 一切都是正确的,我仍然有错误,这个答案对我有用
    【解决方案5】:

    我出现了同样的错误,但出于不同的原因(以防有人从谷歌来到这里)。

    我是一个初学者,我用一个空格来命名我的文件。之后我得到了同样的错误。确保不要在 C# 脚本中包含空格。

    【讨论】:

      【解决方案6】:

      除了其他答案之外,还有一件事可能会有所帮助

      • 将继承自 MonoBehaviour 的类设为文件中的第一个类。它为我解决了这个问题。

      【讨论】:

        【解决方案7】:

        检查控制台错误并修复它们是解决“由于找不到脚本类而无法添加脚本组件?”问题的好方法,尽管该错误似乎无关紧要。 当我修复另一个脚本中的错误时,这对我有用。

        【讨论】:

          【解决方案8】:

          对我来说,我发现这是一个我没有使用的脚本,它链接到我删除的播放器和其他脚本。

          【讨论】:

            【解决方案9】:

            对我来说,问题在于另一个脚本中有错误。

            修复错误后,我终于可以将其他脚本附加到我的游戏对象上。

            【讨论】:

              【解决方案10】:

              我刚刚遇到了这个问题,我有一个完美的脚本,没有错误,并且名称与应有的名称相同,但无论如何它都不会让我将它添加到游戏对象中。 还有另一个完全不相关的脚本,但它有一个错误,并且不知何故阻止了我添加我的新脚本。

              【讨论】:

              猜你喜欢
              • 2022-11-09
              • 1970-01-01
              • 1970-01-01
              • 2017-02-10
              • 2015-03-01
              • 2019-07-09
              • 2021-12-30
              • 1970-01-01
              相关资源
              最近更新 更多