In Roblox sind Animationen für Erlebnisse gesperrt, die von Benutzern besessen werden, die auch diese Animationen besitzen.Um Animationen zu verhindern, wenn du deine Erfahrung auf eine Gruppe überträgst, musst du deine Animations-Assets dem neuen Eigentümerveröffentlichen.
Wenn du eine große Anzahl von Animationen zum hochladenhast, kannst du das von der Community unterstützte Tool Roblox-Animationsübertragung verwenden, um die Animationen erneut hochzuladen und ihre alten AnimationIds auf ihre neuen entsprechenden AnimationIds zu übertragen.
Vorbedingungen
Bevor du deine Animationen überträgst, musst du npx installiert haben.npx Lässt dich Befehle aus Paketen ausführen, ohne diese Pakete auf deinem System installieren zu müssen.Um nach npx zu suchen, installiere node.js und führe npx –version in einem Terminalfenster aus.
Für weitere Informationen zu Voraussetzungen siehe das Roblox Animation Transfer README.
Map AnimationIds auf Namen übertragen
Wenn deine Animationen als Animationselemente unter vorbereiteten Charaktermodellen in deiner Erlebnisgespeichert sind, kannst du eine Textdatei generieren, um die AnimationIds auf ihre entsprechenden Namen zu mappen.
Führen Sie in Roblox Studio das folgende Skript, das. PL: die Skriptsaus. Studio gibt das Ergebnis als eine einzige lange Stringaus.
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)Erstelle eine neue Textdatei auf deinem Computer.
Füge die Stringausgabe durch Studio in die Textdatei ein.
Beseitige Diskrepanzen wie zusätzliche -Edit- und -Studio-Zeichen, die automatisch zum Inhalt der Datei hinzugefügt wurden.
Ersetze alle Räume durch Unterstriche, um die Gesamtzahl der moderierten Namen insgesamt zu begrenzen.
(Optional) Vorbereiten von Textdateien
Roblox hat ein internes Rate-Limit für Animations-Uploads.Das Roblox-Animationsübertragungswerkzeug respektiert diese Geschwindigkeitsgrenze nicht, was Probleme während des Übertragungsprozesses verursachen und deine endgültige Textdatei beschädigen kann.Zum Beispiel könnten Sie 1200 Animationen übertragen, aber am Ende nur 900 davon und keine Möglichkeit haben, festzustellen, welche nicht übertragen wurden.
Um sicherzustellen, dass die endgültige Datei nicht beschädigt wird, können Sie:
- Teile deine Textdatei in mehrere Dateien mit bis zu 200 Animationen in jeder auf.
- Verwende das Roblox-Animationsübertragungswerkzeug auf jede einzelne Datei. Um größere Geschwindigkeitsbeschränkungsprobleme zu vermeiden, warte ein paar Minuten zwischen jedem Batch.
Animationen übertragen
Nachdem deine Textdateien bereit sind, starte den Übertragungsprozess:
- Öffne ein Terminalfenster.
- Laufen npx roblox-animation-transfer --inFile animations.txt --group YOUR_GROUP_ID --outFile newAnimations.txt .
- --inFile muss auf die Datei mit den Animationen zeigen, die du hochladen möchtest.Diese Datei kann entweder die große Textdatei sein, die du zuerst erstellt hast, oder die erste von mehreren kleineren Dateien, wenn du dich dafür entscheidest, die größere Datei aufzuteilen.
- --group muss auf die GroupId der Gruppe zeigen, die die Animationsübertragung empfängt.Du kannst die Gruppen-ID in der URL der Gruppe auf der Roblox-Website finden.
- --outFile muss auf die datei zeigen, in die du die neuen animationen einfügen möchtest.
Wenn der Übertragungsprozess erfolgreich ist, werden die Animationen in der outFile in der gleichen Reihenfolge aufgelistet, in der sie im inFile bereitgestellt wurden.Wenn mehrere Animationen nicht übertragen werden, versucht das Tool, sie erneut zu übertragen; wenn dieser zweite Versuch erfolgreich ist, werden diese Animationen am Ende der Liste in der outFile angehängt.
Lade Animationen zur Laufzeit
Nach dem Versenden deiner Animationen an den neuen Eigentümermusst du die alten Animationen gegen die neuen Animationen tauschen.
Erstelle im Studio ein Animations-Modul.
Erstelle zwei Kindermodule, eines entspricht dem Benutzer, oder dem ursprünglichen Eigentümer, und das andere entspricht der Gruppe oder dem neuen Eigentümer.
Um das Erlebnis zu verhindern, wenn du es an einen anderen Ort veröffentlichen möchtest, führe das folgende Skript, das. PL: die Skriptsaus.Standardmäßig gibt das Skript die Animationen des Benutzers zurück.
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 moduleWandle die generierten Textdateien in Animationen-Karten im Studio um.
- Ersetze die Animationsliste innerhalb der animFileText Variable durch den Inhalt der Textdatei, die du in eine Animationskarte umwandeln möchtest.
- Führen Sie das folgende Skript aus, um eine Stringzurückzugeben:
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))Erstellen Sie einen neuen Eltern-Elternteil für Ihr Modul>.
Platziere den zurückgegebenen animFileText -Schnur innerhalb des ModuleScript.
Aktualisieren Sie das Erlebnis, um alle Animationen durch das Animations-Modul zu verzeichnen, indem Sie das folgende Skript, das. PL: die Skriptsausführen:
local Animations = require(PATH.TO.ANIMATIONS)local warriorWalk = Instance.new("Animation")warriorWalk.AnimationId = Animations.getAnimation("Warrior_Walk")