Giriş Eylem Sistemi

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Çoklu platform Giriş Eylem Sistemi, eylemleri bağlamanıza ve bağlamaları çeşitli donanım girişleri arasında düzenlemenize olanak tanır. Bağlamalar ile birleştirildiğinde, herhangi bir cihazda ve oyun aşamasında çalışan modüler bir giriş sistemini kolayca yapılandırabilir ve düzenleyebilirsiniz. Kullanım durumları arasında şunlar bulunmaktadır:

  • Oyuncunun savaş modunda mı yoksa izleyici modunda mı olduğuna bağlı olarak eylemlerin dinamik olarak değiştiği bir birinci şahıs nişancı sistemi.
  • Hızlanma/yavaşlama, araç güçlendiricileri ve yakıt istasyonları ile donatılmış kapsamlı bir sürüş sistemi.
  • Bir dövüş oyununda yetenek sistemi için sıcak tuşlar, oyuncuların bir yumruğu kaçırmadan hareketleri sorunsuz bir şekilde değiştirmesine olanak tanır.

Giriş bağlamları

Bir InputContext, ilgili giriş eylemlerini tutan bir eylem koleksiyonudur; örneğin, oyun içi karakter kontrolleri için PlayContext ve UI menülerinde gezinmek için NavContext. Enabled özelliği aracılığıyla bağlamları etkinleştirebilir/devre dışı bırakabilirsiniz (ve bunlara karşılık gelen eylemleri), örneğin bir envanter menüsü açıkken NavContext'i etkinleştirip, oyuncu menüyü kapattığında PlayContext'e geçiş yapabilirsiniz.

Bir oyun başlangıçta birden fazla giriş bağlamı kullanmasa bile, herhangi bir giriş sisteminin en üst düzeyinde bir ana bağlam oluşturulması önerilir; örneğin, oyun sırasında gerçekleşen girişler için PlayContext örneği.

  1. TAVSİYE EDİLEN
    ReplicatedStorage içinde Inputs adında bir Folder oluşturun ve çeşitli giriş bağlamlarını burada tutun.

    ReplicatedStorage içinde yeni oluşturulmuş ve Inputs olarak yeniden adlandırılmış klasör
  2. Klasöre yeni bir InputContext ekleyin ve adını PlayContext olarak değiştirin.

    ReplicatedStorage içinde yeni oluşturulmuş ve PlayContext olarak yeniden adlandırılmış InputContext örneği
  3. İSTEĞE BAĞLI
    Özellikler penceresinde, Priority değerini 2000 olarak ayarlayın ve Sink'i etkinleştirin. Sink etkinleştirildiğinde, bağlandığı KeyCodes için giriş olaylarını öncelik seviyesinde tüketir ve bu girişlerin daha düşük öncelikli bağlamlara ulaşmasını engeller. Bu, açıkken belirli oyun içi girişleri bastırması gereken bir envanter ekranı gibi kullanım durumları için pratik bir durumdur. Bu örnekte, PlayContext'e, varsayılan PlayerScripts bağlamları işlemeye başlamadan önce bağlı girişlerini batıracak kadar yüksek bir Priority verilmiştir.

    Öncelik değeri 2000 olarak ayarlanmış ve Sink etkinleştirilmiş InputContext

Giriş eylemleri

Bir InputAction, "Zıpla", "Koş" veya "Ateş et" gibi bir oyun eylem mekaniğini tanımlar. Bu eylemler daha sonra giriş bağlamaları kullanılarak donanım girişlerine haritalanır.

Bir InputAction, Type özelliğine bağlı olarak birkaç varyasyona sahip olabilir (Enum.InputActionType). Varsayılan değer Bool'dur ve ButtonA, E veya MouseLeftButton gibi girişlerin basılması/serbest bırakılması ile true/false değerlerini alacak şekilde tasarlanmıştır.

Giriş Eylem TürüÖrnek Kullanım
BoolBasılı/serbest bırakma eşiklerini destekleyen zıplama, ateş etme, koşma gibi tetiklenen eylemler.
Direction1DBir aracın gaz pedalı veya bir görüş alanının zoom seviyesi gibi değişken sıfırdan tam eylemler.
Direction2DKamera döndürme veya standart Roblox karakter hareketi gibi 2D yönlü hareket.
Direction3DHavada süzülen bir aracın yukarı/aşağı hareket edebilmesi, hızlanabilmesi/yavaşlayabilmesi ve sola/sağa kayabilmesi gibi 3D yönlü hareket.
ViewportPositionÖzel imleçler veya dünya nesnelerini seçmek için ışın izleme gibi fare girişi gibi 2D görüntüleme koordinatları.

Basit karakter koşusu için bir InputAction test etmek için:

  1. TAVSİYE EDİLEN
    Explorer içindeki en üst düzey Workspace nesnesini seçin ve ardından Özellikler penceresinde PlayerScriptsUseInputActionSystem özelliğini Enabled olarak ayarlayın.

  2. ReplicatedStorage içindeki PlayContext bağlamına yeni bir InputAction oluşturun. Adını, özel eylemini belirtmek için CharacterSprint olarak değiştirin.

    InputContext içinde yeni oluşturulmuş ve CharacterSprint olarak yeniden adlandırılmış InputAction örneği
  3. Özellikler penceresinde, eylemin Type değerinin Bool (varsayılan) olduğunu göreceksiniz. Bu, basit karakter koşusu için mantıksal bir türdür çünkü boolean true/false eylemi (karakter ya koşuyor ya da koşmuyor).

    InputAction türü Bool olarak ayarlanmış

Giriş bağlamaları

Bir InputBinding, hangi donanım bağlamasının ana InputAction'ı tetiklemesi gerektiğini tanımlar; örneğin bir tuş basımı, oyun kumandası düğmesi veya dokunmatik cihazda bir dokunuş. Çoklu platform uyumluluğu için, her InputAction'ın oyun kumandası, klavye/fare ve dokunmatik için bir InputBinding'e sahip olması gerektiği burada gösterilmektedir.

Roblox, hareket, kamera kontrolü ve temel çevre etkileşimi için varsayılan giriş bağlama seçenekleri sağlar — Roblox oyuncuları bu kontrollerle tanıdık olduğu için, bunları yalnızca belirli durumlarda geçersiz kılmalısınız. Ayrıca, rezerv girişlerin geçersiz kılınamayacağını ve her zaman amaçlandığı gibi çalışacağını unutmayın.

İşlemFare/KlavyeOyun kumandasıDokunmatik
Roblox menüsünü açEscBaşlat düğmesi (ButtonStart)Yok
Geliştirici KonsoluF9YokYok
Tam ekran modu (Windows)
Masaüstünü göster (Mac)
F11YokYok
Video kaydet (Windows)F12YokYok
Ekran görüntüsü alPrintScreenYokYok

Ana InputAction'a atanan Type, çocuk InputBinding örnekleri için hangi genel giriş türlerinin (tuş/düğme/dokunma, analog tetikleyici, parmaklık vb.) geçerli olduğunu doğrudan etkiler. Bunun sonucunda, ana eylemin bağlı olaylarına gönderilen değerler, bir bağlamanın seçilen giriş türüne bağlıdır. Eylem türleri, bağlamalar ve dönen değerler arasındaki ilişki hakkında daha fazla bilgi için giriş olaylarına bakın.

Basit karakter koşusu için bağlamaları bağlamak için:

  1. CharacterSprint eylemine yeni bir InputBinding ekleyin ve adını KeyboardBinding olarak değiştirin. Ardından bağlamanın KeyCode özelliğini LeftShift olarak ayarlayın.

  2. CharacterSprint eylemine ikinci bir InputBinding ekleyin ve adını GamepadBinding olarak değiştirin. Ardından bağlamanın KeyCode özelliğini ButtonY olarak ayarlayın.

  3. StarterGui içindeki bir ScreenGui konteynerinin içine bir ekran düğmesi oluşturun, adını SprintButton olarak değiştirin ve istediğiniz gibi konumlandırın/ölçeklendirin.

  4. CharacterSprint eylemine üçüncü bir InputBinding ekleyin ve adını TouchBinding olarak değiştirin. Ardından, Özellikler penceresinde, bağlamanın UIButton özelliğini daha önce StarterGui içinde oluşturduğunuz SprintButton düğmesine bağlayın.

Giriş olayları

InputAction örneği, InputBindings'ten gelen oyuncu girişini işlemek için üç yerleşik olay içerir.

  • Pressed — Bu olay, yalnızca giriş eyleminin Type değeri Bool olarak ayarlandığında ve yalnızca durum false'dan true'ya geçiş yaptığında tetiklenir.
  • Released — Bu olay, yalnızca giriş eyleminin Type değeri Bool olarak ayarlandığında ve yalnızca durum true'dan false'ya geçiş yaptığında tetiklenir.
  • StateChanged — Bu olay, durum değiştiğinde tüm giriş eylem türleri için tetiklenir, ancak durum aynı duruma geçiş yapmaya çalışıyorsa tetiklenmez.

Giriş eyleminin Type değerine (Bool, Direction1D, Direction2D, Direction3D veya ViewportPosition) ve bir çocuk InputBinding'den gelen genel giriş türüne (tuş/düğme/dokunma, analog tetikleyici, parmaklık vb.) bağlı olarak, Pressed, Released ve StateChanged olay işleyicilerine farklı değerler döndürülür. İlişkiyi daha iyi anlamak için aşağıdaki tablolara bakın.

Bool türü, zıplama, ateş etme, koşma gibi tetiklenen eylemler için en iyisidir ve analog girişlerde basılı/serbest bırakma eşiklerini destekler.

InputBindings Üzerindeki Geçerli Giriş TürleriInputAction Olay(ları) için Döndürülen Değerler
Bağlamanın KeyCode özelliği aracılığıyla klavye tuşlarından veya temel fare/oyun kumandası düğmelerinden gelen boolean girişler veya bağlamanın UIButton özelliği aracılığıyla bir GuiButton basma/serbest bırakma.
  • Pressed olayı:
    • basıldığında true
  • Released olayı:
    • serbest bırakıldığında true
  • StateChanged olayı:
    • basılı (true) veya serbest bırakılmış (false)
Bağlamanın KeyCode özelliği aracılığıyla oyun kumandası tetikleyicilerinden (ButtonL2/ButtonR2) gelen değişken giriş miktarları.

Basit karakter koşusu için olayları bağlamak için:

  1. CharacterSprint ağacına yeni bir Script ekleyin, çeşitli giriş bağlamalarının yanına. Ardından RunContext değerini Client olarak ayarlayın ve adını OnActivate olarak değiştirin.

  2. OnActivate scriptine aşağıdaki kodu yapıştırın. Pressed olay bağlantısının 13-15 satırlarında, bir sprint giriş bağlaması basıldığında karakterin yürüyüş hızını iki katına çıkardığını ve Released olay bağlantısının 16-18 satırlarında, bir sprint giriş bağlaması serbest bırakıldığında yürüyüş hızını varsayılan değere sıfırladığını unutmayın.

    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. Oyununuza test yapın ve daha önce seçtiğiniz bağlamalar ile karakter koşu eylemini test edin: klavye için LeftShift, oyun kumandası için ButtonY ve dokunmatik cihazlar için ekran üzerindeki SprintButton. Oyun kumandası girişlerini doğrudan Roblox Studio'da test etmek için Kontrolcü Emülatörü kullanabileceğinizi unutmayın.

Bağlam değişiklikleri

Bir giriş bağlamı olan PlayContext gibi bir bağlamınız olduğunda, oyun sırasında bunu betik aracılığıyla etkinleştirebilir/devre dışı bırakabilir, hangi eylemlerin diğerlerinin önceliğini belirlemek için Priority değerini değiştirebilir ve Sink'i daha düşük öncelikli bağlamlarda işlenmekten kaçınmak için kullanabilirsiniz.

  1. Diğer betiklerden bağlamları değiştirmeyi kolaylaştırmak için, ReplicatedStorage içindeki girişler klasörünüze yeni bir BindableEvent ekleyin ve adını ContextEvent olarak değiştirin.

  2. Aynı seviyede yeni bir Script oluşturun, RunContext değerini Client olarak ayarlayın ve adını UpdateContext olarak değiştirin.

  3. UpdateContext scriptinin içine aşağıdaki kodu yapıştırın:

    UpdateContext (Client Script)
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local inputsFolder = ReplicatedStorage:WaitForChild("Inputs")
    local contextEvent = inputsFolder:WaitForChild("ContextEvent")
    -- Bağlanabilir olayı bağla
    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 bulunamadı!")
    end
    end)
  4. UpdateContext scriptini yerleştirdikten sonra, artık bir InputContext'i adlandırarak güncelleyebilirsiniz; örneğin, bir ScreenGui konteyneri içindeki bir GuiButton'ı güçlendiren bir LocalScript aracılığıyla.

    Düğme Scripti
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local inputsFolder = ReplicatedStorage:WaitForChild("Inputs")
    local contextEvent = inputsFolder:WaitForChild("ContextEvent")
    local button = script.Parent
    button.Activated:Connect(function()
    -- Hedef giriş bağlamı ve etkin durum ile bağlanabilir olayı tetikle
    contextEvent:Fire("PlayContext", true)
    end)

Giriş Eylem Yöneticisi

Giriş Eylem Yöneticisi aracı, giriş mimarinizi tasarlamak, denetlemek ve ölçeklendirmek için birleşik, matris tarzı bir arayüzdür.

Erişmek için, Studio'daki Pencere menüsüne gidin ve Giriş ⟩ Giriş Eylem Yöneticisi'ni seçin. Oyununuza zaten giriş bağlamaları, eylemleri veya bağlamaları kullanıyorsanız, yönetici otomatik olarak DataModel'i tarar ve mevcut örnekleri düzenleyici ızgarasına çıkarır. Herhangi bir yeni girişle ilgili örnek, otomatik olarak ReplicatedStorage içindeki bir Inputs klasörüne yerleştirilecektir.

ReplicatedStorage içinde Inputs adında bir klasör

Yukarıdaki bölümlerde belirtilen karakter koşusu için bir giriş ayarı yapılandırmak için:

  1. TAVSİYE EDİLEN
    Explorer içindeki en üst düzey Workspace nesnesini seçin ve ardından Özellikler penceresinde PlayerScriptsUseInputActionSystem özelliğini Enabled olarak ayarlayın.

  2. StarterGui içindeki bir ScreenGui konteynerinin içine bir ekran düğmesi oluşturun, adını SprintButton olarak değiştirin ve istediğiniz gibi konumlandırın/ölçeklendirin.

  3. Giriş Eylem Yöneticisi'nde, Bağlam sütun başlığının üzerine gelin ve düğmesine tıklayın. Yeni bağlam için uygun bir ad girin, örneğin PlayContext ve Enter tuşuna basın. Eşleşen adla bir InputContext ReplicatedStorage içinde görünür.

    ReplicatedStorage içinde PlayContext adında yeni bir InputContext örneği
  4. Yeni bağlamın üzerine gelin ve düğmesine tıklayın. Açılır menüden Bool'u seçin, eylemin adı için CharacterSprint girin ve Enter tuşuna basın. Eşleşen adla bir InputAction bağlamın altında görünür.

    CharacterSprint adında yeni bir InputAction örneği
  5. Yeni CharacterSprint satırında, her giriş türü için bağlamalar atayın:

    1. Klavye ve Fare — Ok düğmesine tıklayın ve seçim menüsünden LeftShift'i seçin.
    2. Dokunmatik — Hücreye tıklayın ve ardından Explorer hiyerarşisinde daha önce ScreenGui içine eklediğiniz SprintButton nesnesine tıklayın.
    3. Oyun Kumandası — Ok düğmesine tıklayın ve seçim menüsünden ButtonY'i seçin.
  6. CharacterSprint ağacına yeni bir Script ekleyin, çeşitli giriş bağlamalarının yanına. Ardından RunContext değerini Client olarak ayarlayın ve adını OnActivate olarak değiştirin.

  7. OnActivate scriptine aşağıdaki kodu yapıştırın. Pressed olay bağlantısının 13-15 satırlarında, bir sprint giriş bağlaması basıldığında karakterin yürüyüş hızını iki katına çıkardığını ve Released olay bağlantısının 16-18 satırlarında, bir sprint giriş bağlaması serbest bırakıldığında yürüyüş hızını varsayılan değere sıfırladığını unutmayın.

    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)
©2026 Roblox Corporation. Roblox, the Roblox logo and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.