Contador
Valor que evoluciona con el tiempo y puede serializarse como estado de red o persistencia.
Contador
Contador representa un valor numérico limitado por min y max que cambia automáticamente según una tasa por segundo.
Es especialmente útil para recursos o estados que evolucionan con el tiempo y deben reconstruirse sin almacenar cada instante intermedio.
Modelo
valor almacenado
+
tiempo transcurrido × rate
↓
valor actual
↓
[min, max]La propiedad value calcula el valor actual usando Eco.TiempoServidorMS en el runtime de Eco.
Configuración
var energia = new Contador(
value: 100,
rate: -5,
min: 0,
max: 100
);Cada segundo la energía disminuye aproximadamente cinco unidades hasta alcanzar min.
Propiedades
| Miembro | Función |
|---|---|
min | Límite inferior. |
max | Límite superior. |
rate | Cambio por segundo. |
value | Valor actual calculado. |
storedValue | Valor almacenado internamente. |
Tiempo de servidor
El contador utiliza el reloj del servidor, no Time.deltaTime, para calcular su evolución. Esto es importante cuando el valor forma parte de un estado compartido.
double energiaActual = energia.value;Porcentaje de duración
GetPercent(delta) calcula qué fracción del intervalo permanece antes de que el cambio alcance un límite.
double porcentaje = energia.GetPercent(1.0);Serialización
Contador implementa tanto IBinarySerializable como IDataNodeSerializable.
Contador
├── min
├── max
├── rate
├── value
└── timestampEsto permite conservar el estado sin tener que escribir un valor nuevo cada frame.
Cuándo utilizarlo
Es apropiado para:
- recursos que regeneran o consumen valor;
- temporizadores cuantificados como estado;
- acumuladores limitados;
- estados persistentes que evolucionan entre dos observaciones.
No es un sustituto de la sincronización continua cuando el gameplay exige una simulación determinista por tick.
Referencias
Serialización
Interfaces de serialización utilizadas por Contador.
Código fuente
Implementación actual.
