Edición Nativa
No todo en tu escena necesita ser un emisor Part-Icles. Algunos efectos de partículas funcionan bien como instancias nativas de ParticleEmitter de Roblox — las sencillas, donde cada partícula es un quad plano con textura (2D, sin grosor; los cuatro modos de Orientation cambian la dirección en que mira el quad, pero la forma renderizada sigue siendo un sprite plano), el movimiento es en una sola dirección con un rango de Speed, y no necesitas tamaño en tres ejes, partículas de malla o animación por eje basada en gráficas.
El plugin reconoce esto. Cuando seleccionas un ParticleEmitter o Trail nativo que no ha sido transformado, el panel de propiedades se abre de todos modos — con un subconjunto seleccionado de las propiedades nativas conectadas al mismo editor de gráficas, selector de color y herramientas masivas que tus emisores transformados. Obtienes la mayoría de las comodidades de autoría del plugin sin los cambios estructurales que aplica Transform.
Este capítulo explica exactamente qué funciona, qué no, y cuándo tiene sentido recurrir a la edición nativa.
Cuándo usar la edición nativa
Sección titulada «Cuándo usar la edición nativa»La pregunta predeterminada es “¿debería transformar esto o dejarlo nativo?” — y normalmente tiene una respuesta clara.
Transforma cuando necesites:
- Partículas de malla 3D con geometría personalizada (renderizado mediante emisor
Part) - Gráficas de tamaño en tres ejes (
SizeX,SizeY,SizeZ) - Gráficas de rotación por eje (
RotSpeedX/Y/Z) - Modo Animate (animación de propiedades en el lugar, sin clones)
- Linking (vinculación de la emisión a un objetivo en movimiento)
- El modelo
RenderTemplate(una plantilla de clon simplificada para la emisión) - Desplazamientos de posición en tres ejes, formas de spawn complejas u otro comportamiento específico del plugin
Déjalo nativo cuando:
- El emisor es un sprite de billboard 2D (el aspecto clásico de ParticleEmitter de Roblox)
- Estás trabajando con los efectos de stock de una escena existente y no quieres reestructurarla
- La superficie de propiedades más sencilla es suficiente — rango de Speed, Lifetime, secuencia de Color, secuencia de Transparency, secuencia de Size — sin movimiento basado en gráficas
- Quieres trails con el comportamiento nativo de Roblox por segmento
El plugin es un entorno de autoría igual de capaz para PEs y Trails nativos que para elementos transformados, pero la superficie de propiedades es más estrecha. Estás trabajando dentro de la API nativa de Roblox, que es más limitada que lo que Transform pone a disposición.
Cómo el plugin reconoce una instancia nativa
Sección titulada «Cómo el plugin reconoce una instancia nativa»La detección de selección se basa en atributos, no en tipos. Cuando haces clic en un ParticleEmitter o Trail, el plugin comprueba el atributo Transformed:
- Tiene
Transformed = true→ es un elemento transformado (Part / Beam / Trail con Transform aplicado / etc.). El plugin muestra el panel de propiedades transformadas para ese tipo. - No tiene atributo
Transformed→ es nativo. El plugin muestra el panel de propiedades nativas — filas distintas, entradas distintas, pero el mismo diseño general.
Internamente, el panel comprueba el atributo Transformed en cada instancia seleccionada y enruta al panel transformado o nativo según lo que encuentre. No existe ninguna bandera IsNative — solo la ausencia del marcador Transformed.
Esto significa que puedes mezclar emisores transformados y nativos en la misma escena sin ninguna preocupación. El plugin gestiona cada uno correctamente según los atributos que estén presentes.
ParticleEmitter nativo — lo que expone el panel
Sección titulada «ParticleEmitter nativo — lo que expone el panel»Cuando seleccionas un ParticleEmitter nativo, las secciones del panel son:
Spawning
Sección titulada «Spawning»- Direction — el enum
EmissionDirectionde Roblox (Top,Bottom,Front,Back,Left,Right). - Enabled — interruptor.
- Rate — partículas por segundo.
- Lifetime —
NumberRangepara la vida útil por partícula. - SpreadAngle —
Vector2para la dispersión en cono.
Appearance
Sección titulada «Appearance»- Texture — entrada de id de recurso.
- Brightness — número único (Roblox añadió esta propiedad recientemente; el panel la expone como entrada numérica).
- Size — gráfica
NumberSequence. Se edita con el editor de gráficas completo del plugin — puntos clave, manejadores de bezier, presets, modo envolvente. - Transparency — gráfica
NumberSequence. El mismo editor. - Squash — gráfica
NumberSequence. El mismo editor. (Squash es la propiedad de estiramiento a lo largo de la velocidad de Roblox.) - Color — gráfica
ColorSequence. Se edita con el editor de secuencias de color del plugin. - LightEmission — número único.
- LightInfluence — número único.
- Z-Offset — número único.
- Orientation — el enum de Roblox (
FacingCamera,FacingCameraWorldUp,VelocityParallel,VelocityPerpendicular).
Movement
Sección titulada «Movement»- Speed —
NumberRange(un rango, no una gráfica). ElParticleEmitter.Speednativo de Roblox es unNumberRange; el panel lo respeta. - Rotation —
NumberRangepara la rotación inicial en grados. - RotSpeed —
NumberRangepara la velocidad de giro en grados por segundo. - Acceleration —
Vector3para el vector de fuerza constante. - Drag — número único.
- VelocityInheritance — número único.
- TimeScale — número único.
- LockedToPart — interruptor.
- WindAffectsDrag — interruptor.
Shape, Flipbook, Advanced (contraídos por defecto)
Sección titulada «Shape, Flipbook, Advanced (contraídos por defecto)»- Shape — el enum de Roblox (
Box,Sphere, etc.) para la región de spawn. - FlipbookMode / FlipbookFramerate — configuración de animación de flipbook.
- PreloadTexture — un atributo añadido por el plugin que indica que se cargue la textura antes de emitir.
El cambio de terminología clave que debes entender: donde los tipos transformados usan gráficas NumberSequence para Speed, los PEs nativos usan NumberRange. El ParticleEmitter.Speed nativo de Roblox es un rango (mínimo/máximo elegido al spawn), no una gráfica que varía a lo largo de la vida. El plugin no intenta luchar contra esto — muestra la entrada correcta para el tipo correcto.
Lo mismo para RotSpeed. Lo mismo para Rotation. Son rangos por partícula en los nativos, gráficas a lo largo de la vida en los tipos transformados.
Trail nativo — lo que expone el panel
Sección titulada «Trail nativo — lo que expone el panel»Los Trails nativos usan el mismo panel de propiedades que los Trails transformados. Los Trails usan una ruta de almacenamiento diferente — las propiedades se leen y escriben directamente en la instancia Trail nativa sin ningún hijo Configuration ni Render Template. No hay ninguna diferencia real entre los Trails transformados y nativos a nivel del motor — Transform en un Trail es una operación sin efecto a nivel del motor (el Trail simplemente queda marcado como emisor Part-Icles para su inclusión en las operaciones de portapapeles / retime / tono).
La documentación sobre Trails está en el capítulo de Trail — léelo para conocer la superficie de propiedades completa. La distinción nativo vs transformado importa para los emisores que tienen una ruta Transform real; para los Trails es principalmente cosmética.
Desde la v38 también existe TrailEmitter — un Trail transformado que produce partículas de clon por emisión en lugar del toggle de acceso directo. La herramienta Transform ofrece ambas opciones cuando haces clic en Transform sobre un Trail. Consulta TrailEmitter para la variante de emisor; los Trails nativos que se cubren aquí se mantienen como acceso directo.
Beam nativo — BeamNative
Sección titulada «Beam nativo — BeamNative»Los Beams normales de Roblox se reconocen como un tipo distinto llamado BeamNative. La misma forma que la edición de ParticleEmitter nativo / Trail: el panel del plugin expone las propiedades del Beam (Texture, Brightness, Width0/Width1, CurveSize0/CurveSize1, Segments, TextureLength, TextureSpeed, TextureMode, LightEmission, LightInfluence, ZOffset, FaceCamera, más las secuencias nativas Color y Transparency del Beam) para edición directa, sin crear un RenderTemplate / Configuration / GraphBlender. El mismo Beam se renderiza de forma continua entre sus dos attachments; alternar Enabled es el único control de emisión.
Cuándo mantener un Beam como BeamNative frente a Transformarlo al tipo emisor Beam se cubre en la sección La variante nativa del capítulo de Beam. Versión corta: BeamNative para rayas estáticas o dirigidas por attachments que quieras editar con las herramientas de gráficas y edición masiva del plugin; Beam transformado cuando quieras clones, gráficas a lo largo de la vida de cada clon, animación multi-estado con GraphBlender y temporización de emisión.
Qué funciona en los nativos
Sección titulada «Qué funciona en los nativos»Todas las comodidades de autoría del plugin que no dependen del modelo transformado:
El editor de gráficas. Las gráficas Size, Transparency, Squash y Color/Transparency del PE nativo abren el Editor de Gráficas completo del plugin o el Editor de Secuencias de Color. Puntos clave, manejadores de bezier, presets, modo envolvente, simplificación — todo está ahí.
Edición masiva con selección múltiple. Selecciona diez ParticleEmitters nativos a la vez, cambia Rate, los diez se actualizan. El modelo de selección mixta del plugin funciona igual para nativos y transformados.
El portapapeles. Copia valores de propiedades de un PE nativo y pégalos en otro. Las propiedades coinciden por nombre — Color con Color, Size con Size, etc. Incluso puedes pegar la gráfica Color de un Part transformado en el Color de un PE nativo (mismo tipo ColorSequence).
Herramienta Resize. Escalado mediante deslizador de Size (NumberSequence), Speed (NumberRange) y Acceleration (Vector3). La misma herramienta, la misma experiencia de usuario.
Herramienta Retime. Escalado mediante deslizador de propiedades relacionadas con el tiempo (Lifetime, Rate, Speed, RotSpeed, FlipbookFramerate, Acceleration).
Herramienta Hue. Desplazamiento de Tono/Saturación/Valor en gráficas Color. Funciona de la misma manera que para los tipos transformados.
Shifter. Desplazamientos masivos por eje para propiedades que los admiten.
Motion Preview. La visualización de envolvente de trayectoria que muestra adónde irán las partículas antes de emitirlas. Funciona tanto para nativos como para tipos transformados.
Generación de código Emit. La herramienta de código de emisión del plugin genera un fragmento de script Particle:Emit() que funciona tanto en instancias transformadas como nativas. La API de tiempo de ejecución gestiona el despacho internamente.
Qué no funciona en los nativos
Sección titulada «Qué no funciona en los nativos»Algunas características del plugin requieren el modelo transformado y no están disponibles en los nativos:
Linking. Los atributos Link / LinkMode / LinkSource se estampan durante Transform; los PEs nativos no los tienen. Si necesitas que un PE nativo siga una instancia en movimiento, ponlo como hijo de esa instancia directamente (lo que hace que su posición de emisión la siga de forma natural) o usa un script para actualizar su CFrame.
Modo Animate. EmissionMode = "Animate" solo funciona en tipos transformados. Los PEs nativos siempre usan el modelo estándar de emitir y destruir de Roblox.
Render Template. No existe para los nativos. Los PEs nativos renderizan los quads planos con textura integrados de Roblox (2D, orientados según Orientation, alimentados por el Texture elegido). No hay ninguna plantilla de clon que rellenar con geometría personalizada.
Gráficas de tamaño y rotación en tres ejes. El ParticleEmitter.Size nativo de Roblox es un NumberSequence de un solo eje. No obtienes independencia SizeX/Y/Z — solo una gráfica de Size que escala el billboard de manera uniforme.
GraphBlender. Característica exclusiva de Beam y de tipos transformados.
Movimiento tridimensional. Los PEs nativos usan movimiento de billboard 2D en un espacio 3D — no tienen el modelo de movimiento completo del emisor Part con DirMode, Pos. Mode, gráficas de rotación en tres ejes, etc. Tienen lo que la API de Roblox les da y nada más.
Temporización de emisión — los atributos EmitCount / EmitDelay / EmitDuration
Sección titulada «Temporización de emisión — los atributos EmitCount / EmitDelay / EmitDuration»El pipeline de emisión del plugin lee tres atributos de temporización de la instancia fuente: EmitCount (cuántas partículas se disparan como ráfagas iniciales), EmitDelay (segundos de espera antes de la primera ráfaga) y EmitDuration (segundos de bucle continuo tras las ráfagas).
Son atributos, no entradas del panel. El plugin no los muestra como filas editables en ningún panel de propiedades — ni para los elementos transformados, ni para los PEs nativos, ni para los Trails. Para establecerlos, usa la sección “Attributes” de la ventana Properties de Studio:
- Abre la ventana Properties de Studio para la instancia fuente.
- Haz clic en el encabezado “Attributes” (debajo de la lista de propiedades).
- Haz clic en
+y añade un atributo numérico llamadoEmitCount/EmitDelay/EmitDuration. - Establece el valor. El pipeline de emisión del plugin lo recoge la próxima vez que actives la emisión.
Para los elementos transformados, Transform estampa valores predeterminados en el momento de la transformación (EmitCount = 0 para la mayoría de los tipos, 1 para Beam; EmitDelay = 0; EmitDuration = 0), por lo que los atributos están presentes y son editables en el panel Attributes de Studio justo después de Transform. Para los PEs / Trails nativos, tienes que añadir los atributos manualmente si los quieres.
La herramienta de portapapeles del plugin agrupa estos tres bajo una sección “Emission” para que puedan copiarse y pegarse entre elementos, pero el panel de propiedades en sí se mantiene al margen del trío.
Si mutas cualquiera de estos atributos desde un script mientras el panel de propiedades está abierto sobre el mismo elemento, las filas de entrada del panel se actualizan automáticamente — no tienes que hacer clic fuera y volver para ver el nuevo valor. Lo mismo ocurre con el Randomizer o cualquier otra ruta de escritura externa.
PE / Trail / Beam nativo dentro de un padre transformado
Sección titulada «PE / Trail / Beam nativo dentro de un padre transformado»Un ParticleEmitter, Trail o Beam nativo emparentado dentro del RenderTemplate de un elemento transformado ahora es consciente de la emisión. Ocurren dos cosas:
En el momento de Transform. Transform recorre el RenderTemplate de origen una vez y establece Enabled = false en cada descendiente ParticleEmitter, Trail y Beam que encuentra. Esto silencia el origen para que no filtre un flujo extra de partículas a tu escena desde el RT de origen (oculto): la instancia nativa es puramente una plantilla. La desactivación es un disparo único en Transform; si más adelante añades una nueva instancia nativa al RT, tienes que desactivarla tú mismo o volver a hacer Transform.
En el momento de la emisión. Cuando el padre transformado emite, cada ParticleEmitter, Trail y Beam nativo dentro del RenderTemplate clonado se dispara junto con la emisión del padre. El disparo sigue cualesquiera atributos de temporización estampados en la instancia nativa: EmitCount / EmitDelay / EmitDuration si están presentes; en otro caso, un valor predeterminado sensato que emite un breve pulso. Los Beams nativos usan EmitDuration como un número único (segundos que el pulso Enabled permanece activo) — misma forma que la ruta del Trail nativo. Este comportamiento es el mismo tanto si la instancia nativa es hijo directo del RT, como si está anidada dentro de un Attachment, como si está enterrada más profundamente en el subárbol.
La protección contra doble emisión: si un sub-emisor transformado se sitúa entre el padre y la instancia nativa, el recorrido del padre no entra en el subárbol propio del sub-emisor; el sub-emisor gestiona sus propios descendientes cuando se dispara. El mismo PE nativo nunca se dispara dos veces desde la misma ráfaga del padre.
Esto se compone limpiamente con el resto del modelo de anidamiento. Un Model de bola de fuego con una Part transformada para el orbe visible más un ParticleEmitter nativo para las chispas: cada vez que el Model emite, la Part-partícula se clona a sí misma, y cada PE nativo dentro del RT de cualquier clon pulsa según sus propios atributos de emisión. Sin cableado adicional.
Por qué el plugin es un mejor entorno de autoría que el panel de Studio incluso para los nativos
Sección titulada «Por qué el plugin es un mejor entorno de autoría que el panel de Studio incluso para los nativos»El panel de propiedades de Studio para el PE nativo es funcional pero mínimo:
- El editor de gráficas para
Size,TransparencyySquashmuestra una lista de puntos clave con entradas numéricas — sin manejadores de bezier, modo envolvente ni presets. - El editor de color para
Colores una tira de gradiente basada en paradas. Funcional pero mínimo. - Sin edición con selección múltiple — el panel de Studio actualiza una instancia a la vez.
- Sin portapapeles para valores de propiedades.
- Sin herramientas de operaciones masivas (Resize, Retime, Hue, Shifter).
- Sin vista previa de movimiento.
- Sin forma de añadir el control de atributos
EmitCount/EmitDelay/EmitDurationdel plugin en línea (tienes que cambiar a la sección Attributes y añadirlos manualmente).
Cambiar al panel del plugin para la edición de PE nativo te proporciona todo lo anterior sin cambiar la instancia subyacente. La instancia sigue siendo un ParticleEmitter de stock. El tiempo de ejecución de Roblox lo gestiona de forma nativa. El plugin solo interviene cuando editas, copias o emites activamente a través de él.
Vale la pena saber
Sección titulada «Vale la pena saber»Algunas peculiaridades específicas de los nativos.
El Speed del PE nativo es un rango, no una gráfica. Esto sorprende a los usuarios que vienen de Parts transformados. En un Part transformado, Speed es un NumberSequence que varía a lo largo de la vida de cada partícula. En un PE nativo, Speed es un NumberRange — cada partícula elige un valor aleatorio al spawn y lo mantiene. Los dos no son intercambiables; no puedes pegar una gráfica de Speed de un Part en un PE nativo.
Brightness fue una adición reciente de Roblox. El ParticleEmitter.Brightness nativo es una propiedad relativamente nueva. El plugin la expone como entrada numérica. Si estás creando para un tiempo de ejecución de Roblox más antiguo, es posible que la propiedad no exista — la comprobación de compatibilidad de Studio te avisará.
El atributo PreloadTexture es específico del plugin. El ParticleEmitter nativo de Roblox no tiene un mecanismo de precarga. El plugin añade el atributo PreloadTexture y el tiempo de ejecución llama a ContentProvider:PreloadAsync() para cualquier PE nativo dentro de un padre transformado. Para los PEs nativos que emiten por sí solos (sin padre que active la precarga), el atributo no tiene efecto — configura la precarga de Roblox manualmente si tu efecto necesita disponibilidad garantizada de recursos.
No transformes accidentalmente un nativo que querías mantener nativo. Transform en un ParticleEmitter en realidad no hace nada — ParticleEmitter no está en la lista de objetivos de transformación del plugin — pero si transformas un Attachment que contiene un ParticleEmitter, el Attachment se transforma y el PE va con él como hijo nativo. Presta atención a qué instancia está seleccionada cuando haces clic en Transform.
Qué viene a continuación
Sección titulada «Qué viene a continuación»La Edición Nativa convierte el plugin en un entorno de autoría para las partes de tu escena que no necesitan transformación. A continuación: Texture Pinning — el atributo PreloadTexture y cómo el plugin mantiene los bytes de los recursos residentes para que la primera emisión de un efecto con textura no se renderice con una textura en blanco.