ใน Roblox แอนิเมชั่นถูกล็อคไว้กับประสบการณ์ที่เป็นเจ้าของโดยผู้ใช้ที่เป็นเจ้าของแอนิเมชั่นเหล่านั้นด้วยเพื่อป้องกันการแตกของแอนิเมชั่นเมื่อคุณโอนประสบการณ์ไปยังกลุ่ม คุณต้องเผยแพร่ทรัพยากรแอนิเมชั่นของคุณไปยังเจ้าของกลุ่มประสบการณ์ใหม่
หากคุณมีจำนวนภาพเคลื่อนไหวจำนวนมากที่จะอัปโหลด คุณสามารถใช้เครื่องมือที่สนับสนุนชุมชน การโอนภาพเคลื่อนไหว Roblox เพื่อรีอัปโหลดภาพและแผนที่เก่าของพวกเขาไปยังโปรไฟล์ใหม่ของพวกเขา
ข้อกําหนดเบื้องต้น
ก่อนโอนแอนิเมชั่นของคุณคุณต้องมี npx ติดตั้งแล้วnpx ช่วยให้คุณสามารถดําเนินการตามคําสั่งจากแพคเกจโดยไม่ต้องติดตั้งแพคเกจเหล่านั้นบนระบบของคุณเพื่อตรวจสอบสําหรับ npx ติดตั้ง node.js และดําเนินการ npx –version ในหน้าต่างเทอร์มินัล
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับข้อกําหนดเบื้องต้น ดูที่ Roblox Animation Transfer README
แมพ AnimationIds เป็นชื่อ
หากแอนิเมชั่นของคุณถูกจัดเก็บเป็นตัวอย่างแอนิเมชั่นภายใต้โมเดลตัวละครที่เตรียมไว้ล่วงหน้าในประสบการณ์ของคุณ คุณสามารถสร้างไฟล์ข้อความเพื่อแผนที่ AnimationIds ไปยังชื่อที่ตรงกันได้
ใน Roblox Studio ให้รันสคริปต์ต่อไปนี้ Studio สตริง
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)สร้างไฟล์ข้อความใหม่บนคอมพิวเตอร์
วางการออกข้อความโดย Studio ลงในไฟล์ข้อความ
ลบความแตกต่างใดๆ เช่น เพิ่มเติม -Edit และ -Studio สตริงที่ถูกเพิ่มโดยอัตโนมัติในเนื้อหาไฟล์
เปลี่ยนพื้นที่ทั้งหมดเป็นขีดเส้นใต้เพื่อจำกัดจำนวนชื่อที่ได้รับการกลั่นกรองโดยรวม
(ตัวเลือก) เตรียมไฟล์ข้อความ
Roblox มีขีดจํากัดอัตราภายในสำหรับการอัปโหลดแอนิเมชั่นเครื่องมือโอนแอนิเมชั่น Roblox ไม่เคารพขีดจํากัดอัตรานี้ซึ่งอาจทําให้เกิดปัญหาระหว่างกระบวนการโอนและทําลายไฟล์ข้อความสุดท้ายของคุณตัวอย่างเช่น คุณอาจโอนแอนิเมชัน 1,200 รายการ แต่สุดท้ายก็จบลงที่เพียง 900 รายการและไม่มีวิธีการกำหนดว่าแอนิเมชันใดล้มเหลวในการโอน
เพื่อให้แน่ใจว่าไฟล์สุดท้ายไม่แตก คุณสามารถ:
- แยกไฟล์ข้อความของคุณเป็นหลายไฟล์ด้วยแอนิเมชันสูงสุด 200 รายการในแต่ละไฟล์
- ใช้เครื่องมือโอนแอนิเมชัน Roblox สำหรับแต่ละไฟล์ เพื่อป้องกันปัญหาขีดจํากัดอัตราใดๆ รอไม่กี่นาทีระหว่างแต่ละชุด
โอนแอนิเมชั่น
เมื่อไฟล์ข้อความของคุณพร้อมแล้ว เริ่มต้นกระบวนการโอน:
- เปิดหน้าต่างเทอร์มินัล
- ดำเนินการ npx roblox-animation-transfer --inFile animations.txt --group YOUR_GROUP_ID --outFile newAnimations.txt .
- --inFile ต้องชี้ไปที่ไฟล์ที่มีแอนิเมชั่นที่คุณต้องการอัปโหลดไฟล์นี้อาจเป็นไฟล์ข้อความขนาดใหญ่ที่คุณสร้างเดิม หรือไฟล์ขนาดเล็กแรกหากคุณเลือกที่จะแยกไฟล์ขนาดใหญ่ลง
- --group ต้องชี้ไปที่ GroupId ของกลุ่มที่ได้รับการโอนภาพเคลื่อนไหวคุณสามารถค้นหา ID กลุ่มใน URL ของกลุ่มบนเว็บไซต์ Roblox ได้
- --outFile ต้องชี้ไปที่ไฟล์ที่คุณต้องการใส่แอนิเมชั่นใหม่
หากกระบวนการโอนสําเร็จ แอนิเมชั่นใน outFile จะระบุในลําดับเดียวกับที่พวกเขาได้รับใน inFileหากจำนวนแอนิเมชั่นไม่สามารถโอนได้ เครื่องมือจะพยายามโอนพวกเขาอีกครั้ง; หากความพยายามครั้งที่สองประสบความสำเร็จ แอนิเมชั่นเหล่านี้จะถูกเพิ่มลงในท้ายของรายการใน outFile
โหลดแอนิเมชันในระหว่างเวลาทำงาน
หลังจากโอนแอนิเมชั่นไปยังเจ้าของกลุ่มใหม่แล้ว คุณต้องแลกแอนิเมชั่นเก่าเป็นแอนิเมชันใหม่
ในสตูดิโอ สร้างโมดูล Animations
สร้างสองโมดูลลูก โมดูลหนึ่งตรงกับผู้ใช้หรือเจ้าของเดิม และอีกโมดูลหนึ่งตรงกับกลุ่มหรือเจ้าของใหม่
เพื่อป้องกันไม่ให้ประสบการณ์พังถล่มหากคุณเลือกที่จะเผยแพร่ไปยังสถานที่อื่น ให้ดำเนินการตามสคริปต์ต่อไปนี้โดยค่าเริ่มต้นสคริปต์จะส่งคืนแอนิเมชั่นของผู้ใช้
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 moduleเปลี่ยนไฟล์ข้อความที่สร้างขึ้นเป็นแผนที่แอนิเมชันใน Studio
- เปลี่ยนรายการแอนิเมชั่นภายในตัวแปร animFileText ด้วยเนื้อหาของไฟล์ข้อความที่คุณต้องการเปลี่ยนเป็นแผนที่แอนิเมชั่น
- รันสคริปต์ต่อไปนี้เพื่อคืนค่าสตริง:
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))สร้างพ่อแม่ใหม่ ModuleScript ให้กับโมดูล Animations ของคุณ
วางสตริงที่คืนกลับ animFileText ภายใน ModuleScript
อัปเดตประสบการณ์เพื่อรวบรวมแอนิเมชั่นทั้งหมดผ่านโมดูล Animations โดยการดำเนินการตามสคริปต์ต่อไปนี้:
local Animations = require(PATH.TO.ANIMATIONS)local warriorWalk = Instance.new("Animation")warriorWalk.AnimationId = Animations.getAnimation("Warrior_Walk")