¿Por qué las clases de script de Unity deberían evitar heredar la clase MonoBehaviour?
Hay docenas de métodos en MonoBehaviour, como
Start(), Awake(), Update(), FixedUpdate(), OnGUI(), sin importar cuál de ellos Los métodos que utilice deben heredar de MonoBehaviour
o no. La clave de MonoBehaviour depende de qué funciones y atributos se implementen. Si su clase no requiere la inicialización, diversas físicas, renderizado y devoluciones de llamadas de sombreado proporcionadas por el motor, es mejor no heredar MonoBehaviour. El juego necesita optimizarse y guardarse. recursos Si no lo hace Si esas funciones y herencia son necesarias, cuando el motor esté expuesto a eventos y se active, varias funciones se llamarán de forma reflexiva, lo que consume muchos recursos. Pase lo que pase, GameObject aún necesita heredar MonoBehaviour. para que se pueda crear una instancia de un objeto y otras clases no lo hereden.
¿Cuáles son las desventajas de no heredar Mono?
1: Ya no puedes usar Invoke y Coroutine.
2: La depuración es un inconveniente, no se pueden ver los parámetros en las pestañas del inspector y de depuración. Además, si una clase no extiende Mono, la tabla Lista de la clase no será visible en la pantalla de depuración.
3: Los métodos como Inicio y Actualización no se pueden llamar automáticamente.
Hay un ERROR al heredar Mono:
Si heredas la clase Mono, no necesitas crear una instancia de la misma, pero no puedes crear una nueva aunque el. La compilación puede pasar, al ejecutarse, se mostrará un error en la ventana de la consola de edición. En este momento, no importa si está vacía después de crearla, pero el sistema la muestra como vacía, esto es un ERROR. Se muestra vacío. Esto es un ERROR. Mi clase hereda la tuya. Aunque no puedes crear una nueva, ¿cómo podría ser un error?