No Roblox, as animações são bloqueadas para experiências de propriedade de usuários que também possuem essas animações.Para evitar que as animações quebrem quando você transferir sua experiência para um grupo, você deve publicar seus recursos de animação para o novo Proprietáriodo grupo de experiência.
Se você tiver um grande número de animações para fazer upload/enviar, você pode usar a ferramenta suportada pela comunidade Transferência de Animações Roblox para re-carregar as animações e mapear seu antigo AnimationIds para o seu novo correspondente AnimationIds.
Requisitos Prévios
Antes de transferir suas animações, você deve ter npx.npx Permite que você execute comandos de pacotes sem precisar instalar esses pacotes em seu sistema.Para verificar por npx, instale node.js e execute npx –version em uma janela de terminal.
Para mais informações sobre pré-requisitos, veja o Roblox Animation Transfer README.
Mapear IDs de Animação de Mapa para nomes
Se suas animações forem armazenadas como instâncias de animação sob modelos de personagem pré-preparados em sua experiência, você pode gerar um arquivo de texto para mapear o AnimationIds para seus nomes correspondentes.
No Roblox Studio, execute o seguinte script. O Studio exibe o resultado como uma única longa string / cadeia / texto.
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)Crie um novo arquivo de texto no seu computador.
Cole o resultado da string pelo Studio no arquivo de texto.
Limpe quaisquer discrepâncias como extra -Edit e -Studio strings que foram adicionadas automaticamente ao conteúdo do arquivo.
Substitua todos os espaços por sinais de sublinhado para limitar o número de nomes moderados no geral.
(Opcional) Prepare arquivos de texto
O Roblox tem um limite interno de taxa para carregamentos de animação.A ferramenta de transferência de animação Roblox não respeita esse limite de taxa, o que pode causar problemas durante o processo de transferência e quebrar seu arquivo final de texto.Por exemplo, você pode transferir 1200 animações, mas acaba com apenas 900 delas e sem maneira de determinar quais não foram transferidas.
Para garantir que o arquivo final não quebre, você pode:
- Divida seu arquivo de texto em vários arquivos com até 200 animações em cada um.
- Use a ferramenta de transferência de animação Roblox em cada arquivo individual. Para evitar quaisquer problemas importantes de limite de taxa, espere alguns minutos entre cada lote.
Animações de Transferência
Depois que seus arquivos de texto estiverem prontos, inicie o processo de transferência:
- Abra uma janela de terminal.
- Execute npx roblox-animation-transfer --inFile animations.txt --group YOUR_GROUP_ID --outFile newAnimations.txt .
- --inFile deve apontar para o arquivo com as animações que você deseja fazer upload/enviar.Este arquivo pode ser o arquivo de texto grande que você criou inicialmente ou o primeiro de vários arquivos menores se você optou por dividir o arquivo maior.
- --group deve apontar para o GroupId do grupo que recebe a transferência de animação.Você pode encontrar o ID do grupo na URL do grupo no site do Roblox.
- --outFile deve apontar para o arquivo em que você deseja colocar as novas animações.
Se o processo de transferência for bem-sucedido, as animações no outFile são listadas na mesma ordem em que foram fornecidas no inFile .Se uma série de animações não conseguir transferir, a ferramenta tenta transferi-las novamente; se essa segunda tentativa for bem-sucedida, essas animações são anexadas ao final da lista no outFile .
Carregar animações na hora de tempo de execução
Depois de transferir suas animações para o novo Proprietáriodo grupo, você deve trocar as animações antigas pelas novas animações.
No Studio, crie um módulo Animations na sala.
Crie dois módulos filhos, um correspondente ao usuário, ou ao Proprietáriooriginal, e o outro correspondente ao grupo, ou ao novo Proprietário.
Para evitar que a experiência quebre se você optar por publicá-la em outro local, execute o seguinte script.Por padrão, o script retorna as animações do usuário.
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 moduleTransforme os arquivos de texto gerados em mapas de animação no Studio.
- Substitua a lista de animações dentro da variável animFileText com o conteúdo do arquivo de texto que você deseja transformar em um mapa de animações.
- Execute o seguinte script para retornar uma string / cadeia / texto:
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))Crie um novo ModuleScript pai para o seu módulo Animations.
Coloque a string retornada animFileText dentro do ModuleScript.
Atualize a experiência para obter todas as animações através do módulo Animations ativando o seguinte script:
local Animations = require(PATH.TO.ANIMATIONS)local warriorWalk = Instance.new("Animation")warriorWalk.AnimationId = Animations.getAnimation("Warrior_Walk")