Etkinlikler

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

Etkinlikler, deneyiminizde dinleyebileceğiniz ve yanıtlayabileceğiniz olaylar oluşur. Birçok Roblox hizmeti ve nesnesinin, belirli eylemler veya değişikliklere yanıt olarak otomatik olarak açılır yanıtı vardır.

Örneğin, bir oyuncunun Character Class.BasePart ile temas etmesi durumunda, otomatik olarak bir Class.BasePart.Touched|Touched ile etkileşim oluşturur. Her oyuncu deneyiminize katıldığında, Class.Players.PlayerAdded ile etkileşim oluşturur.

Roblox'un kodlanması, etkinlik sayısının ve sunucu-sunucu arşite sayısının yüksekliği nedeniyle genellikle etkinlik tabanlı olarak adlandırılır. Bu yaklaşım diğer birçok oyun motorundan farklıdır, bu da kodu çerçeveler arasında çalıştırma konusunda vurgularda bulunur.

Etkinliklere kulak vermek zorunda değilsiniz veya onlara yanıt olarak herhangi bir eylem yapmak zorunda değilsiniz, ancak etkinlikler başlıyor ve yine de mevcut. Bir etkinliğe yanıt vermek istediğinizde, bir işlevi ona bağlıyorsunuz.

İşlevleri Etkinliklere Bağlama

Etkinliğin başladığı her seferinde kodu yürütmek için Connect() ile bir işlevi bağlantı kurulur. çoğu etkinliğin birincil işlevlerine atıfta bulunur. örneğin,

Aşağıdaki kod örneği, bir parçanın onPartTouched() adlı bir işlevini bir parçanın Touched etkinliğine nasıl bağlayacağını gösterir:


-- Kısmın ebeveyni olduğunu varsayar
local part = script.Parent
-- 実行したい işlev
local function onPartTouched(object)
print("Part was touched by", object:GetFullName())
end
-- İşlevi parçanın Dokunulan etkinliğine bağlayın
part.Touched:Connect(onPartTouched)

Ayrıca, anonim fonksiyonları etkinliklere bağlayabilirsiniz, böylece benzersiz ödevleri kullanmak için ebeveyn alanındaki şeyleri kullanmak zorunda değilsiniz. Örneğin, bu kod örneği, Hizmetler 'deki benzersiz örnek işlevini ortadan kaldırır:


local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SaveManager = require(ReplicatedStorage:WaitForChild("SaveManager"))
local function saveProgress(character)
local position = character:FindFirstChild("HumanoidRootPart").Position
SaveManager.saveData(character, position)
end
-- Bir karakter kaldırıldığında saveProgress() çağırır
-- deneyim (burada, oyuncu ayrıldığında).
Players.PlayerAdded:Connect(function(player)
player.CharacterRemoving:Connect(saveProgress)
end)

Fonksiyonlardan Etkinlikleri Ayrılıyor

Datatype.RBXScriptSignal.Connect()|Connect() yöntemi bir Datatype.RBXScriptConnection nesneyi iade eder. Eğer bir işlevi bir etkinliğe bağlarsanız, ancak işlevi bir sonraki etkinliğin başladığında çağırmak ist

Aşağıdaki kod örneği, bir işlevi Part.Touched etkinliğinden nasıl bağlayıp kopartacağını gösterir:


local part = workspace.Part
local targetPart = workspace.TargetPart
-- Bağlantı için boş bir geçersiz değiştirici deklarasyonu
local connection
local function onPartTouched(otherPart)
if otherPart == targetPart then
print("The part hit the target!")
-- Bağlantıyı bağla
connection:Disconnect()
end
end
-- Yukarıdaki işlevi Dokunan etkinliğine bağlayın
connection = part.Touched:Connect(onPartTouched)

Sadece bir işlevi bir etkinliğe sadece bir kez bağlamak istiyorsanız - yani, etkinliğin ilk kez çalıştığında sadece işlevi çalıştırın - Datatype.RBXScriptSignal.Once()|Once() yöntemini kullanarak işlevi bağlantı ve kopma için daha uygun bir alternatif olarak kullanın.

Etkinliklerin Başlamasını Bekliyorum

Belirli bir etkinliğin başladığına kadar bir senaryo üretmek istiyorsanız, Wait() yöntemini kullanın. Bu yöntem, etkinliğin argümanlarını döndürür, bunları daha sonra kullanmak için değişkenlere atabilirsiniz:


local part = workspace.Part
local touchedPart = part.Touched:Wait()
print("The part was touched by", touchedPart:GetFullName())

Diğer Etkinlik Türleri

  • Etkinleştirilebilir olaylar

    Etkinleştirilebilir olaylar, aynı taraftaki klien-sunucu sınırı arasında iletişim kurmanızı sağlar.

  • Uzaktan etkinlikler

    Uzaktan etkinlikler, aşırı klien-sunucu sınırını iletişim kurmanızı sağlar.