Transfer animasyonları

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Roblox'ta, animasyonlar bu animasyonlara sahip kullanıcıların sahip olduğu deneyimlere kilitlenir.Deneyiminizi bir grupaktardığınızda animasyonların kırılmasını önlemek için, animasyon varlıklarınızı yeni deneyim grubu sahibine yayınlamanız gerekir.

Yükleme için çok sayıda animasyonunuz varsa, topluluk tarafından desteklenen araç Roblox Animasyon Transferi kullanarak animasyonları yeniden yükleyebilir ve eski AnimationIds 'larını yeni karşılıklı AnimationIds 'lara yerleştirebilirsiniz.

Gereksinimler

Animasyonlarınızı aktarmadan önce, npx yüklü olmalıdır.npx paketleri sisteminize yükleme zorunluluğu olmadan paketlerden komutlar çalıştırmanıza izin verir.npx kontrol etmek için, node.js yükle ve bir terminal penceresinde npx –version çalıştır.

Gereksinimler hakkında daha fazla bilgi için, Roblox Animasyon Transferi README 'ye bakın.

Harita Animasyon ID'lerini isimlere yönlendir

Animasyonlarınız deneyiminizde önceden hazırlanmış Karakter modelleri altında Animasyon örnekleri olarak depolanıyorsa, AnimationIds 'yi karşılık gelen isimlere haritalamak için bir metin dosyası oluşturabilirsiniz.

  1. Roblox Studio'da aşağıdaki kodu çalıştırın. Stüdyo, sonucu tek bir uzun diziolarak çıkarır.


    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. Bilgisayarınızda yeni bir metin dosyası oluşturun.

  3. Studio tarafından üretilen dize çıkısını metin dosyasına yapıştırın.

  4. Dosya içeriğine otomatik olarak eklenen ekstra -Edit ve -Studio dize gibi farklılıkları temizleyin.

  5. Genel olarak moderasyonlu isim sayısını sınırlandırmak için tüm alanları alt çizgilerle değiştirin.

(Opsiyonel) Metin dosyaları hazırlayın

Roblox, animasyon yüklemeleri için iç bir oran sınırına sahiptir.Roblox Animasyon Transfer aracı bu oran sınırına saygı göstermiyor ve transfer sırasında sorunlara neden olabilir ve son metin dosyanızı kırabilir.Örneğin, 1200 animasyon transfer edebilirsiniz, ancak bunlardan sadece 900'i alır ve hangilerinin transfer edilmediğini belirleme yolunuz yoktur.

Son dosyanın bozulmadığından emin olmak için, şunları yapabilirsiniz:

  1. Metin dosyanızı her biri 200 animasyona kadar olan birden fazla dosyaya bölün
  2. Her bir dosyada Roblox Animasyon Transfer aracını kullanın. Herhangi bir önemli oran sınırı sorununu önlemek için, her dönüşüm arasında birkaç dakika bekleyin.

Transfer Animasyonları

Metin dosyalarınız hazır olduktan sonra, transfer sürecini başlatın:

  1. Bir terminal penceresi açın.
  2. npx roblox-animation-transfer --inFile animations.txt --group YOUR_GROUP_ID --outFile newAnimations.txt.
    • --inFile yüklemek istediğiniz animasyonlarla birlikte dosyaya işaret etmelidir.Bu dosya, başlangıçta oluşturduğunuz büyük metin dosyası veya daha büyük dosyayı parçalamayı seçtiğiniz takdirde birkaç daha küçük dosyanın ilki olabilir.
    • --group , animasyon transferini alan grubun GroupId 'una işaret etmelidir.Roblox web sitesindeki grubun URL'sinde grup kimliğini bulabilirsiniz.
    • --outFile yeni animasyonları yerleştirmek istediğiniz dosyaya işaret etmelidir.

Transfer süreci başarılı olursa, outFile 'deki animasyonların sağlandığı aynı sırayla listelenir inFile.Bir dizi animasyon aktarılamıyorsa, aracı yeniden aktarmaya çalışır; bu ikinci deneme başarılı olursa, bu animasyonlar outFile listesinin sonuna eklenir.

Çalışma sırasında animasyonları yükle

Animasyonlarınızı yeni grup sahibine aktardıktan sonra, eski animasyonları yeni animasyonlar için değiştirmelisiniz.

  1. Stüdyoda, bir Animations modülü oluşturun.

  2. Kullanıcıya, veya orijinal sahibine karşılık gelen iki çocuk modül oluşturun ve diğeri grupveya yeni sahibe karşılık gelsin.

  3. Deneyimi başka bir konuma yayınlamayı seçtiğinizde deneyimin kırılmasını önlemek için aşağıdaki kodu çalıştırın.Varsayılan olarak, senaryo kullanıcının animasyonlarını döndürür.


    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. Oluşturulan metin dosyalarını Studio'da animasyon haritalarına dönüştürün.

    1. Animasyon listesini animFileText değiştirmek istediğiniz metin dosyasının içeriğiyle değiştirin animasyon haritasına dönüştürmek istediğiniz.
    2. Bir dizidöndürmek için aşağıdaki kodu çalıştırın:

    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. Yeni bir ModuleScript ebeveynli modül oluşturun Animations modülünüze.

  6. Geri döndürülen animFileText dizeyi ModuleScript içine yerleştirin.

  7. Deneyimi güncelle ve tüm animasyonları Animations modülü aracılığıyla kaynağa aktarmak için aşağıdaki kodu çalıştır:


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