คู่มือการใช้งานระดับกลาง

ตรวจจับการป้อนข้อมูลของผู้ใช้

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

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

เริ่มต้น

บทเรียนนี้ใช้เครื่องมือ Blaster ที่สร้างขึ้นใน สร้างเครื่องมือสำหรับผู้เล่น คุณสามารถทำตามคำแนะนำเหล่านั้นเพื่อสร้างเครื่องมือหรือดาวน์โหลดโมเดล Blaster และแทรกลงใน StarterPack

โมเดลสามารถเพิ่มลงใน Inventories ของคุณเพื่อใช้ระหว่างประสบการณ์ต่างๆ ได้ เพื่อเพิ่มโมเดลลงในประสบการณ์ของคุณ:

  1. ในเบราว์เซอร์ เปิดหน้ารายการ โมเดล คลิกปุ่ม Get เพื่อเพิ่มโมเดลลงใน Invenotry ของคุณ
  2. จากเมนู Window ของ Studio หรือแถบเครื่องมือแท็บ Home ให้เปิด Toolbox และเลือกแท็บ Inventory
  3. ตรวจสอบให้แน่ใจว่าตัวเลื่อนตั้งอยู่ที่ My Models
  4. เลือกโมเดล Blaster เพื่อเพิ่มลงในประสบการณ์

สร้างฟังก์ชันการจัดการการกระทำ

ก่อนอื่นคุณจะต้องฟังก์ชันเพื่อจัดการเมื่อการป้อนข้อมูลของผู้ใช้ถูกตรวจจับ

  1. เปิด LocalScript ของ ToolController ภายใน Blaster

    มุมมองของ Explorer ที่สคริปต์ ToolController อยู่ภายในเครื่องมือ Blaster ถูกเลือก

  2. สร้างตัวแปรเพื่อเก็บชื่อสำหรับการกระทำ


    local tool = script.Parent
    local RELOAD_ACTION = "reloadWeapon"
    local function toolEquipped()
    tool.Handle.Equip:Play()
    end
    local function toolActivated()
    tool.Handle.Activate:Play()
    end
    tool.Equipped:Connect(toolEquipped)
    tool.Activated:Connect(toolActivated)
  3. สร้างฟังก์ชันชื่อ onAction ที่รับสามอาร์กิวเมนต์: actionName, inputState และ inputObject ฟังก์ชันนี้จะเป็นฟังก์ชันที่ทำงานเมื่อการป้อนข้อมูลของผู้ใช้ถูกตรวจจับ


    local tool = script.Parent
    local RELOAD_ACTION = "reloadWeapon"
    local function onAction(actionName, inputState, inputObject)
    end
    local function toolEquipped()
    tool.Handle.Equip:Play()
    end
  4. ภายในฟังก์ชัน ตรวจสอบว่า actionName ที่กำหนดตรงกับชื่อการกระทำในการโหลดใหม่หรือไม่ และให้แน่ใจว่า inputState เป็น UserInputState.Begin (สถานะเริ่มต้น) สิ่งนี้สำคัญเพราะฟังก์ชันจะทำงานทุกครั้งที่ inputState เปลี่ยนแปลง แต่การโหลดใหม่จะต้องเกิดขึ้นเพียงครั้งเดียว


    local function onAction(actionName, inputState, inputObject)
    if actionName == RELOAD_ACTION and inputState == Enum.UserInputState.Begin then
    end
    end
  5. เพื่อทำให้เห็นได้ชัดเมื่อผู้ใช้ทำการโหลดใหม่ ให้เปลี่ยน TextureId ของเครื่องมือเป็น "rbxassetid://6593020923" เป็นระยะเวลาสั้น ๆ แล้วเปลี่ยนกลับไปยังค่าต้นฉบับ "rbxassetid://92628145"


    local function onAction(actionName, inputState, inputObject)
    if actionName == RELOAD_ACTION and inputState == Enum.UserInputState.Begin then
    tool.TextureId = "rbxassetid://6593020923"
    task.wait(2)
    tool.TextureId = "rbxassetid://92628145"
    end
    end

ผูกการกระทำ

ContextActionService สามารถใช้เพื่อ ผูก ฟังก์ชันเข้ากับการป้อนข้อมูลเฉพาะ โดยใช้ฟังก์ชัน BindAction ซึ่งรับหลายอาร์กิวเมนต์:

  • ชื่อของการกระทำ
  • ฟังก์ชันที่จัดการการกระทำ (เรียกว่า "callback" ด้วย)
  • ว่าจะต้องแสดงปุ่มหน้าจอสัมผัสหรือไม่
  • จำนวนใด ๆ ของ Enum.KeyCodes ที่จะตรวจจับและเชื่อมโยงกับการกระทำ

KeyCodes เป็นค่าที่แสดงถึงปุ่มการป้อนข้อมูลต่างๆ เช่น ปุ่มบนคีย์บอร์ดหรือปุ่มบนคอนโทรลเลอร์ มีรายชื่อโค้ดทั้งหมดที่สามารถดูได้ที่ ที่นี่

  1. รับ ContextActionService ที่ด้านบนของสคริปต์


    local ContextActionService = game:GetService("ContextActionService")
    local tool = script.Parent
    local RELOAD_ACTION = "reloadWeapon"
  2. ภายในฟังก์ชัน toolEquipped ให้เรียกใช้ BindAction และผ่านอาร์กิวเมนต์ตามต่อไปนี้:

    • ชื่อของการกระทำ (RELOAD_ACTION)
    • ฟังก์ชันการจัดการการกระทำ (onAction)
    • ค่าที่สร้างปุ่มสัมผัส (true)
    • การกดปุ่มเพื่อให้ตรวจจับ (Enum.KeyCode.R)

    local RELOAD_ACTION = "reloadWeapon"
    local function onAction(actionName, inputState, inputObject)
    if actionName == RELOAD_ACTION and inputState == Enum.UserInputState.Begin then
    tool.TextureId = "rbxassetid://6593020923"
    task.wait(2)
    tool.TextureId = "rbxassetid://92628145"
    end
    end
    local function toolEquipped()
    ContextActionService:BindAction(RELOAD_ACTION, onAction, true, Enum.KeyCode.R)
    tool.Handle.Equip:Play()
    end
  3. ทดสอบการเล่นโดยการสวมเครื่องมือและกดปุ่ม R บนคีย์บอร์ดของคุณ ไอคอนกระเป๋าเป้จะเปลี่ยนไปชั่วขณะเพื่อสัญญาณว่าปืนจะถูกโหลดใหม่:

ถอนการผูกการกระทำ

เมื่อผู้ใช้ถอดเครื่องมือออก การกระทำจะต้อง ถอดการผูก เพื่อไม่ให้พวกเขาสามารถโหลดใหม่ได้หากไม่มีเครื่องมือที่สวมอยู่

  1. สร้างฟังก์ชันใหม่ชื่อ toolUnequipped และเรียกใช้ UnbindAction โดยการส่งผ่านชื่อการกระทำ


    local function toolEquipped()
    ContextActionService:BindAction(RELOAD_ACTION, onAction, true, Enum.KeyCode.R)
    tool.Handle.Equip:Play()
    end
    local function toolUnequipped()
    ContextActionService:UnbindAction(RELOAD_ACTION)
    end
    local function toolActivated()
    tool.Handle.Activate:Play()
    end
    tool.Equipped:Connect(toolEquipped)
    tool.Activated:Connect(toolActivated)
  2. เชื่อมต่อฟังก์ชัน toolUnequipped กับเหตุการณ์ Unequipped เพื่อให้ฟังก์ชันทำงานเมื่อเหตุการณ์เกิดขึ้น


    local ContextActionService = game:GetService("ContextActionService")
    local tool = script.Parent
    local RELOAD_ACTION = "reloadWeapon"
    local function onAction(actionName, inputState, inputObject)
    if actionName == RELOAD_ACTION and inputState == Enum.UserInputState.Begin then
    tool.TextureId = "rbxassetid://6593020923"
    task.wait(2)
    tool.TextureId = "rbxassetid://92628145"
    end
    end
    local function toolEquipped()
    ContextActionService:BindAction(RELOAD_ACTION, onAction, true, Enum.KeyCode.R)
    tool.Handle.Equip:Play()
    end
    local function toolUnequipped()
    ContextActionService:UnbindAction(RELOAD_ACTION)
    end
    local function toolActivated()
    tool.Handle.Activate:Play()
    end
    tool.Equipped:Connect(toolEquipped)
    tool.Unequipped:Connect(toolUnequipped)
    tool.Activated:Connect(toolActivated)
  3. ทดสอบการเล่นเพื่อยืนยันว่าทุกอย่างทำงานได้อย่างถูกต้อง คุณควรสามารถโหลดใหม่ได้เมื่อเครื่องมือถูกสวมใส่ แต่ไม่สามารถโหลดใหม่ได้เมื่อมันถูกถอดออก

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

©2026 Roblox Corporation. Roblox, โลโก้ Roblox และ Powering Imagination เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ