Unity:“缺少此行为的引用脚本(未知)!”

时间:2019-03-03 14:40:16

标签: unity3d

有时候,当我开始游戏时,我会收到毫无意义的警告。我不知道它们来自何处,并且我没有任何对象可以解决不存在的脚本。如何删除或修复这些消息?

控制台:

python doc

检查器:

当我在检查器中右键单击文件的图标时,我有两个可能的选择。它们都不起作用,或者当我尝试单击它们时,什么都没有发生。

检查器上下文菜单:

9 个答案:

答案 0 :(得分:1)

当文件和名称类的名称不同时会发生这种情况。

示例:

  • 该文件名为SingleCube.cs
  • 类定义为public class Cube : MonoBehaviour

在这种情况下,Unity无法链接文件和类。两者必须具有相同的名称。

  • 文件应为SingleCube.cs
  • 还有类定义public class SingleCube : MonoBehaviour

答案 1 :(得分:1)

我也有同样的问题。我认为这是由于删除默认场景但未更改构建设置中的“构建中的场景”引起的。这是我的固定方法。

  1. 转到构建设置(“文件”>“构建设置”)。应该有一个灰色框,上面写着“已删除”。这是(现在不见了)默认场景。
  2. 右键单击并将其删除
  3. 添加当前场景

答案 2 :(得分:0)

当您更改了脚本的C#类名,或者在项目中更改了脚本的文件名,以致于它们不匹配时,就会发生这种情况。就您而言,问题在于您在Inspector屏幕截图中突出显示的脚本是什么。

答案 3 :(得分:0)

通常在将脚本分配给对象然后从项目中删除脚本时显示。如果您确定场景中没有对象分配此脚本,那么也许某些在运行时实例化的对象呢?另外,请查看this page,它可能会帮助您找到这些错误的来源。

答案 4 :(得分:0)

您可以从检查器面板中删除此无法访问的脚本,然后再次将其作为组件加载。因此,您可以重新使用脚本。

答案 5 :(得分:0)

文件名和公共类名应该和Test.cs一样,所以公共类应该是公共类Test

enter image description here

答案 6 :(得分:0)

在我的情况下,问题是对已删除的组件的引用,在预制文件中,该文件被不包含该组件的变体覆盖。因此,当我实例化该变体时,缺失的组件在被删除时被简要引用,导致此通用警告没有有用的识别数据。我是通过以下方式找到的:

  • 一次恢复所有最近删除的组件,直到错误停止

  • 从该组件的 .meta 文件中复制 guid。

  • 对所有 *.prefab 文件(还有 *.scene 和 *.asset)中的 guid 进行原始文本搜索

这需要项目设置 > 编辑器 > 资产序列化 > 模式 = 强制文本。

答案 7 :(得分:0)

在我的例子中,我在场景上使用了窗口->渲染->照明->“生成照明”......例如“场景1”。 Unity3d 然后在与我的 Scene1 资产平行的 Scenes 目录中创建了一个 Scene1 文件夹。

后来我把Scene1重命名为Level1,但是Scene1目录没有相应的改变。我遇到了这些错误,直到我将照明文件夹也重命名为 Level1。

答案 8 :(得分:-1)

如果或当您第一次启动项目时–移动和/或重命名“ scenes”文件夹中包含的原始默认场景,Unity将抛出数量不断增加的这些错误引用,直到您结束坐在公园里向自己扔面包屑。他们可以成千上万。

解决方法如下:

  1. 进入“文件->构建设置”,然后删除所有“场景 构建”,然后退出该窗口。
  2. 找到该原始重命名的场景,双击它即可 激活,然后转到“文件->另存为...”
  3. 将此场景另存为具有新名称的全新场景。这很关键。不要简单地覆盖那里的文件。例如,如果当前 文件名为“ scene_battlefield”,将其重命名为 “ scene_battlefield_whatever”。
  4. 通过右键单击删除新文件(“ scene_battlefield_whatever”) 在“资产”面板中。但是,您会注意到该名称 屏幕顶部仍然显示“ scene_battlefield_whatever”。
  5. 再次返回“文件->另存为...”,这次单击 重命名并覆盖之前的原始文件。名字 屏幕顶部的将按预期更改( “ scene_battlefield”)。
  6. 返回“文件->构建设置”,添加“ scene_battlefield”(或 不管它叫什么),然后将程序构建到一个文件夹中。之后 构建完成,您可以删除构建。程序的此构建版本不重要。
  7. 重新启动Unity并照常加载项目。

基本上,“另存为...”将覆盖所有旧的旧脚本连接。

如果您不记得游戏中哪个场景是原始重命名的场景,则需要为每个场景重做“另存为...”部分。但是,您只需要执行一次“构建设置”。

就是这样。您永远不应再弹出这些随机脚本。希望有帮助。