首页 > 解决方案 > 如果类和文件名相同并继承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;
        }
    }
}

标签: c#unity3d

解决方案


还有许多关于此错误的其他论坛帖子,包括Unity 社区帖子Unity Answers 帖子另一个 StackOverflow 帖子

他们中的大多数人都认为这是 Unity 的问题,而不是脚本本身。我建议从这些帖子中的建议开始

  1. 重启 Unity
  2. 如果您在运行游戏时添加了脚本,请停止并重新编译
  3. 确认脚本名称完全匹配
  4. 从脚本名称中删除所有空格
  5. 更新到您的 Unity 版本的最新版本
  6. 重新安装 Unity

如果您已经尝试过其中任何一个,请告诉我们您为解决问题所做的工作,我们可以尝试提供更多帮助


推荐阅读