W Roblox animacje są zablokowane dla doświadczeń posiadanych przez użytkowników, którzy również posiadają te animacje.Aby zapobiec przerwaniu animacji, gdy przeniesiesz swoje doświadczenie do grupa, musisz opublikować zasoby animacji do nowego właściciela grupy doświadczeń.
Jeśli masz dużą liczbę animacji do przesyłać, możesz użyć narzędzia wspieranego przez społeczność Przeniesienie animacji Roblox, aby ponownie przesłać animacje i przypisać ich stare AnimationIds do nowego odpowiedniego AnimationIds.
Przewymagania
Zanim przeniesiesz swoje animacje, musisz mieć npx zainstalowane.npx pozwala uruchamiać komendy z pakietów bez konieczności instalowania tych pakietów na swoim systemie.Aby sprawdzić npx, zainstaluj node.js i uruchom npx –version w oknie terminalowym.
Aby uzyskać więcej informacji o wymaganiach, zobacz Roblox Animation Transfer README.
Mapuj animacje ID do nazw
Jeśli twoje animacje są przechowywane jako instancje animacji w ramach wcześniej przygotowanych modeli postaci w twoim doświadczeniu, możesz wygenerować plik tekstowy, aby przekazać AnimationIds do ich odpowiednich nazw.
W Roblox Studio uruchom następujący skrypt. Studio wyświetla wynik jako pojedynczą długą ciąg.
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)Stwórz nowy plik tekstowy na swoim komputerze.
Wklej wyjście ciągu przez Studio do pliku tekstowego.
Wyczyść wszelkie rozbieżności, takie jak dodatkowe -Edit i -Studio linie, które zostały automatycznie dodane do zawartości pliku.
Zastąp wszystkie spacje podświetleniami, aby ograniczyć ogólną liczbę nazw moderowanych.
(Opcjonalnie) Przygotuj pliki tekstowe
Roblox ma wewnętrzną ograniczoną prędkość dla przesyłania animacji.Narzędzie transferu animacji Roblox nie respektuje tego limitu szybkości, co może powodować problemy podczas procesu transferu i zniszczyć twój ostateczny plik tekstowy.Na przykład możesz przesłać 1200 animacji, ale skończy się tylko 900 z nich i nie ma sposobu określenia, które nie udało się przesłać.
Aby upewnić się, że ostateczny plik nie zostanie zniszczony, możesz:
- Podziel plik tekstowy na wiele plików z maksymalnie 200 animacjami w każdym.
- Użyj narzędzia do przenoszenia animacji Roblox na każdą pojedynczą plik. Aby zapobiec jakimkolwiek poważnym problemom z ograniczeniem szybkości, poczekaj kilka minut pomiędzy każdą partią.
Animacje transferowe
Po zakończeniu przygotowania plików tekstowych rozpocznij proces transferu:
- Otwórz okno terminalowe.
- Wykonaj npx roblox-animation-transfer --inFile animations.txt --group YOUR_GROUP_ID --outFile newAnimations.txt.
- --inFile musi wskazać na plik z animacjami, które chcesz przesyłać.Plik ten może być dużym plikiem tekstowym, który pierwotnie utworzyłeś, lub pierwszą z kilku mniejszych plików, jeśli zdecydujesz się złamać większy plik.
- --group musi wskazać na GroupId grupę otrzymującą transfer animacji.Możesz znaleźć ID grupy w URL grupy na stronie internetowej Roblox.
- --outFile musi wskazać na plik, do którego chcesz umieścić nowe animacje.
Jeśli proces transferu zakończy się sukcesem, animacje w outFile są wymienione w tej samej kolejności, w jakiej zostały dostarczone w inFile.Jeśli wiele animacji nie zostanie przeniesionych, narzędzie próbuje je ponownie przesłać; jeśli ta druga próba zakończy się sukcesem, animacje te zostaną dodane na końcu listy w outFile.
Ładowanie animacji podczas uruchamiania
Po przekazaniu animacji nowemu właścicielowi grupy musisz zamienić stare animacje na nowe animacje.
W Studio utwórz moduł Animations .
Stwórz dwa moduły dziecięce, jeden odpowiadający użytkownikowi, lub oryginalnemu właścicielowi, a drugi odpowiadający grupalub nowemu właścicielowi.
Aby zapobiec przerwaniu doświadczenia, jeśli zdecydujesz się opublikować je w innym miejscu, uruchom następujący skrypt.Domyślnie skrypt zwraca animacje użytkownika.
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 modulePrzekształć generowane pliki tekstowe w mapy animacji w Studio.
- Zastąp listę animacji w zmiennej animFileText przez zawartość pliku tekstowego, który chcesz zmienić na mapę animacji.
- Wykonaj następny skrypt, aby zwrócić ciąg znaków:
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))Stwórz nowy ModuleScript rodzica dla twojego modułu Animations.
Umieść zwróconą strunę animFileText wewnątrz ModuleScript.
Aktualizuj doświadczenie, aby zgromadzić wszystkie animacje za pośrednictwem modułu Animations poprzez uruchomienie następującego skryptu:
local Animations = require(PATH.TO.ANIMATIONS)local warriorWalk = Instance.new("Animation")warriorWalk.AnimationId = Animations.getAnimation("Warrior_Walk")