ระบบการดำเนินการนำเข้า

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

ระบบ Input Action System ข้ามแพลตฟอร์มช่วยให้คุณเชื่อมต่อ การดำเนินการ และจัดเรียง การผูกโยง ข้ามอุปกรณ์ฮาร์ดแวร์ที่หลากหลายได้ในขณะที่ทำการแก้ไข โดยการรวมกับ บริบท คุณสามารถกำหนดค่าและแก้ไขระบบนำเข้าที่โมดูลาร์ซึ่งทำงานได้บนอุปกรณ์ใด ๆ ในทุกช่วงของการเล่น โดยมีกรณีการใช้งานดังนี้:

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

บริบทนำเข้า

InputContext เป็นการรวบรวมของการดำเนินการซึ่งเก็บ การดำเนินการนำเข้า ที่เกี่ยวข้อง เช่น PlayContext สำหรับการควบคุมตัวละครในเกม และ NavContext สำหรับการควบคุมเพื่อการนำทางรอบเมนู UI คุณสามารถ เปิด/ปิดบริบท (และการดำเนินการที่เกี่ยวข้อง) ผ่านพารามิเตอร์ Enabled ของพวกเขา เช่น การเปิด NavContext เมื่อเมนูสารบัญเปิดอยู่ และเปลี่ยนเป็น PlayContext เมื่อผู้เล่นปิดเมนูและกลับสู่การเล่นหลัก

แม้ว่าเกมจะไม่ใช้หลายบริบทของการนำเข้าในตอนแรก แต่แนะนำให้สร้างบริบทหลักที่ระดับสูงสุดของระบบนำเข้าทุกระบบ ตัวอย่างเช่น อินสแตนซ์ PlayContext สำหรับการนำเข้าที่เกิดขึ้นในระหว่างการเล่นเกม

  1. แนะนำ
    สร้าง Folder ชื่อ Inputs ภายใน ReplicatedStorage เพื่อเก็บบริบทการนำเข้าหลาย ๆ อัน

    โฟลเดอร์ใหม่ภายใน ReplicatedStorage เปลี่ยนชื่อเป็น Inputs
  2. แทรก InputContext ใหม่ลงในโฟลเดอร์และเปลี่ยนชื่อเป็น PlayContext

    อินสแตนซ์ InputContext ใหม่ภายใน ReplicatedStorage เปลี่ยนชื่อเป็น PlayContext
  3. ในหน้าต่าง Properties ให้ตั้งค่าคุณลักษณะ Priority เป็น 2000 และเปิดใช้งาน Sink บริบทที่เปิดใช้งาน Sink จะบริโภคเหตุการณ์การป้อนข้อมูลสำหรับ KeyCodes ที่มีการผูกไว้ตามระดับลำดับความสำคัญของมัน ขัดขวางการป้อนข้อมูลเหล่านั้นไม่ให้ไปถึงบริบทที่มีลำดับความสำคัญต่ำกว่า นี่เป็นการใช้งานที่มีประโยชน์ในกรณีเช่นหน้าจอสถานะสินค้าที่ควรจะกดการป้อนข้อมูลการเล่นเกมเฉพาะขณะที่เปิดอยู่ ในตัวอย่างนี้ PlayContext เป็นการตั้งค่าที่สูงพอสำหรับ Priority เพื่อซึมซับการป้อนข้อมูลที่เชื่อมโยงไว้ก่อนที่บริบท PlayerScripts จะประมวลผล

การดำเนินการนำเข้า

InputAction กำหนดกลไกการดำเนินการในการเล่นเกม เช่น "กระโดด," "วิ่ง," หรือ "ยิง" การดำเนินการเหล่านี้จะถูกแมปไปยังการป้อนข้อมูลฮาร์ดแวร์โดยใช้ การผูกโยงการป้อนข้อมูล

InputAction สามารถมีหลายรูปแบบขึ้นอยู่กับคุณลักษณะ Type (Enum.InputActionType) โดยค่าเริ่มต้นคือ Bool ที่ออกแบบมาเพื่อรับค่า true/false จากการกด/ปล่อยของการป้อนข้อมูล เช่น ButtonA, E, หรือ MouseLeftButton

ประเภท การดำเนินการ นำเข้าตัวอย่างการใช้งาน
Boolการดำเนินการที่ถูกกระตุ้น เช่น การกระโดด การยิง การวิ่ง ฯลฯ โดยสนับสนุนเกณฑ์การกด/ปล่อยในการป้อนข้อมูลอนาล็อก
Direction1Dการดำเนินการแบบเปลี่ยนแปลงได้จากศูนย์ถึงเต็ม เช่น ปีกกระตุ้นในรถยนต์หรือระดับการซูมของสโคปมุมมอง
Direction2Dการเคลื่อนไหวตามทิศทาง 2D เช่น การหมุนกล้อง หรือการเคลื่อนไหวของตัวละคร Roblox แบบมาตรฐาน
Direction3Dการเคลื่อนไหวตามทิศทาง 3D เช่น ยานพาหนะที่อยู่ในอากาศซึ่งสามารถลอยขึ้น/ลง เร่ง/ลดความเร็ว และดริฟท์ไปทางซ้าย/ขวา
ViewportPositionพิกัดแผนที่ 2D เช่น การป้อนข้อมูลเมาส์ เช่น สำหรับตัวชี้แบบกำหนดเองหรือการเรย์แคสเพื่อลงเลือกวัตถุในโลก

เพื่อทดสอบ InputAction สำหรับการวิ่งของตัวละครง่ายๆ:

  1. สร้าง InputAction ใหม่ภายใต้บริบท PlayContext ภายใน ReplicatedStorage เปลี่ยนชื่อเป็น CharacterSprint เพื่อบ่งบอกถึงการดำเนินการที่เฉพาะเจาะจงของมัน

    อินสแตนซ์ InputAction ใหม่ภายใน InputContext เปลี่ยนชื่อเป็น CharacterSprint
  2. ในหน้าต่าง Properties สังเกตว่าคุณลักษณะ Type ของการดำเนินการคือ Bool (ค่าปริยาย) นี่เป็นประเภทที่เหมาะสมสำหรับการวิ่งตัวละครง่าย ๆ เป็นกระบวนการแบบ boolean true/false (ตัวละครกำลังวิ่งอยู่หรือไม่)

    คุณลักษณะประเภทของ InputAction ตั้งค่าเป็น Bool

การผูกโยงนำเข้า

InputBinding กำหนดว่าในการผูกฮาร์ดแวร์ใดที่ควรกระตุ้น InputAction ของพ่อแม่ เช่น การกดปุ่ม กดปุ่มจอยสติ๊ก หรือการแตะบนอุปกรณ์ที่รองรับการสัมผัส สำหรับความเข้ากันได้แบบ ข้ามแพลตฟอร์ม InputAction แต่ละตัวควรมี InputBinding สำหรับ จอยสติ๊ก, คีย์บอร์ด/เมาส์, และ สัมผัส ดังที่แสดงในที่นี้

ประเภท Type ที่กำหนดให้กับ InputAction พ่อแม่โดยตรงส่งผลต่อประเภทการป้อนข้อมูลทั่วไป (คีย์/ปุ่ม/แตะ ตัวกระตุ้นอนาล็อก แท่งเลื่อน ฯลฯ) ที่เหมาะสมสำหรับอินสแตนซ์ InputBinding เด็ก และในทางกลับกัน ค่าที่ส่งไปยังเหตุการณ์ที่เชื่อมต่อนั้นขึ้นอยู่กับประเภทการป้อนข้อมูลที่เลือกของการผูกโยง ดู เหตุการณ์การป้อนข้อมูล เพื่อดูรายละเอียดเกี่ยวกับความสัมพันธ์ระหว่างประเภทการดำเนินการ การผูก และค่าเริ่มต้นที่ส่งคืน

เพื่อเชื่อมโยงการผูกสำหรับการวิ่งของตัวละครง่ายๆ:

  1. แทรก InputBinding ใหม่ลงในการดำเนินการ CharacterSprint และเปลี่ยนชื่อเป็น KeyboardBinding จากนั้นตั้งค่าคุณลักษณะ KeyCode ของการผูกให้เป็น LeftShift

  2. เพื่อให้แน่ใจว่าการล็อค Shift ของเมาส์จะไม่รบกวนกับการผูกของปุ่ม ให้เลือก StarterPlayer ใน Explorer และปิดการเปิดใช้งาน EnableMouseLockOption ในหน้าต่าง Properties

  3. แทรก InputBinding ที่สองลงในการดำเนินการ CharacterSprint และเปลี่ยนชื่อเป็น GamepadBinding จากนั้นตั้งค่าคุณลักษณะ KeyCode ของการผูกให้เป็น ButtonY

  4. ใน ScreenGui container ภายใน StarterGui สร้าง ปุ่มบนหน้าจอ, เปลี่ยนชื่อเป็น SprintButton และทำการ ปรับตำแหน่ง/ขนาด ตามต้องการ

  5. แทรก InputBinding ที่สามลงในการดำเนินการ CharacterSprint และเปลี่ยนชื่อเป็น TouchBinding จากนั้น ในหน้าต่าง Properties เชื่อมโยงคุณลักษณะ UIButton ของการผูกเข้ากับปุ่ม SprintButton ซึ่งคุณสร้างไว้ก่อนหน้านี้ใน StarterGui

เหตุการณ์การนำเข้า

อินสแตนซ์ InputAction มี เหตุการณ์ ในตัวสามเหตุการณ์ เพื่อจัดการป้อนข้อมูลผู้เล่นที่มาจาก InputBindings

  • Pressed — เหตุการณ์นี้จะถูกกระตุ้นเฉพาะเมื่อประเภทของการดำเนินการนำเข้าถูกตั้งค่าเป็น Bool และเฉพาะเมื่อสถานะเปลี่ยนจาก false เป็น true
  • Released — เหตุการณ์นี้จะถูกกระตุ้นเฉพาะเมื่อประเภทของการดำเนินการนำเข้าถูกตั้งค่าเป็น Bool และเฉพาะเมื่อสถานะเปลี่ยนจาก true เป็น false
  • StateChanged — เหตุการณ์นี้จะถูกกระตุ้นสำหรับทุกประเภทของการดำเนินการนำเข้าเมื่อใดก็ตามที่สถานะมีการเปลี่ยนแปลง ยกเว้นเมื่อสถานะพยายามที่จะเปลี่ยนไปยังสถานะเดียวกัน

ขึ้นอยู่กับประเภทของการดำเนินการนำเข้าของ Type (Bool, Direction1D, Direction2D, Direction3D, หรือ ViewportPosition) และประเภทการป้อนข้อมูลทั่วไปที่มาจาก InputBinding เด็ก (คีย์/ปุ่ม/แตะ ตัวกระตุ้นอนาล็อก แท่งเลื่อน ฯลฯ), ค่าต่าง ๆ จะถูกส่งกลับไปยังเหตุการณ์ Pressed, Released, และ StateChanged บทบาทของเหตุการณ์ ตรวจสอบตารางต่อไปนี้เพื่อเข้าใจความสัมพันธ์

ประเภท Bool เหมาะสำหรับการกระทำที่ถูกกระตุ้นเช่นการกระโดด การยิง การวิ่ง ฯลฯ โดยสนับสนุนเกณฑ์การกด/ปล่อยในป้อนข้อมูลอนาล็อก

ประเภทการป้อนข้อมูลที่ถูกต้องสำหรับ InputBindingsค่าที่ส่งคืนไปยังเหตุการณ์ InputAction
การป้อนข้อมูล boolean จากกุญแจคีย์บอร์ดหรือปุ่มเมาส์พื้นฐาน/จอยสติ๊ก ซึ่งผ่านทางคุณลักษณะ KeyCode ของการผูก หรือการกด/ปล่อยของ GuiButton ผ่านทางคุณลักษณะ UIButton ของการผูก
  • เหตุการณ์ Pressed:
    • true เมื่อกด
  • เหตุการณ์ Released:
    • true เมื่อปล่อย
  • เหตุการณ์ StateChanged:
    • true (กด) หรือ false (ปล่อย)
การป้อนข้อมูลปริมาณแปรที่มาจากการป้อนข้อมูลอนาล็อก เช่น ตัวกระตุ้นของจอยสติ๊ก (ButtonL2/ButtonR2) ผ่านทางคุณลักษณะ KeyCode ของการผูก
  • เหตุการณ์ Pressed:
    • true เมื่อการกดของตัวกระตุ้น >= PressedThreshold
  • เหตุการณ์ Released:
    • true เมื่อการกดของตัวกระตุ้น <= ReleasedThreshold
  • เหตุการณ์ StateChanged:
    • true เมื่อการกดของตัวกระตุ้น >= PressedThreshold
    • false เมื่อการกดของตัวกระตุ้น <= ReleasedThreshold

เพื่อเชื่อมโยงเหตุการณ์สำหรับการวิ่งของตัวละครง่ายๆ:

  1. แทรก Script ใหม่ลงในต้นไม้ CharacterSprint ควบคู่กับการผูกต่างๆ จากนั้นตั้งค่า RunContext เป็น Client และเปลี่ยนชื่อเป็น OnActivate

  2. วางโค้ดต่อไปนี้ในสคริป OnActivate โปรดทราบการเชื่อมต่อเหตุการณ์ Pressed ที่บรรทัด 1315 ซึ่งจะทำให้ความเร็วการเดินของตัวละครเพิ่มเป็นสองเท่าหากมีการกดการผูกการนำเข้าสำหรับการวิ่ง และการเชื่อมต่อเหตุการณ์ Released ที่บรรทัด 1618 ซึ่งจะตั้งค่าความเร็วในการเดินกลับเป็นค่าเริ่มต้นเมื่อมีการปล่อยการผูกการนำเข้าสำหรับการวิ่ง

    OnActivate (Client Script)

    local Players = game:GetService("Players")
    local player = Players.LocalPlayer
    local character = player.Character
    if not character or character.Parent == nil then
    character = player.CharacterAdded:Wait()
    end
    local humanoid = character:WaitForChild("Humanoid")
    local defaultWalkSpeed = humanoid.WalkSpeed
    local inputAction = script.Parent
    inputAction.Pressed:Connect(function()
    humanoid.WalkSpeed = defaultWalkSpeed * 2
    end)
    inputAction.Released:Connect(function()
    humanoid.WalkSpeed = defaultWalkSpeed
    end)
  3. ทดสอบเกมของคุณและทดสอบการดำเนินการวิ่งของตัวละครกับ การผูก ที่คุณเลือกก่อนหน้านี้: LeftShift สำหรับคีย์บอร์ด, ButtonY สำหรับจอยสติ๊ก, และปุ่มบนหน้าจอ SprintButton สำหรับอุปกรณ์ที่รองรับการสัมผัส โปรดทราบว่าคุณสามารถใช้ Controller Emulator เพื่อทดสอบการป้อนข้อมูลจอยสติ๊กตรงใน Roblox Studio

การเปลี่ยนบริบท

เมื่อคุณมี บริบทการนำเข้า เช่น PlayContext คุณสามารถเปิด/ปิดบริบทในระหว่างการเล่นเกมผ่านทางการเขียนโค้ด เปลี่ยน Priority ของมันเพื่อกำหนดว่าการดำเนินการใดควรมีลำดับความสำคัญเหนือกว่า และ Sink เพื่อป้องกันการประมวลผลข้อมูลภายในบริบทที่มีลำดับความสำคัญต่ำกว่า

  1. เพื่อให้การเปลี่ยนบริบทจากสคริปอื่น ๆ ง่ายขึ้น แทรก BindableEvent ใหม่ลงในโฟลเดอร์นำเข้าของคุณภายใน ReplicatedStorage และเปลี่ยนชื่อเป็น ContextEvent

  2. สร้าง Script ใหม่ในระดับเดียวกัน ตั้งค่า RunContext เป็น Client และเปลี่ยนชื่อเป็น UpdateContext

  3. ภายในสคริป UpdateContext ให้วางโค้ดต่อไปนี้

    UpdateContext (Client Script)

    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local inputsFolder = ReplicatedStorage:WaitForChild("Inputs")
    local contextEvent = inputsFolder:WaitForChild("ContextEvent")
    -- เชื่อมต่อเหตุการณ์ที่สามารถผูกได้
    contextEvent.Event:Connect(function(targetContext, enabled)
    local context = inputsFolder:FindFirstChild(targetContext)
    if context then
    context.Enabled = enabled
    print(context.Name .. ": " .. tostring(context.Enabled))
    else
    warn("ไม่พบ InputContext!")
    end
    end)
  4. เมื่อมีสคริป UpdateContext อยู่ในที่แล้ว คุณสามารถอัปเดต InputContext ที่ชื่อได้โดยการปล่อยเหตุการณ์ที่สามารถผูกได้ เช่นจาก LocalScript ที่ขับเคลื่อน GuiButton ภายใน ScreenGui container

    Button Script

    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local inputsFolder = ReplicatedStorage:WaitForChild("Inputs")
    local contextEvent = inputsFolder:WaitForChild("ContextEvent")
    local button = script.Parent
    button.Activated:Connect(function()
    -- ปล่อยเหตุการณ์ที่สามารถผูกได้โดยมีเป้าหมายการนำเข้าสถานะและสถานะที่เปิดอยู่
    contextEvent:Fire("PlayContext", true)
    end)

การผูกค่าเริ่มต้น

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

การกระทำเมาส์/คีย์บอร์ดเกมแพดสัมผัส
เปิดเมนู RobloxEscปุ่มเริ่ม (ButtonStart)ไม่สามารถใช้ได้
คอนโซลนักพัฒนาF9ไม่สามารถใช้ได้ไม่สามารถใช้ได้
โหมดเต็มหน้าจอ (Windows)
แสดงเดสก์ท็อป (Mac)
F11ไม่สามารถใช้ได้ไม่สามารถใช้ได้
บันทึกวิดีโอ (Windows)F12ไม่สามารถใช้ได้ไม่สามารถใช้ได้
ถ่ายภาพหน้าจอPrintScreenไม่สามารถใช้ได้ไม่สามารถใช้ได้
©2026 Roblox Corporation. Roblox, โลโก้ Roblox และ Powering Imagination เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ