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:
- 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
- Konteynın adının sağındaki ⊕ butonuna tıklayın ve bir Bağlanabilir Etkinlik instansı ekleyin.
- İн스턴스'ı 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 durumlocal bindableEvent = ServerScriptService:WaitForChild("TestBindableEvent")-- Ateşlenebilir olaybindableEvent: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:
- 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.
- Container'ın adının sağındaki ⊕ butonuna tıklayın ve bir BindableFunction instansı ekleyin.
- İ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ınlocal bindableFunction = ServerScriptService:WaitForChild("TestBindableFunction")-- Çağrı kaynağı işlevini ve döndürilen değeri çıkarınlocal 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ğibindableEvent: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ş tablolocal inventoryData = {"Sword", "Bow"}-- Sözlük masasılocal characterData = {CharName = "Diva Dragonslayer",CharClass = "Rogue"}-- Tüm tablolarıyla konsantrate olarak indekslenmiş olaylarbindableEvent: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österprint(tostring(inventoryData)) --> tablo: 0x059bcdbb2b576549local invokeReturn = bindableFunction:Invoke(inventoryData)-- Döndüğünde tabloya kimliği iletprint(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 = 4Car.__index = Carlocal truck = {}truck.Name = "MyTruck"setmetatable(truck, Car)-- Metable'i içeren tabela dahilindeki olayın oluşturulmasıbindableEvent:Fire(truck)