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 çeşitli donanım girişleri arasında bağlamaları düzenlemenize olanak tanır. Bağlamalar ile birleştirildiğinde, herhangi bir cihazda herhangi bir 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üş oyunundaki yetenekler 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'u etkinleştirip, oyuncu menüyü kapattığında PlayContext'a 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 Inputs olarak yeniden adlandırılmış yeni Klasör
  2. Klasöre yeni bir InputContext ekleyin ve adını PlayContext olarak değiştirin.

    ReplicatedStorage içinde PlayContext olarak yeniden adlandırılmış yeni 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 çözümdür. Bu örnekte, PlayContext'a, varsayılan PlayerScripts bağlamları işlemden önce bağlı girişlerini batıracak kadar yüksek bir Priority verilmiştir.

    Önceliği 2000 olarak ayarlanmış ve Sink etkinleştirilmiş InputContext

Giriş eylemleri

Bir InputAction, "Zıpla", "Koş" veya "Ateş Et" gibi bir oyun mekanizmasını 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 olarak Bool kullanılır 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ı içinde yeni bir InputAction oluşturun. Adını, özel eylemini belirtmek için CharacterSprint olarak değiştirin.

    InputContext içinde yeni InputAction örneği, CharacterSprint olarak yeniden adlandırılmış
  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) olarak işlev görür.

    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ı gerekir.

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, doğrudan hangi genel giriş türlerinin (tuş/düğme/dokunma, analog tetikleyici, parmaklık vb.) çocuk InputBinding örnekleri için geçerli olduğunu 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'ı (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 dönen farklı değerler vardır. Aşağıdaki tablolara bakarak ilişkiyi daha iyi anlayabilirsiniz.

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

InputBindings Üzerindeki Geçerli Giriş TürleriInputAction Olay(ları) için Dönen 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 basılması/serbest bırakılması.
  • 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ı oluşturduktan sonra, örneğin PlayContext, oyun sırasında 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'in daha düşük öncelikli bağlamlar içinde işlenmesini engelleyebilirsiniz.

  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("Giriş Bağlamı bulunamadı!")
    end
    end)
  4. UpdateContext scriptini yerleştirdikten sonra, artık bir InputContext'ı adlandırarak güncelleyebilirsiniz; örneğin, bir LocalScript'ten, bir ScreenGui konteyneri içindeki bir GuiButton'ı çalıştırarak.

    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)

Bağlamaları Gösterme

eylemleri ve bağlamaları ayarladıktan sonra, genellikle oyunculara, her eylemi tetikleyen tuş veya düğmeyi ekran üzerindeki yardımcı ipuçları aracılığıyla göstermeniz gerekir:


Giriş Eylem Sistemi iki yaklaşım sunar:

  • TAVSİYE EDİLEN
    InputActionLabel — Doğru girişi her platform için otomatik olarak görüntüleyen, kod yazmadan sürükleyip bırakabileceğiniz bir GuiObject.
  • ORTA SEVİYE
    PreferredBinding — Özel UI'de bağlamaların nasıl görüntüleneceği üzerinde tam kontrol isteyen yaratıcılar için salt okunur bir InputAction özelliği.

InputActionLabel, herhangi bir ScreenGui veya SurfaceGui içine ekleyebileceğiniz bir GuiObject'dır. InputAction özelliği, mevcut bir InputAction örneğine referans vermek için ayarlandığında, otomatik olarak oyuncunun mevcut giriş cihazı için doğru tuş bağlamasını çözer ve görüntüler — kod yazmaya gerek yoktur. Oyuncu cihazları değiştirdiğinde (örneğin, klavye kullandıktan sonra bir oyun kumandası alındığında) veya bir kontrolü yeniden bağladığında, etiket anında güncellenir.

Bir InputActionLabel eklemek için:

  1. StarterGui içindeki bir ScreenGui konteynerinin içine bir InputActionLabel ekleyin, diğer GuiObject'lar gibi.

  2. Özellikler penceresinde, InputAction özelliğini görüntülemek istediğiniz InputAction örneğine ayarlayın (örneğin, ReplicatedStorage altında "Sprint" eyleminiz) ve istediğiniz gibi konumlandırın/ölçeklendirin.

  3. Etiket neyi göstereceğini çözdüğünde, aşağıdakileri sırayla kontrol eder:

    1. Özel Resimler — Eğer çocuk InputBindings'in DisplayImage özelliği ayarlanmışsa, etiket bu resimleri doğrudan görüntüler.

    2. Platform Tuş Resimleri — Özel resimler yoksa, etiket, çocuk InputBindings için platform tarafından sağlanan resimleri UserInputService:GetImageForKeyCode() aracılığıyla görüntüler, eğer böyle resimler mevcutsa. Bileşik bağlamalar, + ayırıcıları ile birden fazla simge gösterir.

    3. Özel İsimler — Yukarıdakilerin hiçbiri mevcut değilse, eğer çocuk InputBindings'in DisplayName özelliği ayarlanmışsa, etiket bu metni etiketin stil özelliklerini kullanarak görüntüler.

    4. Platform Tuş Dize — Yukarıdakilerin hiçbiri mevcut değilse, etiket platform tarafından sağlanan dizeleri UserInputService:GetStringForKeyCode() aracılığıyla görüntüler.

    5. Eğer hiçbir InputAction atanmadıysa veya hiçbir çocuk InputBinding yoksa, etiket bir yer tutucu simgesi görüntüler.

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. Oyun zaten giriş bağlamaları, eylemleri veya bağlamaları kullanıyorsa, yönetici otomatik olarak DataModel'i tarar ve mevcut örnekleri düzenleyici ızgarasına çıkarır. Yeni girişle ilgili örnekler, otomatik olarak ReplicatedStorage içindeki bir Inputs klasörüne yerleştirilir.

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ğlama için uygun bir ad girin, örneğin PlayContext ve Enter tuşuna basın. Eşleşen bir InputContext ReplicatedStorage içinde görünür.

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

    CharacterSprint adında yeni 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.