Etkinleştirilebilir Etkinlikler ve Çağrılar

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

BindableEvent ve BindableFunction nesneleri, aynı taraftaki aynı taraf üzerindeki şeyleri bağlayabilirsiniz ve deneyim içindeki eylemleri iletişim kurabilirsiniz.

Sınıflandırılabilir olaylar için en yaygın kullanım durumu, tur tabanlı bir yapıya sahip deneyimlerdir. Örneğin, "match started" etkinliği, diğer kullanıcıların bir zamanlayıcıyı başlatmasına ve liderlik tablosugöstermesine izin veren "match ended" etkinliğine sahiptir, bu da diğer kullanıcıların hizmetine sunulur.

Çünkü kodlar arasındaki etkinlikleri koordine etmeleri nedeniyle, bağlanabilir olaylar genellikle sunucuda kullanılır, ancak onları da istemcide kullanabilirsiniz.

Deneyiminizin nasıl çalıştığına bağlı olarak, bağlantılabilir olaylar kodunuzu daha modüler hale getirebilir, ancak modül kayıtları genellikle kodu arasında veri paylaşma gerektiren durumlar için daha iyi bir alternatiftir. Ayrıca, modül kayıtlarını modül kayıtları ile birleştirerek daha temiz bir

Etkinleştirilebilir Etkinlikler

Class.BindableEvent nesnesi, kullanıcıların yazılımındaki asincron bir iletişim aracılığıyla özel etkinlikleri etkinleştirir.

Class.BindableEvent ın yanındaki Fire() metodunu iletişim kutusu aracılığıyla çalıştırırsanız, çalıştırma kısmı değil yüzde iletir ve hedef i

Stüdyo'daki BindableEvent penceresini kullanarak yeni bir Class.BindableEvent oluşturmak için:

  1. Class.BindableEvent'i içeren kutuya sorun yoksa içeren kutuya sorun yoksa içeren kutuya sorun yoksa içeren kutuya sorun yoksa içeren kutuya sorun yoksa içeren kutuya sorun yoksa içeren kutuya sorun yoksa içeren kutuya sorun yoksa içeren kutuya sorun yoksa içeren kutuya sorun yoksa içeren kutuya sorun yoksa içeren kutuya sorun yoksa i
  2. Konteynın adının sağındaki butonuna tıklayın ve bir Bağlanabilir Etkinlik instansı ekleyin.
  3. İн스턴스'ı TestBindableEvent olarak yeniden adlandır.

Bir BindableEvent oluşturduktan sonra, bir işlevi olayın Event etkinliğine bağlayın ve ardından bir başka scriptten etkinliği Fire() iletin.

Etkinlik Bağlantısı

local ServerScriptService = game:GetService("ServerScriptService")
-- Etkinleştirilebilir etkinlik instansına bağlanabilir referans durum
local bindableEvent = ServerScriptService:WaitForChild("TestBindableEvent")
-- Anonim işlevi olaya bağla
bindableEvent.Event:Connect(function(data)
print(data) --> Tur başladı!
end)
Etkinlik Başlatıcı

local ServerScriptService = game:GetService("ServerScriptService")
-- Etkinleştirilebilir etkinlik instansına bağlanabilir referans durum
local bindableEvent = ServerScriptService:WaitForChild("TestBindableEvent")
-- Ateşlenebilir olay
bindableEvent:Fire("Round started!")

Özel Çağrılar

Class.BindableFunction nesnesi, senaryolardaki senkronik, iki yönlü iletişimi sağlar. Bu nesneyi kullanarak, özel bir çağrı işlevini tanımlayabilir ve BindableFunction:Invoke() çağrısın

Stüdyo'daki BindableFunction penceresini kullanarak yeni bir Class.BindableFunction oluşturmak için:

  1. Class.BindableFunction'ı yerleştirmek istediğin kutuya sorun yüklemek için kutuya sorun yerleştir. We recommend using ServerScriptService ile iletişim aracı olarak kullanılan ReplicatedStorage ile iletişim aracı arasındaki iletişimi.
  2. Container'ın adının sağındaki butonuna tıklayın ve bir BindableFunction instansı ekleyin.
  3. İstemcideki bir TestBindableFunction eşyasını yeniden adlandır.

Bir BindableFunction oluşturduktan sonra, onun OnInvoke çağrısına bir skriptte bağlanabilir, ardından bir başka skriptten Invoke() çağrı işlevini izleyebilirsiniz.

Geri Çağrı Bağlantısı

local ServerScriptService = game:GetService("ServerScriptService")
-- Etkileşimli işlev için referans alın
local bindableFunction = ServerScriptService:WaitForChild("TestBindableFunction")
-- Geri çağırma işlevi
local function addTwoNumbers(a, b)
return a + b
end
-- Kullanıcının bağlantısını kullanarak işlevi bağlayın
bindableFunction.OnInvoke = addTwoNumbers
Etkinlik Çağrısı

local ServerScriptService = game:GetService("ServerScriptService")
-- Etkileşimli işlev için referans alın
local bindableFunction = ServerScriptService:WaitForChild("TestBindableFunction")
-- Çağrı kaynağı işlevini ve döndürilen değeri çıkarın
local sum = bindableFunction:Invoke(2, 4)
print(sum) --> 6

Argüman Sınırlaması

Bir BindableEventı veya bir BindableFunctionı çalıştırırken veya bir Enumı çağırırken, etkinliğin veya geri bildiriminizin herhangi bir argümanını ilerletir. Roblox'un herhangi bir türlü n

Sıralama Dışındaki İndeksiyonlar

Eğer bir geçmiş tablodaki herhangi bir Instance özellikleri değilse, bunları Class.Instance, 2>userdata2> veya 5>fonksiyon5> gibi yazılır. Errors: Error: indeksler Severity: critical --- Error: özellikleri Severity: major --- Error: Instance herhangi bir indeks

Etkinlik Bağlantısı

local ServerScriptService = game:GetService("ServerScriptService")
local bindableEvent = ServerScriptService:WaitForChild("TestBindableEvent")
local function onEventFire(passedTable)
for k, v in passedTable do
print(typeof(k)) --> yazı
end
end
-- Konuşmayı etkinliğe bağla
bindableEvent.Event:Connect(onEventFire)
Etkinlik Başlatıcı

local ServerScriptService = game:GetService("ServerScriptService")
local bindableEvent = ServerScriptService:WaitForChild("TestBindableEvent")
-- Bir çalışma alanı instanını anahtar olarak içeren olayın oluşturulmasını sağlayan Fire etkinliği
bindableEvent:Fire({
[workspace.Baseplate] = true
})

Masa İndeksi

Bir veri tablosunu geçerseniz, sayısal veya yazılım anahtarlarından oluşan karışık bir tablosu geçmeyin. Bunun yerine, tüm anahtar değer çiftleri (bir sözlük) veya tüm sayı indeksleri (bir matris) içeren bir tablosu geçin.

Etkinlik Bağlantısı

local ServerScriptService = game:GetService("ServerScriptService")
local bindableEvent = ServerScriptService:WaitForChild("TestBindableEvent")
local function onEventFire(passedTable)
for k, v in passedTable do
print(k .. " = " .. v)
--> 1 = Kılıç
--> 2 = Ok
--> CharName = Diva Ejderhaları
--> CharClass = Şapşal
end
end
-- Konuşmayı etkinliğe bağla
bindableEvent.Event:Connect(onEventFire)
Etkinlik Başlatıcı

local ServerScriptService = game:GetService("ServerScriptService")
local bindableEvent = ServerScriptService:WaitForChild("TestBindableEvent")
-- Sayısal olarak indekslenmiş tablo
local inventoryData = {
"Sword", "Bow"
}
-- Sözlük masası
local characterData = {
CharName = "Diva Dragonslayer",
CharClass = "Rogue"
}
-- Tüm tablolarıyla konsantrate olarak indekslenmiş olaylar
bindableEvent:Fire(inventoryData)
bindableEvent:Fire(characterData)

Masa Kimlikleri

Etkinleştirilebilir olaylar ve çağrılabilir işlevler için tablolar bağlantılabilir olay ve çağrılabilir işlevler için kullanılabilir. Tablolar, etkinleştirilebilir olaylar ve çağrılabilir işlevler için kullanılabilir. Tablolar, etkinleştirilebilir olaylar ve çağrılabilir işlevler için kullanılabil

Geri Çağrı Bağlantısı

local ServerScriptService = game:GetService("ServerScriptService")
local bindableFunction = ServerScriptService:WaitForChild("TestBindableFunction")
-- Geri çağırma işlevi
local function returnTable(passedTable)
-- Çağrıda masa kimliği çıktı
print(tostring(passedTable)) --> tablo: 0x48eb7aead27563d9
return passedTable
end
-- Kullanıcının bağlantısını kullanarak işlevi bağlayın
bindableFunction.OnInvoke = returnTable
Etkinlik Çağrısı

local ServerScriptService = game:GetService("ServerScriptService")
local bindableFunction = ServerScriptService:WaitForChild("TestBindableFunction")
local inventoryData = {
"Sword", "Bow"
}
-- Kaynağındaki tablama kimliğini göster
print(tostring(inventoryData)) --> tablo: 0x059bcdbb2b576549
local invokeReturn = bindableFunction:Invoke(inventoryData)
-- Döndüğünde tabloya kimliği ilet
print(tostring(invokeReturn)) --> table: 0x9fcae7919563a0e9

Metatabeler

Bir tabloda bir metable varsa, tüm metable bilgisi transferde kaybolur. Aşağıdaki kod örneğinde, NumWheels özelliği Car mettablolarının bir parçasıdır. Sunucu, şu tableyi aldığında,

Etkinlik Bağlantısı

local ServerScriptService = game:GetService("ServerScriptService")
local bindableEvent = ServerScriptService:WaitForChild("TestBindableEvent")
local function onEvent(param)
print(param) --> { ["İsim"] = "MyTruck")
end
-- Konuşmayı etkinliğe bağla
bindableEvent.Event:Connect(onEvent)
Etkinlik Başlatıcı

local ServerScriptService = game:GetService("ServerScriptService")
local bindableEvent = ServerScriptService:WaitForChild("TestBindableEvent")
local Car = {}
Car.NumWheels = 4
Car.__index = Car
local truck = {}
truck.Name = "MyTruck"
setmetatable(truck, Car)
-- Metable'i içeren tabela dahilindeki olayın oluşturulması
bindableEvent:Fire(truck)