Transfer animasi

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Di Roblox, animasi dikunci untuk pengalaman yang dimiliki oleh pengguna yang juga memiliki animasi tersebut.Untuk mencegah animasi rusak saat Anda mentransfer pengalaman Anda ke grup, Anda harus mempublikasikan aset animasi Anda ke pemilik grup pengalaman baru.

Jika Anda memiliki banyak animasi untuk upload, Anda dapat menggunakan alat dukungan komunitas Transfer Animasi Roblox untuk mengunggah ulang animasi dan mengidentifikasi peta lama mereka ke yang baru sesuai.

Prasyarat

Sebelum mentransfer animasi Anda, Anda harus memiliki npx diinstal. npx memungkinkan Anda menjalankan perintah dari paket tanpa harus menginstal paket tersebut di sistem Anda.Untuk memeriksa npx , instal node.js dan jalankan npx –version di jendela terminal.

Untuk informasi lebih lanjut tentang prasyarat, lihat Roblox Animation Transfer README.

Map AnimationIds ke nama

Jika animasi Anda disimpan sebagai instansi Animasi di bawah model Karakter yang dipersiapkan sebelumnya dalam pengalaman Anda, Anda dapat menghasilkan file teks untuk menggambarkan AnimationIds ke nama yang sesuai.

  1. Di Roblox Studio, jalankan skrip berikut. Studio menghasilkan hasil sebagai satu string panjang.


    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. Buat file teks baru di komputer Anda.

  3. Tempelkan output string oleh Studio ke file teks.

  4. Bersihkan ketidakcocokan seperti ekstra -Edit dan -Studio string yang telah ditambahkan secara otomatis ke konten file.

  5. Ganti semua ruang dengan garis bawah untuk membatasi jumlah nama yang disensor secara keseluruhan.

(Opsi) Siapkan file teks

Roblox memiliki batas tingkat internal untuk unggahan animasi.Alat Transfer Animasi Roblox tidak menghormati batas tingkat ini, yang dapat menyebabkan masalah selama proses transfer dan memecahkan file teks akhir Anda.Sebagai contoh, Anda mungkin mentransfer 1200 animasi tetapi akhirnya hanya 900 dari mereka dan tidak ada cara untuk menentukan mana yang gagal mentransfer.

Untuk memastikan file akhir tidak rusak, Anda dapat:

  1. Bagi file teks Anda menjadi beberapa file dengan hingga 200 animasi di masing-masing.
  2. Gunakan alat Transfer Animasi Roblox pada setiap file individu. Untuk mencegah masalah batasan tingkat utama, tunggu beberapa menit di antara setiap batch.

Transfer Animasi

Setelah file teks Anda siap, mulai proses transfer:

  1. Buka jendela terminal.
  2. Jalankan npx roblox-animation-transfer --inFile animations.txt --group YOUR_GROUP_ID --outFile newAnimations.txt .
    • --inFile harus menunjuk ke file dengan animasi yang ingin Anda upload.File ini bisa menjadi file teks besar yang awalnya Anda buat, atau yang pertama dari beberapa file lebih kecil jika Anda memilih untuk memecah file yang lebih besar.
    • --group harus menunjuk ke GroupId kelompok yang menerima transfer animasi.Anda dapat menemukan ID grup di URL grup di situs web Roblox.
    • --outFile harus menunjuk ke file yang ingin anda letakkan animasi baru di dalamnya.

Jika proses transfer berhasil, animasi di outFile terdaftar dalam urutan yang sama dengan yang disediakan di inFile .Jika beberapa animasi gagal mentransfer, alat mencoba mentransfernya lagi; jika upaya kedua ini berhasil, animasi ini ditambahkan ke akhir daftar di outFile .

Memuat animasi saat runtime

Setelah mentransfer animasi Anda ke pemilik grup baru, Anda harus menukar animasi lama untuk animasi baru.

  1. Di Studio, buat modul Animations di dalam studio.

  2. Buat dua modul anak, satu sesuai dengan pengguna, atau pemilik asli, dan yang lain sesuai dengan grup, atau pemilik baru.

  3. Untuk mencegah pengalaman rusak jika Anda memilih untuk mempublikasikannya ke lokasi lain, jalankan skrip berikut.Secara default, skrip mem返回 animasi pengguna.


    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. Ubah file teks yang dihasilkan menjadi peta animasi di Studio.

    1. Ganti daftar animasi di dalam variabel animFileText dengan konten file teks yang ingin Anda ubah menjadi peta animasi.
    2. Jalankan skrip berikut untuk mengembalikan string:

    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. Buat orangtua baru ModuleScript ke modul Animations Anda.

  6. Letakkan string yang dikembalikan animFileText di dalam ModuleScript .

  7. Perbarui pengalaman untuk menyediakan semua animasi melalui modul Animations dengan menjalankan skrip berikut:


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