โอนแอนิเมชั่น

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

ใน Roblox แอนิเมชั่นถูกล็อคไว้กับประสบการณ์ที่เป็นเจ้าของโดยผู้ใช้ที่เป็นเจ้าของแอนิเมชั่นเหล่านั้นด้วยเพื่อป้องกันการแตกของแอนิเมชั่นเมื่อคุณโอนประสบการณ์ไปยังกลุ่ม คุณต้องเผยแพร่ทรัพยากรแอนิเมชั่นของคุณไปยังเจ้าของกลุ่มประสบการณ์ใหม่

หากคุณมีจำนวนภาพเคลื่อนไหวจำนวนมากที่จะอัปโหลด คุณสามารถใช้เครื่องมือที่สนับสนุนชุมชน การโอนภาพเคลื่อนไหว Roblox เพื่อรีอัปโหลดภาพและแผนที่เก่าของพวกเขาไปยังโปรไฟล์ใหม่ของพวกเขา

ข้อกําหนดเบื้องต้น

ก่อนโอนแอนิเมชั่นของคุณคุณต้องมี npx ติดตั้งแล้วnpx ช่วยให้คุณสามารถดําเนินการตามคําสั่งจากแพคเกจโดยไม่ต้องติดตั้งแพคเกจเหล่านั้นบนระบบของคุณเพื่อตรวจสอบสําหรับ npx ติดตั้ง node.js และดําเนินการ npx –version ในหน้าต่างเทอร์มินัล

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับข้อกําหนดเบื้องต้น ดูที่ Roblox Animation Transfer README

แมพ AnimationIds เป็นชื่อ

หากแอนิเมชั่นของคุณถูกจัดเก็บเป็นตัวอย่างแอนิเมชั่นภายใต้โมเดลตัวละครที่เตรียมไว้ล่วงหน้าในประสบการณ์ของคุณ คุณสามารถสร้างไฟล์ข้อความเพื่อแผนที่ AnimationIds ไปยังชื่อที่ตรงกันได้

  1. ใน Roblox Studio ให้รันสคริปต์ต่อไปนี้ Studio สตริง


    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. สร้างไฟล์ข้อความใหม่บนคอมพิวเตอร์

  3. วางการออกข้อความโดย Studio ลงในไฟล์ข้อความ

  4. ลบความแตกต่างใดๆ เช่น เพิ่มเติม -Edit และ -Studio สตริงที่ถูกเพิ่มโดยอัตโนมัติในเนื้อหาไฟล์

  5. เปลี่ยนพื้นที่ทั้งหมดเป็นขีดเส้นใต้เพื่อจำกัดจำนวนชื่อที่ได้รับการกลั่นกรองโดยรวม

(ตัวเลือก) เตรียมไฟล์ข้อความ

Roblox มีขีดจํากัดอัตราภายในสำหรับการอัปโหลดแอนิเมชั่นเครื่องมือโอนแอนิเมชั่น Roblox ไม่เคารพขีดจํากัดอัตรานี้ซึ่งอาจทําให้เกิดปัญหาระหว่างกระบวนการโอนและทําลายไฟล์ข้อความสุดท้ายของคุณตัวอย่างเช่น คุณอาจโอนแอนิเมชัน 1,200 รายการ แต่สุดท้ายก็จบลงที่เพียง 900 รายการและไม่มีวิธีการกำหนดว่าแอนิเมชันใดล้มเหลวในการโอน

เพื่อให้แน่ใจว่าไฟล์สุดท้ายไม่แตก คุณสามารถ:

  1. แยกไฟล์ข้อความของคุณเป็นหลายไฟล์ด้วยแอนิเมชันสูงสุด 200 รายการในแต่ละไฟล์
  2. ใช้เครื่องมือโอนแอนิเมชัน Roblox สำหรับแต่ละไฟล์ เพื่อป้องกันปัญหาขีดจํากัดอัตราใดๆ รอไม่กี่นาทีระหว่างแต่ละชุด

โอนแอนิเมชั่น

เมื่อไฟล์ข้อความของคุณพร้อมแล้ว เริ่มต้นกระบวนการโอน:

  1. เปิดหน้าต่างเทอร์มินัล
  2. ดำเนินการ npx roblox-animation-transfer --inFile animations.txt --group YOUR_GROUP_ID --outFile newAnimations.txt .
    • --inFile ต้องชี้ไปที่ไฟล์ที่มีแอนิเมชั่นที่คุณต้องการอัปโหลดไฟล์นี้อาจเป็นไฟล์ข้อความขนาดใหญ่ที่คุณสร้างเดิม หรือไฟล์ขนาดเล็กแรกหากคุณเลือกที่จะแยกไฟล์ขนาดใหญ่ลง
    • --group ต้องชี้ไปที่ GroupId ของกลุ่มที่ได้รับการโอนภาพเคลื่อนไหวคุณสามารถค้นหา ID กลุ่มใน URL ของกลุ่มบนเว็บไซต์ Roblox ได้
    • --outFile ต้องชี้ไปที่ไฟล์ที่คุณต้องการใส่แอนิเมชั่นใหม่

หากกระบวนการโอนสําเร็จ แอนิเมชั่นใน outFile จะระบุในลําดับเดียวกับที่พวกเขาได้รับใน inFileหากจำนวนแอนิเมชั่นไม่สามารถโอนได้ เครื่องมือจะพยายามโอนพวกเขาอีกครั้ง; หากความพยายามครั้งที่สองประสบความสำเร็จ แอนิเมชั่นเหล่านี้จะถูกเพิ่มลงในท้ายของรายการใน outFile

โหลดแอนิเมชันในระหว่างเวลาทำงาน

หลังจากโอนแอนิเมชั่นไปยังเจ้าของกลุ่มใหม่แล้ว คุณต้องแลกแอนิเมชั่นเก่าเป็นแอนิเมชันใหม่

  1. ในสตูดิโอ สร้างโมดูล Animations

  2. สร้างสองโมดูลลูก โมดูลหนึ่งตรงกับผู้ใช้หรือเจ้าของเดิม และอีกโมดูลหนึ่งตรงกับกลุ่มหรือเจ้าของใหม่

  3. เพื่อป้องกันไม่ให้ประสบการณ์พังถล่มหากคุณเลือกที่จะเผยแพร่ไปยังสถานที่อื่น ให้ดำเนินการตามสคริปต์ต่อไปนี้โดยค่าเริ่มต้นสคริปต์จะส่งคืนแอนิเมชั่นของผู้ใช้


    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. เปลี่ยนไฟล์ข้อความที่สร้างขึ้นเป็นแผนที่แอนิเมชันใน Studio

    1. เปลี่ยนรายการแอนิเมชั่นภายในตัวแปร animFileText ด้วยเนื้อหาของไฟล์ข้อความที่คุณต้องการเปลี่ยนเป็นแผนที่แอนิเมชั่น
    2. รันสคริปต์ต่อไปนี้เพื่อคืนค่าสตริง:

    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. สร้างพ่อแม่ใหม่ ModuleScript ให้กับโมดูล Animations ของคุณ

  6. วางสตริงที่คืนกลับ animFileText ภายใน ModuleScript

  7. อัปเดตประสบการณ์เพื่อรวบรวมแอนิเมชั่นทั้งหมดผ่านโมดูล Animations โดยการดำเนินการตามสคริปต์ต่อไปนี้:


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