Cómo acceder a VARIABLE de otro Script en Unity

Introducción — Tenemos un pequeño problema…

En este artícu­lo voy a mostrar el pro­ce­so detal­la­do para acced­er a una vari­able defini­da en otro script en Uni­ty.

El prin­ci­pal prob­le­ma al que nos enfrenta­mos es el sigu­iente, ayer entró una per­sona a pre­gun­tar cómo leer el val­or de defen­sa que tiene un ene­mi­go des­de el script del jugador, hace un rato, jus­to antes que tú, vinieron a pre­gun­tar cómo hac­er que un script de con­trol acce­da a la can­ti­dad total de mon­edas recolec­tadas para saber si se ha con­segui­do el obje­ti­vo. Y aho­ra tú estás aquí con tu pro­pio proyec­to dis­tin­to al de los demás, con tus pro­pios scripts a los que les has dado unos nom­bres muy par­tic­u­lares.

Para resolver este prob­le­ma voy a explicar la solu­ción UTILIZANDO NOMBRES GENÉRICOS (como "Scrip­tA" y "ScriptB"), ten­drás que enten­der el pro­ced­imien­to para este ejem­p­lo genéri­co en par­tic­u­lar y luego ten­drás que aplicar lo que has enten­di­do a tu pro­pio caso par­tic­u­lar, es decir deberás deter­mi­nar quiénes son los Scrip­tA y ScriptB en tu caso par­tic­u­lar.

Si prefieres un vídeo paso a paso tengo uno buenísimo:

Se tra­ta de un ejem­p­lo guia­do en el que si haces lo mis­mo que hago yo, con­seguirás lla­mar a una FUNCIÓN que está defini­da en otro script y tam­bién ACCEDER A UNA VARIABLE que está en otro script en Uni­ty, la idea es que entien­das el pro­ced­imien­to y luego lo puedas ada­p­atar para usar­lo en tus pro­pios scripts.

¿Quieres más Uni­ty? En mi canal hay un mon­tón! 👀

Ver la PLAYLIST DE UNITY

SUSCRÍBETE! Te ase­guro que encon­trarás var­ios vídeos útiles 💪 

Procedimiento paso a paso para acceder a una variable de otro Script en Unity

Paso 1. Definir cuáles son los Scripts involucrados

Este es un paso muy impor­tante para que podamos resolver el prob­le­ma de los nom­bres, tus scripts tienen un nom­bre muy par­tic­u­lar, dis­tin­to al de los scripts de las otras per­sonas que han entra­do aquí.

Por favor ten muy pre­sente estos dos puntos:

  • En este ejem­p­lo genéri­co vamos a usar dos scripts, sus nom­bres serán "Scrip­tA" y "ScriptB".
  • La vari­able que quer­e­mos acced­er se encuen­tra en ScriptB y la vamos a acced­er a esta vari­able des­de Scrip­tA.

Paso 2. Asegurar que la variable sea accesible desde un contexto externo 

Debe­mos ase­gu­rarnos que la vari­able que quer­e­mos acced­er (en ScriptB) esté declar­a­da con vis­i­bil­i­dad públi­ca, de esa for­ma esta vari­able podrá ser acce­di­da des­de un con­tex­to exter­no, por ejem­p­lo des­de el ScriptA.

Por ejem­p­lo, si la vari­able que quer­e­mos acced­er fuese de tipo int y su nom­bre fuese "vari­ableE­jem­p­lo", en ScriptB deberíamos definir­la de la sigu­iente manera:

pub­lic int variableEjemplo;

SI LA VARIABLE NO TIENE VISIBILIDAD PÚBLICA NO PUEDE SER ACCEDIDA DESDE OTROS SCRIPTS

Paso 3. Definir un tipo de dato que nos permita acceder al script donde está la variable 

Recordemos que des­de Scrip­tA quer­e­mos acced­er a ScriptB, por lo tan­to den­tro de Scrip­tA ten­emos que definir una vari­able que sea del tipo ScriptB, esta vari­able nos per­mi­tirá acced­er des­de Scrip­tA a las vari­ables y fun­ciones públi­cas definidas en ScriptB.

Podemos definir esta vari­able de la sigu­iente manera:

pub­lic ScriptB variableTipoB;

Paso 4 (CRUCIAL). Inicializar la variable anterior para que apunte al componente que queremos acceder

No encuen­tro un adje­ti­vo pre­ciso para decirte lo IMPORTANTE que es esta parte, no solo para resolver este prob­le­ma en par­tic­u­lar de acced­er a una vari­able de otro script, sino para CUALQUIER COSA QUE QUERAMOS HACER EN UNITY. Se tra­ta de poder ref­er­en­ciar un obje­to pre­ciso des­de un Script.

El pun­to es que la vari­able que defin­i­mos en el paso ante­ri­or, si no la ini­cial­izamos tiene val­or null y si inten­ta­mos usar­la en este esta­do ten­dremos en con­so­la un error de Null Ref­er­ence Exception.

Ten­emos que ase­gu­rarnos de que la vari­able ten­ga en su inte­ri­or alo­ja­do el com­po­nente apropi­a­do al cual quer­e­mos hac­er ref­er­en­cia, en este caso par­tic­u­lar al com­po­nente tipo ScriptB.

Esto lo podemos hac­er de muchas for­mas, una de las más sim­ples es ir a la esce­na de Uni­ty y en el inspec­tor del Scrip­tA arras­trar al cam­po tipo ScriptB el GameOb­ject que tiene asig­na­do el ScriptB, de esa for­ma colo­camos en la vari­able ese com­po­nente y lo podemos usar den­tro del ScriptA.

Paso 5. Utilizar la variable tipo ScriptB para para acceder a la variable definida dentro de ese script

Una vez que com­ple­ta­mos el paso ante­ri­or aho­ra ten­emos una vari­able tipo ScriptB que con­tiene la ref­er­en­cia del com­po­nente tipo ScriptB que está asig­na­do en un GameOb­ject en la esce­na de Unity.

Para acced­er a una vari­able defini­da den­tro del otro script uti­lizamos esa vari­able tipo ScriptB y con el oper­ador pun­to accedemos a la vari­able que nos intere­sa. De acuer­do al ejem­p­lo dado en este paso a paso esto lo haríamos de la sigu­iente forma:

variableTipoB.variableEjemplo

La expre­sión ante­ri­or es la vari­able que está defini­da en el otro script, esta vari­able podemos usar­la den­tro del Scrip­tA o cam­biar­le su val­or si así lo deseamos.

Scroll al inicio
Secured By miniOrange