In Roblox, le animazioni sono bloccate alle esperienze di proprietà degli utenti che possiedono anche quelle animazioni.Per evitare che le animazioni si rompano quando trasferisci la tua esperienza in un Gruppo, devi pubblicare le risorse di animazione al nuovo proprietario del gruppo esperienza.
Se hai un gran numero di animazioni da caricare, puoi usare lo strumento supportato dalla comunità Trasferimento di animazioni Roblox per ricaricare le animazioni e mapparle sul loro vecchio AnimationIds sul loro nuovo corrispondente AnimationIds.
Prerequisiti
Prima di trasferire le tue animazioni, devi avere npx.npx ti consente di eseguire comandi da pacchetti senza dover installare tali pacchetti sul tuo sistema.Per controllare per npx , installa node.js e esegui npx –version in una finestra terminale.
Per maggiori informazioni sui requisiti, vedi il Roblox Animation Transfer README.
Mappa gli ID di animazione della mappa ai nomi
Se le tue animazioni vengono memorizzate come istanze di animazione sotto modelli di personaggio pre-preparati nella tua esperienza, puoi generare un file di testo per mappare il AnimationIds ai loro nomi corrispondenti.
In Roblox Studio, esegui lo script seguente. Studio produce il risultato come una singola lunga Stringa.
local Workspace = game:GetService("Workspace")local ANIMSTRING = ""for _, character in Workspace:GetChildren() doif not character:IsA("Model") thencontinueendlocal animations = character:FindFirstChild("Animations")if not animations thencontinueendfor _, animation in animations:GetChildren() dolocal animationId = string.match(animation.AnimationId, "%d+")if animationId thenANIMSTRING ..= (animationId .. " " .. character.Name .. "_" .. string.gsub(animation.Name, " ", "_") .. "\n")endendendprint(ANIMSTRING)Crea un nuovo file di testo sul tuo computer.
Incolla l'output della stringa da Studio nel file di testo.
Pulisci qualsiasi discrepanza come extra -Edit e -Studio righe che sono state aggiunte automaticamente al contenuto del file.
Sostituisci tutti gli spazi con gli underscore per limitare il numero di nomi moderati nell'insieme.
(Opzionale) Prepara file di testo
Roblox ha un limite di velocità interno per i caricamenti di animazioni.Lo strumento di trasferimento dell'animazione Roblox non rispetta questo limite di velocità, che può causare problemi durante il processo di trasferimento e rompere il tuo file finale di testo.Ad esempio, potresti trasferire 1200 animazioni ma finisci con solo 900 di esse e nessun modo di determinare quelle che non sono state trasferite.
Per assicurarti che il file finale non venga rotto, puoi:
- Dividi il file di testo in più file con fino a 200 animazioni in ciascuno.
- Usa lo strumento di trasferimento dell'animazione Roblox su ogni singolo file. Per prevenire qualsiasi problema di limite di velocità importante, attendi qualche minuto tra ogni batch.
Trasferimento delle animazioni
Dopo che i file di testo sono pronti, avvia il processo di trasferimento:
- Apri una finestra terminale.
- Esegui npx roblox-animation-transfer --inFile animations.txt --group YOUR_GROUP_ID --outFile newAnimations.txt.
- --inFile deve puntare al file con le animazioni che vuoi caricare.Questo file può essere il grande file di testo che hai inizialmente creato, o il primo di diversi file più piccoli se hai scelto di dividere il file più grande.
- --group deve puntare al GroupId del gruppo che riceve il trasferimento dell'animazione.Puoi trovare l'ID del gruppo nell'URL del gruppo sul sito Web di Roblox.
- --outFile deve puntare al file in cui vuoi mettere le nuove animazioni.
Se il processo di trasferimento ha successo, le animazioni in outFile sono elencate nello stesso ordine in cui sono state fornite in inFile .Se un certo numero di animazioni non riesce a trasferirsi, lo strumento tenta di trasferirle nuovamente; se questo secondo tentativo ha successo, queste animazioni vengono appuntate alla fine dell'elenco nel outFile .
Carica le animazioni durante l'esecuzione
Dopo aver trasferito le tue animazioni al nuovo proprietario del gruppo, devi scambiare le vecchie animazioni con le nuove animazioni.
In Studio, crea un modulo Animations in Studio.
Crea due moduli figli, uno corrispondente all'utente, o al proprietario originale, e l'altro corrispondente al Gruppo, o al nuovo proprietario.
Per evitare che l'esperienza si rompa se scegli di pubblicarla in un'altra posizione, esegui lo script seguente.Per impostazione predefinita, lo script restituisce le animazioni dell'utente.
local module = {}local GROUP_ID = 12345678local 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 thenreturn gameContext.Groupendreturn gameContext.Userendlocal animationMap = getAnimationMapForGameContext()function module.getAnimation(animName: string)return animationMap[animName]endreturn moduleTrasforma i file di testo generati in mappe di animazione in Studio.
- Sostituisci l'elenco delle animazioni all'interno della variabile animFileText con il contenuto del file di testo che vuoi trasformare in una mappa di animazione.
- Esegui lo script seguente per restituire una Stringa:
local animFileText = [[4215167 Animation_Name_16171235 Animation_Name_21251267 Animation_Name_3]]local function convertFileToAnimationMap(animFileText: string)local NEW_ANIMATION_MAP = ""local lines = string.split(animFileText, "\n")for _, line in lines dolocal components = string.split(line, " ")if #components ~= 2 thencontinueendlocal animationId = components[1]local animationName = components[2]NEW_ANIMATION_MAP = string.format("%s\t[\"%s\"] = \"rbxassetid://%s\",\n", NEW_ANIMATION_MAP, animationName, animationId)endreturn string.format("return {\n%s}", NEW_ANIMATION_MAP)endprint(convertFileToAnimationMap(animFileText))Crea un nuovo ModuleScript genitore al tuo modulo Animations.
Posiziona la stringa restituita animFileText all'interno del ModuleScript.
Aggiorna l'esperienza per ottenere tutte le animazioni attraverso il modulo Animations per eseguire il seguente script:
local Animations = require(PATH.TO.ANIMATIONS)local warriorWalk = Instance.new("Animation")warriorWalk.AnimationId = Animations.getAnimation("Warrior_Walk")