c# - 如果类和文件名相同并继承MonoBehaviour,为什么Unity会抛出错误“脚本不继承可以管理的本机类”?
问题描述
最近开始研究 John Manning 的《Mobile Game Development with Unity》一书,代码有问题。
Unity 在尝试添加组件时不断抛出此错误。 “脚本不继承可以管理的原生类”
这是代码本身。类名和代码相同。我已经在互联网上挖掘了几个小时,但找不到解决方案。
代码附在书上,添加时也会出错。
using UnityEngine;
[RequireComponent (typeof(SpriteRenderer))]
public class BodyPart: MonoBehaviour
{
public Sprite detachedSprite;
public Sprite burnedSprite;
public Transform bloodFountainOrigin;
bool detached = false;
public void Detach()
{
detached = true;
this.tag = "Untagged";
transform.SetParent(null, true);
}
public void Update()
{
if (detached == false)
{
return;
}
var rigidbody = GetComponent<Rigidbody2D>();
if (rigidbody.IsSleeping())
{
foreach (Joint2D joint in GetComponentsInChildren<Joint2D>())
{
Destroy(joint);
}
foreach (Rigidbody2D body in GetComponentsInChildren<Rigidbody2D>())
{
Destroy(body);
}
foreach (Collider2D collider in GetComponentsInChildren<Collider2D>())
{
Destroy(collider);
}
Destroy(this);
}
}
public void ApplyDamageSprite(Gnome.DamageType damageType)
{
Sprite spriteToUse = null;
switch (damageType)
{
case Gnome.DamageType.Burning:
spriteToUse = burnedSprite;
break;
case Gnome.DamageType.Slicing:
spriteToUse = detachedSprite;
break;
}
if (spriteToUse != null)
{
GetComponent<SpriteRenderer>().sprite = spriteToUse;
}
}
}
解决方案
还有许多关于此错误的其他论坛帖子,包括Unity 社区帖子、Unity Answers 帖子和另一个 StackOverflow 帖子
他们中的大多数人都认为这是 Unity 的问题,而不是脚本本身。我建议从这些帖子中的建议开始
- 重启 Unity
- 如果您在运行游戏时添加了脚本,请停止并重新编译
- 确认脚本名称完全匹配
- 从脚本名称中删除所有空格
- 更新到您的 Unity 版本的最新版本
- 重新安装 Unity
如果您已经尝试过其中任何一个,请告诉我们您为解决问题所做的工作,我们可以尝试提供更多帮助
推荐阅读
- c# - 从丢失小数位的 XML 中解析浮点值(C#)
- jquery - DataTables:页脚不会根据搜索更新
- r.net - R.NET 和 Microsoft R 打开我不能使用包 xlsx
- html - 如何将jumbotron扩展到页面末尾
- angular - 使用“npm”恢复依赖关系。在 Visual Studio 2019 中这可能需要几分钟
- python - 你能对 Django 查询集中的聚合值做额外的数学运算吗
- javascript - 对象属性的 VS Code 自动完成
- sparql - SPARQL group by、group_concat 和 order
- javascript - 在打字稿中使用枚举内的枚举?
- java - Android - 特定角度的曲线角