En este momento estás viendo ¿Por qué Unity arroja un error de «Script no hereda una clase nativa que puede administrar» si la clase y el nombre de archivo son iguales y heredan de MonoBehaviour?

 – Unity

¿Por qué Unity arroja un error de «Script no hereda una clase nativa que puede administrar» si la clase y el nombre de archivo son iguales y heredan de MonoBehaviour? – Unity

¿Por qué Unity arroja un error de «Script no hereda una clase nativa que puede administrar» si la clase y el nombre de archivo son iguales y heredan de MonoBehaviour?

– UnityAssets3Free

bienvenido , por aqui juansito y hoy os traigo
nueva pregunta

Recientemente comencé a estudiar el libro «Desarrollo de juegos móviles con Unity» de John Manning y hubo un problema con el código.

Unity sigue arrojando este error cuando intenta agregar un componente.
«El script no hereda una clase nativa que pueda administrar»

Aquí está el código en sí. El nombre de la clase y el código son los mismos. Llevo varias horas buscando en internet y no encuentro solución.

El código se ha adjuntado al libro y también da error cuando se agrega.

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;
        
    

1 respuesta 1

Hay varias otras publicaciones en el foro sobre este error, incluyendo una publicación de la comUnity de Unity, una publicación de Unity Answers, y otra publicación de StackOverflow

La mayoría está de acuerdo en que es un problema de Unity, no del script en sí. Recomendaría comenzar con las sugerencias en estas publicaciones.

  1. reiniciar la Unity
  2. Si agregó el script mientras el juego se estaba ejecutando, deténgase y vuelva a compilar
  3. Confirme que el nombre del script coincida exactamente
  4. Eliminar todos los espacios del nombre del script
  5. Actualice a la última versión de su versión de Unity
  6. Reinstalar la Unity

Si probó alguna de estas opciones, infórmenos qué hizo para solucionar el problema e intentaremos ayudarlo más.

nota: si aun no se resuelve tu pregunta por favor dejar un comentario y pronto lo podremos de nuevo , muchas gracias

eso es todo,hasta la proxima

Deja una respuesta