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.
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() 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)Bilgisayarınızda yeni bir metin dosyası oluşturun.
Studio tarafından üretilen dize çıkısını metin dosyasına yapıştırın.
Dosya içeriğine otomatik olarak eklenen ekstra -Edit ve -Studio dize gibi farklılıkları temizleyin.
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:
- Metin dosyanızı her biri 200 animasyona kadar olan birden fazla dosyaya bölün
- 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:
- Bir terminal penceresi açın.
- 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.
Stüdyoda, bir Animations modülü oluşturun.
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.
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 = 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 moduleOluşturulan metin dosyalarını Studio'da animasyon haritalarına dönüştürün.
- 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.
- Bir dizidöndürmek için aşağıdaki kodu çalıştırın:
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))Yeni bir ModuleScript ebeveynli modül oluşturun Animations modülünüze.
Geri döndürülen animFileText dizeyi ModuleScript içine yerleştirin.
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")