Métodos por tipo
La mayoría de los scripts usan los despachadores del capítulo Emisión — :Emit(item) determina el tipo y enruta. Pero el plugin también expone un método por tipo, para que puedas llamar al correcto directamente cuando ya conoces el tipo.
Dos razones para usarlos:
- Rendimiento — omite la verificación de tipo que realiza el despachador. Insignificante por llamada, perceptible cuando se llaman miles de veces por segundo.
- Claridad — hace que el punto de llamada se documente solo.
Part_Icles:EmitBeam(myBeam)se lee de forma más directa quePart_Icles:Emit(myBeam)para un lector no familiarizado con el código.
Métodos en modo Emit (clones por emisión)
Sección titulada «Métodos en modo Emit (clones por emisión)»Cada método toma la instancia fuente y un link opcional (una instancia a seguir, igual que la propiedad Link del capítulo Linking).
| Método | Instancia fuente |
|---|---|
:EmitPart(part, link?) | BasePart |
:EmitBeam(beam, link?) | Beam |
:EmitAttachment(attachment, link?) | Attachment |
:EmitModel(model, link?) | Model |
:EmitPointLight(light, link?) | PointLight |
:EmitImageLabel(label, link?) | ImageLabel |
:EmitBlur(item, link?) | BlurEffect |
:EmitBloom(item, link?) | BloomEffect |
:EmitColorCorrection(item, link?) | ColorCorrectionEffect |
:EmitAtmosphere(item, link?) | Atmosphere |
Part_Icles:EmitBeam(workspace.MyLightning)Part_Icles:EmitPart(workspace.SwordTip.Spark, workspace.Sword.Tip)Los métodos por tipo realizan primero una búsqueda interna de datos. La búsqueda devuelve nil cuando el elemento no tiene un hijo PartIcleProperties Configuration — eso cubre dos casos: elementos que no han sido transformados en absoluto, y elementos Trail (que usan una ruta de almacenamiento diferente y nunca reciben un Configuration). En ambos casos el método por tipo retorna anticipadamente en not data y la llamada es una operación silenciosa sin efecto.
Las llamadas entre tipos — :EmitPart(myBeam) por ejemplo — no se capturan silenciosamente. myBeam tiene un Configuration, por lo que la búsqueda de datos no se interrumpe; la función luego lee campos específicos del tipo y una discrepancia lanzará un error por el campo faltante. Usa el despachador :Emit(item) si no puedes estar seguro del tipo en el punto de llamada — enruta por IsA y nunca cruza carriles.
Trail no tiene método por tipo. Los Trails usan una ruta de almacenamiento diferente (sin hijo Configuration), por lo que la búsqueda de datos devuelve nil. La ruta de emisión por script compatible para un Trail transformado es :AbsoluteEmit(trail) — cae en la rama nativa de Trail y alterna Enabled durante el EmitDuration analizado. O bien omite el runtime por completo y establece trail.Enabled = true tú mismo.
Métodos en modo Animate (clon único en bucle)
Sección titulada «Métodos en modo Animate (clon único en bucle)»Para cada método en modo emit existe un contraparte Animate que activa el modo Animate (un único duplicado en bucle, sin clones por emisión — consulta Dos Modos para el modelo). PointLight es la excepción: no existe :EmitPointLightAnimate ya que PointLight no tiene un caso de uso en modo Animate en el plugin.
| Método | Instancia fuente |
|---|---|
:EmitPartAnimate(part, link?) | BasePart |
:EmitBeamAnimate(beam, link?) | Beam |
:EmitAttachmentAnimate(attachment, link?) | Attachment |
:EmitModelAnimate(model, link?) | Model |
:EmitImageLabelAnimate(label, link?) | ImageLabel |
:EmitBlurAnimate(item, link?) | BlurEffect |
:EmitBloomAnimate(item, link?) | BloomEffect |
:EmitColorCorrectionAnimate(item, link?) | ColorCorrectionEffect |
:EmitAtmosphereAnimate(item, link?) | Atmosphere |
Part_Icles:EmitPartAnimate(workspace.PulsingOrb)El comportamiento en modo Animate se divide por familia. Los tipos de espacio de pantalla e ImageLabel son singleton-drop: volver a llamar al método mientras un clon animado sigue activo se descarta silenciosamente — espera a que el clon anterior termine (o usa :Disable) antes de volver a emitir. Los tipos 3D (Part, Attachment, Beam, Model) son cancel-and-restart: volver a llamar cancela el ciclo en curso, devuelve la fuente a su CFrame inicial y comienza un ciclo nuevo.
Transform / TransformModel
Sección titulada «Transform / TransformModel»:Transform(part) es la misma llamada que emite el botón Transform de Studio. Las transformaciones programáticas son válidas — útiles para emisores generados en tiempo de ejecución o para herramientas.
Part_Icles:Transform(myFreshlyCreatedPart):TransformModel(model, typeDef) es la variante específica para Model; typeDef normalmente se deriva automáticamente, pero puede pasarse explícitamente al transformar jerarquías no estándar.
En un juego publicado, las transformaciones generalmente se realizan en tiempo de edición en Studio, no en tiempo de ejecución — una vez que un emisor está transformado, permanece así en el archivo del lugar. El método de transformación en tiempo de ejecución es principalmente útil en el desarrollo de plugins o en flujos de trabajo inusuales.
Qué sigue
Sección titulada «Qué sigue»Con los métodos por tipo cubiertos, el capítulo Anclaje de Texturas explica :Preload y :Deload — los métodos de precarga de assets que evitan el tartamudeo de texturas en la primera emisión.