Animaciones de transferencia

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

En Roblox, las animaciones están bloqueadas para las experiencias de los usuarios que también poseen esas animaciones.Para evitar que las animaciones se rompan cuando transfieras tu experiencia a un grupo, debes publicar tus recursos de animación al nuevo propietario del grupo de experiencia.

Si tienes un gran número de animaciones para cargar/subir, puedes usar la herramienta admitida por la comunidad Transferencia de animaciones de Roblox para volver a subir las animaciones y mapear sus antiguas AnimationIds a sus nuevas correspondientes AnimationIds.

Requisitos previos

Antes de transferir tus animaciones, debes tener npx.npx te permite ejecutar comandos de paquetes sin tener que instalar esos paquetes en tu sistema.Para comprobar por npx, instala node.js y ejecuta npx –version en una ventana de terminal.

Para obtener más información sobre los requisitos previos, consulte el Roblox Animation Transfer README.

Mapa los ID de animación a nombres

Si tus animaciones se almacenan como instancias de animación bajo modelos de personajes preparados previamente en tu experiencia, puedes generar un archivo de texto para mapear el AnimationIds a sus nombres correspondientes.

  1. En Roblox Studio, ejecute el siguiente script. Studio produce el resultado como una sola cadena larga.


    local Workspace = game:GetService("Workspace")
    local ANIMSTRING = ""
    for _, character in Workspace:GetChildren() do
    if not character:IsA("Model") then
    continue
    end
    local animations = character:FindFirstChild("Animations")
    if not animations then
    continue
    end
    for _, animation in animations:GetChildren() do
    local animationId = string.match(animation.AnimationId, "%d+")
    if animationId then
    ANIMSTRING ..= (animationId .. " " .. character.Name .. "_" .. string.gsub(animation.Name, " ", "_") .. "\n")
    end
    end
    end
    print(ANIMSTRING)
  2. Crea un nuevo archivo de texto en tu computadora.

  3. Pega la salida de cadena por Studio en el archivo de texto.

  4. Limpie cualquier discrepancia como cadenas adicionales -Edit y -Studio que se han agregado automáticamente al contenido del archivo.

  5. Reemplaza todos los espacios con guiones para limitar el número de nombres moderados en general.

(Opcional) Preparar archivos de texto

Roblox tiene un límite de velocidad interna para las subidas de animaciones.La herramienta de transferencia de animaciones de Roblox no respeta este límite de velocidad, lo que puede causar problemas durante el proceso de transferencia y romper su archivo de texto final.Por ejemplo, puedes transferir 1200 animaciones, pero terminas con solo 900 de ellas y sin forma de determinar cuáles no se transferieron.

Para asegurarse de que el archivo final no se rompa, puede:

  1. Divide tu archivo de texto en múltiples archivos con hasta 200 animaciones en cada uno.
  2. Usa la herramienta de transferencia de animación de Roblox en cada archivo individual. Para evitar cualquier problema importante de límite de velocidad, espera unos minutos entre cada lote.

Animaciones de transferencia

Una vez que sus archivos de texto estén listos, inicie el proceso de transferencia:

  1. Abre una ventana de terminal.
  2. Ejecutar npx roblox-animation-transfer --inFile animations.txt --group YOUR_GROUP_ID --outFile newAnimations.txt .
    • --inFile debe apuntar al archivo con las animaciones que desea subir.Este archivo puede ser el archivo de texto grande que inicialmente creó o el primero de varios archivos más pequeños si optó por dividir el archivo más grande.
    • --group debe apuntar al GroupId del grupo que recibe la transferencia de animación.Puedes encontrar el ID del grupo en la URL del grupo en el sitio web de Roblox.
    • --outFile debe apuntar al archivo en el que quieres poner las nuevas animaciones.

Si el proceso de transferencia tiene éxito, las animaciones en el outFile se enumeran en el mismo orden en que se proporcionaron en el inFile .Si un número de animaciones no se transfieren, la herramienta intenta transferirlas nuevamente; si esta segunda tentativa tiene éxito, estas animaciones se agregarán al final de la lista en el outFile .

Cargar animaciones en tiempo de ejecución

Después de transferir tus animaciones al nuevo propietario del grupo, debes intercambiar las animaciones antiguas por las nuevas animaciones.

  1. En Studio, crea un módulo Animations en el estudio.

  2. Crea dos módulos hijos, uno correspondiente al usuario, o al propietario original, y el otro correspondiente al grupo, o al nuevo propietario.

  3. Para evitar que la experiencia se rompa si eliges publicarla en otra ubicación, ejecuta el siguiente script.Por defecto, el script devuelve las animaciones del usuario.


    local module = {}
    local GROUP_ID = 12345678
    local gameContext = {
    ["User"] = require(script:WaitForChild("Animations_User")),
    ["Group"] = require(script:WaitForChild("Animations_Group"))
    }
    local function getAnimationMapForGameContext()
    if game.CreatorType == Enum.CreatorType.Group and game.CreatorId == GROUP_ID then
    return gameContext.Group
    end
    return gameContext.User
    end
    local animationMap = getAnimationMapForGameContext()
    function module.getAnimation(animName: string)
    return animationMap[animName]
    end
    return module
  4. Convierte los archivos de texto generados en mapas de animación en Studio.

    1. Reemplaza la lista de animaciones dentro de la variable animFileText con el contenido del archivo de texto que quieres convertir en un mapa de animaciones.
    2. Ejecute el siguiente script para devolver una cadena:

    local animFileText = [[
    4215167 Animation_Name_1
    6171235 Animation_Name_2
    1251267 Animation_Name_3
    ]]
    local function convertFileToAnimationMap(animFileText: string)
    local NEW_ANIMATION_MAP = ""
    local lines = string.split(animFileText, "\n")
    for _, line in lines do
    local components = string.split(line, " ")
    if #components ~= 2 then
    continue
    end
    local animationId = components[1]
    local animationName = components[2]
    NEW_ANIMATION_MAP = string.format("%s\t[\"%s\"] = \"rbxassetid://%s\",\n", NEW_ANIMATION_MAP, animationName, animationId)
    end
    return string.format("return {\n%s}", NEW_ANIMATION_MAP)
    end
    print(convertFileToAnimationMap(animFileText))
  5. Crea un nuevo padre ModuleScript al que se le asigna tu módulo Animations.

  6. Coloca la cadena devuelta animFileText dentro del ModuleScript.

  7. Actualice la experiencia para obtener todas las animaciones a través del módulo Animations al ejecutar el siguiente script:


    local Animations = require(PATH.TO.ANIMATIONS)
    local warriorWalk = Instance.new("Animation")
    warriorWalk.AnimationId = Animations.getAnimation("Warrior_Walk")