Skip to content

Librería (set_temp & remember)

trotacalles
Autortrotacalles

Kara Effector ofrece dos funciones para almacenar datos, remember y set_temp, cada una con un propósito específico. Comprender su diferencia es clave para crear efectos complejos y eficientes.

Es fundamental saber que esta casilla no es un editor de scripts de Lua de formato libre. No admite bloques de código como if ... then ... end (a menos que estén dentro de una función).

En su lugar, funciona mediante asignaciones de variables (variable = valor). Para ejecutar código de forma condicional, se utiliza una construcción común en Lua que funciona como un operador ternario:

mi_variable = (condición) and (valor_si_es_cierto) or (valor_si_es_falso)

Esta estructura es la base para usar remember y set_temp de manera efectiva en la interfaz.

Propósito
Optimizar el rendimiento de un efecto dentro de una única línea de diálogo. Su función es evitar cálculos repetitivos.
¿Cómo funciona?
remember("nombre_del_dato", valor_a_guardar) guarda un valor en la tabla interna recall. Para leerlo, se usa recall.nombre_del_dato. Esta memoria es volátil: se borra por completo cuando Kara Effector termina de procesar la línea actual y pasa a la siguiente.

Imagina un efecto con un bucle de 20 iteraciones (loop = 20) que utiliza la misma figura (shape). Sería ineficiente generar esa figura 20 veces. La solución es crearla solo en la primera iteración (j == 1) y recordarla para las demás.

En la casilla Variables [fx]:

my_path = j == 1 and remember("circle_path", shape.size(shape.circle, 100)) or recall.circle_path
  1. Se define una variable llamada my_path.

  2. Se evalúa la condición j == 1.

    • Si j es 1 (primera iteración): Se ejecuta remember("circle_path", ...). Esta función guarda la shape del círculo en recall y, a su vez, retorna el mismo shape. El valor retornado se asigna a my_path.
    • Si j es mayor que 1 (iteraciones siguientes): La condición es falsa, por lo que se ejecuta la expresión después del or. Se recupera la shape previamente guardada desde recall.circle_path y se asigna a my_path.

Gracias a esto, la variable my_path siempre contiene la shape necesaria, pero el cálculo pesado solo se realiza una vez por línea.

En la casilla Return [fx]:

Simplemente se usa la variable, prefijada con var.:

return math.shape(var.my_path, nil, nil, maxj)
AtributoDetalle
FunciónGuardar datos para reutilización interna
Tablarecall
Ámbito de VidaUna sola línea de diálogo
ObjetivoOptimización

Característicaremember(ref, val)set_temp(ref, val)
Propósito principalOptimización (dentro de una línea).Comunicación (entre líneas).
Ámbito / Vida útilLínea actual (se borra al terminar).Toda la ejecución del script.
Caso de uso típicoCalcular un shape complejo una vez y reutilizarlo en un bucle (j).Guardar el tiempo o posición final de una línea para que la siguiente lo use como valor inicial.