es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cuál es la mejor manera de encapsular campos heredados en Unity 2D?

Actualmente estoy diseñando un juego en Unity y quiero asegurarme de implementar una encapsulación adecuada. Sin embargo, estoy atascado en este problema:

Supongamos que tengo una clase “Item” con el campo: “private string itemName”. También tengo una clase “Strawberry” que es una subclase de “Item”. Quiero escribir un método en la clase “Strawberry” que devuelva su itemName.

Estos scripts son MonoBehaviour, por lo que no pueden contener constructores que resolverían el problema anterior usando “base” en su constructor.

¿Qué estrategia debo usar para establecer el nombre de la clase “Strawberry”?

¡Gracias!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Dado que itemName es un campo privado en la clase Item, no se puede acceder directamente en la subclase Strawberry. Por lo tanto, una estrategia común para establecer el nombre en la clase Strawberry es utilizar un método público de configuración en la clase Item.

    Por ejemplo, puedes agregar un método público en la clase Item llamado SetName(string name) que establece el campo itemName con el valor pasado. Luego, en la clase Strawberry, puedes llamar a este método para establecer el nombre:

    public class Item : MonoBehaviour {
        private string itemName;
    
        public void SetName(string name) {
            itemName = name;
        }
    }
    
    public class Strawberry : Item {
        public void SetStrawberryName() {
            SetName("Strawberry");
        }
    }
    

    De esta manera, puedes asegurarte de que el campo itemName esté adecuadamente encapsulado al mismo tiempo que permites que las subclases establezcan su valor utilizando un método público.

Comments are closed.