Transférer des animations

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Dans Roblox, les animations sont verrouillées aux expériences appartenant aux utilisateurs qui possèdent également ces animations.Pour empêcher que les animations ne se brisent lorsque vous transférez votre expérience à un groupe, vous devez publier vos ressources d'animation au nouveau propriétaire du groupe d'expérience.

Si vous avez un grand nombre d'animations à télécharger, vous pouvez utiliser l'outil soutenu par la communauté transfert d'animation Roblox pour ré-uploader les animations et les cartographier sur leur ancien AnimationIds pour leur nouveau correspondant AnimationIds.

Prérequis

Avant de transférer vos animations, vous devez avoir npx installé.npx vous permet d'exécuter des commandes à partir de packages sans avoir à les installer sur votre système.Pour vérifier pour npx, installez node.js et exécutez npx –version dans une fenêtre de terminal.

Pour plus d'informations sur les prérequis, voir le Roblox Animation Transfer README.

Mapper les ID d'animation de carte aux noms

Si vos animations sont stockées en tant qu'instances d'animation sous des modèles de personnage préparés à l'avance dans votre expérience, vous pouvez générer un fichier texte pour maper le AnimationIds à leurs noms correspondants.

  1. Dans Roblox Studio, exécutez le script suivant. Studio produit le résultat en une seule longue chaîne.


    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. Créez un nouveau fichier texte sur votre ordinateur.

  3. Collez la sortie de chaîne par Studio dans le fichier texte.

  4. Nettoyez toute discordance comme des chaînes supplémentaires -Edit et -Studio qui ont été ajoutées automatiquement au contenu du fichier.

  5. Remplacez tous les espaces par des tirets afin de limiter le nombre de noms modérés dans l'ensemble.

(Facultatif) Préparer des fichiers de texte

Roblox a une limite de taux interne pour les téléchargements d'animations.L'outil de transfert d'animation Roblox ne respecte pas cette limite de taux, ce qui peut causer des problèmes pendant le processus de transfert et briser votre fichier de texte final.Par exemple, vous pouvez transférer 1200 animations mais finir avec seulement 900 d'entre elles et aucun moyen de déterminer celles qui n'ont pas été transférées.

Pour vous assurer que le fichier final ne se brise pas, vous pouvez :

  1. Divisez votre fichier texte en plusieurs fichiers avec jusqu'à 200 animations chacun.
  2. Utilisez l'outil de transfert d'animation Roblox sur chaque fichier individuel. Pour éviter tout problème majeur de limite de vitesse, attendez quelques minutes entre chaque lot.

Transférer des animations

Une fois vos fichiers de texte prêts, lancez le processus de transfert :

  1. Ouvrez une fenêtre de terminal.
  2. Exécutez npx roblox-animation-transfer --inFile animations.txt --group YOUR_GROUP_ID --outFile newAnimations.txt.
    • --inFile doit pointer vers le fichier avec les animations que vous voulez télécharger.Ce fichier peut être le grand fichier texte que vous avez initialement créé, ou le premier de plusieurs fichiers plus petits si vous choisissez de diviser le fichier plus grand.
    • --group doit pointer vers le GroupId du groupe recevant le transfert d'animation.Vous pouvez trouver l'ID du groupe dans l'URL du groupe sur le site Web de Roblox.
    • --outFile doit pointer vers le fichier dans lequel vous voulez mettre les nouvelles animations.

Si le processus de transfert est réussi, les animations dans le outFile sont listées dans le même ordre dans lequel elles ont été fournies dans le inFile.Si un certain nombre d'animations ne parviennent pas à se transférer, l'outil tente de les transférer à nouveau ; si cette deuxième tentative est réussie, ces animations sont ajoutées à la fin de la liste dans le outFile .

Charger les animations au moment de l'exécution

Après avoir transféré vos animations au nouveau propriétaire du groupe, vous devez échanger les anciennes animations pour les nouvelles animations.

  1. Dans Studio, créez un module Animations dans le studio.

  2. Créez deux modules enfants, l'un correspondant à l'utilisateur, ou au propriétaire original, et l'autre correspondant au groupe, ou au nouveau propriétaire.

  3. Pour empêcher que l'expérience ne se brise si vous choisissez de la publier à un autre endroit, exécutez le script suivant.Par défaut, le script renvoie les animations de l'utilisateur.


    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. Transformez les fichiers de texte générés en cartes d'animation dans Studio.

    1. Remplacez la liste d'animation à l'intérieur de la variable animFileText par le contenu du fichier texte que vous voulez transformer en carte d'animation.
    2. Exécutez le script suivant pour retourner une chaîne :

    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. Créez un nouveau parent ModuleScript à votre module Animations.

  6. Placez la chaîne renvoyée animFileText à l'intérieur du ModuleScript.

  7. Mise à jour de l'expérience pour source toutes les animations à travers le module Animations en exécutant le script suivant :


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