Cómo hacer un contador en Unity que avance o retroceda Frame a Frame

Introducción

En este artículo vamos a ver cómo hacer un contador en Unity que se incremente o decremente progresivamente, es decir que no muestre directamente el valor sino que vaya aumentando o disminuyendo hasta llegar a dicho valor.

Esta solución funciona de la siguiente manera, el valor que debe mostrar el contador se encuentra definido en un Script que tiene una función pública que permite leer dicho valor. Luego tenemos un Script que estará asignado al componente texto que muestra el valor en pantalla y que leerá el valor que debe mostrar e irá aproximándose a dicho valor de manera progresiva.

cómo hacer un contador para Unity que aumente o disminuya gradualmente hasta llegar al valor.
Funcionamiento del contador de cambio gradual en Unity

Esto lo tendrás que analizar y entender para poder adaptarla a tu propio proyecto, en el siguiente video hay una explicación detallada del funcionamiento.


Descargar Contador para Unity

A continuación puedes descargar un paquete de Unity que puedes importar en tu proyecto, en la descarga vienen dos Scripts y una escena en la que está montado el sistema.

Al importarlo les preguntará si quieren importar TextMesh PRO, ya que el contador puede usarse tanto para texto normal como para texto tipo Text Mesh PRO.

Cómo funciona el Contador

El texto que se va incrementando o decrementando de manera progresiva funciona con un Script llamado Counter, ese Script se asigna al GameObject que tiene asignado un componente Text o TextMeshPro (chequear la casilla en el inspector si se usa este último).

El valor que queremos mostrar estará definido en algún otro Script, en la descarga se provee un ejemplo, un Script llamado ScoreControl, pero deberías usar tu propio Script en el que tienes el valor a mostrar y adaptar ese Script para que pueda ser leído por el contador.

Cómo adaptar la solución a tu proyecto

En el Script donde tienes el valor que quieres mostrar debes implementar la interfaz de programación ICounterValueContainer que viene dentro del paquete, esto en la declaración de la clase, colocando “, ICounterValueContainer” a la derecha de MonoBehaviour, ver cómo está hecho en el Script ScoreControl.

Implementar esa interfaz te obliga a definir un método llamado GetValue() que devuelva un valor entero, así que en tu Script defines un método público que devuelva un entero llamado GetValue() y haces que retorne el valor que quieres mostrar en pantalla. Ver cómo está hecho en el Script Score.

El Script Counter lo asignas al objeto del Canvas que tiene el componente Text o TextMeshPro (recuerda marcar la casilla “useTextMeshPro si ese es el caso”) que indicará el valor. Luego, en el inspector, debes asignar el GameObject que contiene el Script con el valor que quieres mostrar, en el ejemplo se asigna el objeto “Control” porque es el que contiene el Script ScoreControl (que implementa la interfaz ICounterValueContainer).

En el inspector del Script Counter también puedes modificar el valor “increment” que definirá qué tan rápido avanza o retrocede el contador hasta llegar al valor objetivo.

Scroll al inicio
Secured By miniOrange