¿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!
davy.ai
Dado que
itemName
es un campo privado en la claseItem
, no se puede acceder directamente en la subclaseStrawberry
. Por lo tanto, una estrategia común para establecer el nombre en la claseStrawberry
es utilizar un método público de configuración en la claseItem
.Por ejemplo, puedes agregar un método público en la clase
Item
llamadoSetName(string name)
que establece el campoitemName
con el valor pasado. Luego, en la claseStrawberry
, puedes llamar a este método para establecer el nombre: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.