无法添加脚本组件,因为无法找到脚本类?

You*_* H. 6 c# updates unity-game-engine

昨天我更新了unity5到2018.2.2f1的统一性.更新2018.2.2f1后未加载Unity脚本.

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

无法添加脚本组件"CubeScript",因为无法找到脚本类.确保没有编译错误,文件名和类名匹配.

错误

Pro*_*mer 13

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

以下是您可能会收到此错误的几个可能原因(非常有可能)

1. .Script名称与类名称不匹配.

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

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


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


3.使用Unity导入程序及其自动升级脚本导入.

要尝试的事情:

A.首先要做的是重启Unity Editor.

B.右键单击Project选项卡,然后单击"Reimport All"

C.如果仍有问题,唯一的问题是删除有问题的脚本并创建一个新脚本.如果脚本附加到场景中的许多GameObjects,则有一种更简单的方法.

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

B.从编辑器和项目选项卡上右键单击脚本"CubeScript",选择"在场景中查找参考".

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

  • 它发生了。您甚至不必更新 Unity 即可实现这一点。我认为您应该听取我的建议并开始从脚本中附加脚本。这将为您节省时间,避免将来遇到同样的问题。在更新项目之前,请务必先复制该项目。这是必须的。 (2认同)
  • @Confused是的.而不是在GameObject上拖放脚本更容易.你应该创建一个附加到空项目的名为`ComponentInit`的脚本.您应该使用该脚本查找GameObjects然后将必要的脚本附加到它们.特别是在拥有大型项目时尤其如此.例如,`GameObject shipObj = GameObject.Find("Ship").AddComponent <ShipScript>();`. (2认同)

Omd*_*hil 10

这是堆积的一些原因。

1。您的脚本名称和您的类名称不同。

2。可能是您的脚本中有错误。

这里,是解决它的几种方法。

1。在此脚本中使脚本和类具有相同的名称。

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


Nhg*_*yer 7

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

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

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

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

现在它完美地工作。