Etkinlik Sekansörü canlı, çok sunuculu etkinlikler ve sahneler oluşturmanıza ve yapılandırılmış bir eylem ve tetik sırası üzerinde kesinti yapmanıza izin veren güçlü bir çerçevedir.Daha spesifik olarak, bu modül size yardımcı olur:
- ses, animasyon ve gençlerin planlanmış yapılandırmaları aracılığıyla yapılandırılmış bir çerçevede bir olay veya sahne oluşturun veya kesin.
- Çok sayıda sunucu arasında çok sayıda sahneler arasında geçiş, karmaşık animasyonları ve görüntüleri bir zaman çizelgesine senkronize etme.
- Bir etkinlik aracılığıyla arayın ve deneme ve geliştirme amaçları için deneyimi önizleyin.
Bu çerçeve, Yirmi Bir Pilotlar ve 24kGoldn konserleri gibi Roblox etkinliklerinde savaş test edildi, ayrıca çok ziyaret edilen deneyimler.
Düzenlenebilir bir dünyaçalışan Etkinlik Sıralayıcısını görmek için Roblox Studio'daki Konser şablonuna göz atın.Bu şablon, geliştiricilerin etkinlikleri/konsерtları oluşturması ve ilgili çeşitli özellikleri ve bileşenleri tanıması için geniş bir başlangıç noktasıdır.

Modül kullanımı
Yükleme
Bir deneyimde Etkinlik Sıralayıcı çerçevesini kullanmak için:
Modellerin sıralanması seçildiğinden emin olun, ardından Tümünü Görüntüle düğmesine tıklayın Kategoriler için >.
Yerini ve tıklayın Geliştirici Modülleri düğmesi.
Etkinlik Sekansı modülünü bulun ve tıklayın veya 3B görüntüye sürükleyin ve bırakın.
Araştırıcı penceresinde, tüm Etkinlik Sıralayıcı modelini Sunucu Kript Hizmetine taşıyın.Deneyimi çalıştırdıktan sonra, modül kendini çeşitli hizmetlere dağıtacak ve çalışmaya başlayacaktır.
Çerçeve modları
Modu değiştirme
Varsayılan çerçeve modu, benzersiz sahneleri tasarlamak için 3D nesneleri , arazi , aydınlatma özelliklerini , çevresel etkileri ve kullanıcı arayüz nesnelerini o sahnenin Çevre klasörüne yerleştirerek yer değiştirme modudur.Bir sahne yüklendiğinde, bu nesneler ve özellikler , ve , mevcut nesneleri/özellikleri klonlanmış bir alan oluşturmak için değiştirerek değiştirilir.
İçe aktarma modu
Alternatif bir çerçeve modu, benzer şekilde akış/etkinlikleri için yazılım mantığıyla benzersiz sahneler tasarlayın, ancak çerçeve yok edilmeyecek mevcut 3D nesneleri , arazi , ışık özellikleri , çevresel etkiler ve kullanıcı arayüz nesnelerini klonlamak için bir sahnenin Çevre klasöründen yüklenmesi sırasında kopyalanan varlıklar/özellikler için.
İçe aktarma modunu etkinleştirmek için:
SunucuScriptServisi içine yerleştirdiğiniz Etkinlik Sekanslayıcı modelinin içinde, aşağı kazın ve İçeri değerini Yeniden Yazılan Depolama klasörünün içinde seçin.
Özellikler penceresinde, Değeri kontrol kutusunu açın.
Sahneler oluştur
Bir sahne temelde genel bir olayın veya bir dizi klasör içinde sarılmış bir kesintinin parçasıdır.Her sahne, akışını/etkinliklerini tanımlayan senaryo mantığı içerir ve bir sahne kendi 3D nesnelerini, arazisini, ışık özelliklerini, çevresel etkilerini ve kullanıcı arayüz nesnelerini saklayabilir.
Hızlı bir şekilde başlamak için, modülün ana klasöründe boş bir sahne bulabilirsiniz:
Etkinlik Sekansörü klasörünü genişletin ve Boş Sahne klasörünü bulun.
Tüm Boş Sahne klasörünü Yeniden Yansıtılan Depolama 'ya taşın veya kopyalayın.
Süre uzunluğu
Her sahnenin bir zaman uzunluğu var olmalıdır, saniyeler içinde, süresini tanımlayarak - tıpkı bir film veya konserin belirli bir süresi olduğu gibi.Süre uzunluğu, sahnedeki TimeLength adlı klasörde sayısal bir öznitelik olarak tanımlanır ve doğrudan Studio'da veya programatik olarak aracılığıyla ayarlanabilir.


Çevre
Bir sahnenin Çevresi klasörü, kullanıcıların gördüğü ve duyduğu her şeyi içerir, 3B nesneleri, arazi, aydınlatma özellikleri ve çevresel etkiler dahil, ve kullanıcı arayüzü nesneleri.Bir sahne yüklendiğinde, bu nesneler ve özellikler Workspace , Terrain ve Lighting 'e dağılır, mevcut nesneleri/özellikleri klonlanmış bir alan oluşturmak için değiştirir.
Çevre klasörü aşağıdaki konteynerleri içerir:
Konteyner | Açıklama |
---|---|
Müşteri | Herhangi bir kullanıcının (müşterinin) etkinliğe katılmasıyla yüklenmesi gereken tüm varlıkları içerir, örneğin kullanıcı arayüz nesneleri veya bir animasyon kuklası. |
Oyuncu oluşturma | Kullanıcıların katıldıklarında ortaya çıktığı parçalar içerir. Bu klasördeki herhangi bir parça, SpawnLocation ile benzer davranır. |
Sunucu | Bir sahne ilk oluşturulduğunda sunucuda yüklenecek tüm varlıkları içerir. Çoğu görsel varlığın buraya gönderilmesi önerilir. |
Yer şekli | Sahne arazisi içerir. |
Yıldırım | Küresel ışık özellikleri özellikleri olarak öznitelikler ve atmosferik etkiler gibi değiştiriciler de dahil olmak üzere öznitelikler içerir, örneğin atmosferik etkiler ve post-izleme etkileri. |
Etkinlikler
Bir sahnenin Etkinlikleri klasörü sadece Client ve Sunucu modülleri arasında iletişim kuran bir yer tutucudur.Bu klasöre herhangi bir şey yerleştirmeniz gerekmiyor.
Müşteri
Bu senaryo, şema mantığını istemci üzerinde uygular.
Sunucu
Bu senaryo, sunucuda şema mantığını yürütür.
Sahne şemaları
Bir sahnenin scheması ı, sahnenin zaman çizelgesinde hangi noktada neler olduğunu tanımlar.Bir sahnenin şemasını İstemci ve Sunucu modüllerinde tanımlamalı ve yapılandırma oluştuğunda yönetmek için ömür döngüsü bağlantıları meydana geletmelisiniz.
Hayat döngüsü kancaları
Schema ömür döngüsü kancaları sahne operasyonları meydana gelyönetmenize izin verir. Üretimdeki bir sahne genellikle en basit akışta çalışır:
OnRun, şu arayış sırasında kesilebilir:
- Kurulumda → Çalıştırılırken … arayın → Çalıştırılırken … arayın → Çalıştırılırken → Son Sahne'de arayın
Üç kanca ayrıca sahne yeniden oynatılırsa tekrarlanabilir:
- Kurulumda → Çalıştırılırken → Son Sahnede … yeniden oynat → Kurulumda → Çalıştırılırken → Son Sahnede
Yapılandırmalar
Schema yapılandırmaları bir sahnenin temel işlemlerini tanımlar, örneğin 00:32'de ses çalmak, bu sesle eşzamanlanacak bir animasyon oluşturmak, bir havai fişek gösterisi gibi bir sahne etkinliği planlamak ve daha fazlası.Her yapılandırma, ilk parametre ( self ) konfigurasyon durumolduğunda belirli geri çağrı fonksiyonlarını destekler.
Sahneler arayın
Etkinlik Sekansı eşsiz bir özelliği, bir videoyla aradığınız gibi sahneler etrafında "araştırma" yeteneğidir.In Değiştirme Modu , bir sahneyi üretmeden önce bütün bir çok sahneli etkinliği önizlemek için sahneler arasında da geçiş yapabilirsiniz.
Sahne arayışı herkese erişilebilir değildir çünkü kullanıcılar sadece etkinliğin tadını çıkarmalıdır, böylece zaman akışını kontrol etme yeteneğine sahip olmalıdır.Bunun yerine, olayın ve özel ve/veya içindeki grup ve roller üzerine dayalı izin istemeniz gerekir.
Create a new Script within ServerScriptService . içinde yeni bir oluşturun.
Yeni senaryoya aşağıdaki kodu yapıştırın.
Script - Arayan İzinleri Ayarlamalocal ReplicatedStorage = game:GetService("ReplicatedStorage")local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))EventSequencer.setSeekingPermissions({placeIDs = {},userIDs = {},groups = {{GroupID = , MinimumRankID = },}})Aşağıdaki tabloları setSeekingPermissions çağrısı içinde doldurun:
placeIDs İçinde arama desteği için PlaceId değerlerin virgülle ayrılmış listesi. userIDs Desteklenen yerler içinde arayabilenler için virgülle ayrılmış UserIds listesi. groups Virgülle ayrılmış tablo listesi, her biri bir grup ID'si ve desteklenen yerlerde arayabilecek grup üyelerinin minimum rütbesini içeriyor.
Sahne yöneticisi eklentisi
Sahne Yöneticisi eklentisi, sahnelerin yüklenmesi ve boşaltılması, aydınlatma ve arazi için yararlı bir araçtır.Çizgi Modu kullanmıyorsanız, sahne nesnelerini ve özelliklerini manuel olarak yerleştirmeniz/düzenlemeniz yerine bu eklentiyi kullanmanız önerilir.
Eklentiyi yüklemek için:
Studio'nun Görüşü menüsünden, Alet Çantasını açın.
Yaratıcı Dükkan sekmesi seçildiğinde, düşme menüsünden Eklentiler seçin.
Arama alanında, Sahne Yöneticisi yazın ve eklentibulmak için Enter basın.
Detaylarını görmek için eklentinin simgesine tıklayın ve ardından Yükle düğmesine tıklayın.
Eklenti yüklendikten sonra, Studio'nun Eklentiler sekmesinde görünür.
Sahneleri yükle ve boşalt
sahneler oluşturma nde belirtildiği gibi, bir sahnenin Çevresi klasörü kullanıcıların gördüğü ve duyduğu her şeyi içerir, 3B nesneler de dahil.Eklenti, bir sahnedeki varlıkları hızlı bir şekilde işaretli klasörler içinde veya dışında organize klasörler arasında yüklemenize yardımcı olur.
Eklenti aksiyon | Açıklama |
---|---|
İstemciyi Yükle | Sahnedeki istemci içeriği yüklenmezse, Çevre / İstemci klasörünü Çalışma Alanı / ScenesClient klasörüne taşır. |
Sunucu Yükle | Sahnenin sunucu içeriği yüklenmezse, Çevre / Sunucu klasörünü Çalışma Alanı / ScenesServer klasörüne taşır. |
İstemciyi Yükten Çıkar | Sahnedeki istemci içeriği yüklendiyse, İstemci klasörünü Çalışma Alanı / ScenesClient dönüştürür ve [Sahne] / Çevre klasörüne geri taşır. |
Sunucuyu Yüklemeyi Bırak Unload Server | Sahnenin sunucu içeriği yüklendiyse, Sunucu klasörünü Çalışma Alanı / Sunucu klasöründen [Sahne] / Çevre klasörüne geri taşır. |
Tüm sahneleri yükten kaldır | Her yüklü sahnenin Klienti ve Sunucusu klasörleri, çevresel klasörlerine geri döndürülür Çevre . |
Işıkları kaydet ve yükle
En üst düzey Lighting hizmeti, bir dünyaaydınlatma özelliklerini ve görsel efektlerini tümüyle depolar.Üst düzey bir hizmet olduğundan, bunu belirli bir sahnenin Çevresi / Sunucusu / Çevre / İstemci klasörüne manuel olarak taşıyamazsınız.Bunun yerine, eklentiyi kullanarak özelliklerini ve çocuklarını sahnenin Çevresine / Işığına klasörüne kopyalayabilirsiniz.
Sahnedeki ışık özelliklerini, post-izleme etkilerini, atmosferik etkileri ve gökyüzü kutuları üst düzey Lighting aracılığıyla yapılandırın.
Sahne Yöneticisi eklentisi penceresinde, istenen sahne için Işıklandırma kaydet seçeneğine tıklayın.
Bu sahnenin Çevre / Işık yapılandırmasını seçin ve genişletin ve klasörün öznitelikleri ile aynı aydınlatma özelliklerini göreceksiniz, ayrıca üst seviye Lighting klonlanmış çocukları.
Klonlanmış örnekler Kaydedilmiş öznitelikler Aydınlatma özellikleri ve çocuklar bir sahne için kaydedildikten sonra, eklenti penceresinden Lighting seçerek hızlıca üst seviye **** hizmetine yükleyebilirsiniz.
Arazi kaydet ve yükle
Çünkü içinde üst düzey bir sınıf olduğundan, üretilen veya heykeltıraş tarafından oluşturulan araziyi özel bir sahnenin Çevresi / Sunucusu / İşlevi / Klienti klasörüne manuel olarak taşıyamazsınız.Bunun yerine, eklentiyi kopyalamak için sahnenin Çevresi / Arazi klasörüne kullanabilirsiniz.
Sahnedeki araziyi üst seviye Arazi hizmeti aracılığıyla yapılandırın.
Sahne Yöneticisi eklentisi penceresinde, istenen sahne için Arazi kaydet seçeneğine tıklayın.
Bu sahnenin Çevre / Arazi klasörünü seçin ve genişletin ve kaydedilen araziyi temsil eden bir Arazi Bölgesi nesnesi göreceksiniz.
Bir sahne için arazi kaydedildikten sonra, arayüz penceresinden Terrain seçeneğine tıklayarak hızlıca üst seviye **** hizmetine yükleyebilirsiniz.
API referansı
Eşema ömrü kancaları
OnSetup'ta
OnSetup ömür döngüsü kancası, OnRun veya OnEndScene süresince referans edilecek varlıklar ve değişkenlerin başlatılması için tasarlanmıştır, sahnedeki süre için ayarlanan connections gibi, vb.Bu bağlantı, yüklemede mevcut zamanı okumanıza izin veren timePositionObject çözümleme parametresini alır.
Müşteri Şeması
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))
local Schema = EventSequencer.createSchema()
local clientEnvironment
local serverEnvironment
local dummy
Schema.OnSetup = function(timePositionObject)
print("OnSetup (Client)")
-- Sahne çevrelerine erişim; Çizgili Mod'a uygulanmaz
clientEnvironment = EventSequencer.getCurrentSceneEnvironment()
serverEnvironment = EventSequencer.getCurrentServerEnvironmentFromClient()
-- Varlıkları bekleyin
dummy = clientEnvironment:WaitForChild("Dummy")
print("Current time is:", timePositionObject.Value)
end
Sunucu Şeması
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))
local Schema = EventSequencer.createSchema()
local serverEnvironment
local partColorConnection
local changePartColorEvent = script.Parent.Events.ChangePartColor
Schema.OnSetup = function(timePositionObject)
print("OnSetup (Server)")
-- Sahne çevresine erişim; Çizgili Mod'a uygulanmaz
serverEnvironment = EventSequencer.getCurrentSceneEnvironment()
partColorConnection = changePartColorEvent.OnServerEvent:Connect(function(player, changedPart, newColor)
serverEnvironment.changedPart.Color = newColor
end)
print("Current time is:", timePositionObject.Value)
end
OnRun'da
OnRun , bir schemanın içindeki ana operasyonel döngü bağlantısıdır.Sahne için tüm zamanlı yapılandırmaları içermelidir, örneğin ses çalmak veya bir animasyon örneği ile bir etkinliğin planlanması gibi bir havai fişek gösterisi gibi bir olayın planlanması.
Müşteri Şeması
Schema.OnRun = function()
print("OnRun (Client)")
local MainAudio = Schema:audio({
StartTime = 1,
SoundId = "rbxassetid://1838673350",
OnStart = function(self)
print("Audio playing")
end,
OnEnd = function(self)
print("Audio ended")
end
})
end
Son Sahnede Sona OnEndScene
OnEndScene ömür döngüsü, sahnede kalan herhangi bir şeyi temizlemek için yararlıdır, örneğin OnSetup veya OnRun süresince kalan bağlantıları koparmak gibi sahnede öne çıkan her şeyi temizlemek için.
Sunucu Şeması
Schema.OnEndScene = function()
print("OnEndScene (Server)")
if partColorConnection then
partColorConnection:Disconnect()
partColorConnection = nil
end
end
Schema yapılandırmaları
sestarihi: 2020-04-06
Belirli bir zamanda çalan bir çalışma alanında bir Sound nesnesi oluşturur.Ses, sahne bitince veya Sound nesne oynatma işlemi bitince silinir.
Yapılandırma Anahtarı | Açıklama |
---|---|
StartTime | Sahne süresine göre sesi ne zaman oynayacağınız, saniyeler içinde. |
SoundId | Oynanacak sesin oynakimliği. |
OnStart | Ses çalmaya başladığında ateşlemek için özel işlev. |
OnEnd | Ses oynatıldığında ateşlemek için özel işlev. |
Volume | Sound nesnenin hacmi; varsayılan değer 0.5'tir. |
Müşteri Şeması
Schema.OnRun = function()
print("OnRun (Client)")
local MainAudio = Schema:audio({
StartTime = 1,
SoundId = "rbxassetid://1838673350",
OnStart = function(self)
print("Audio playing")
end,
OnEnd = function(self)
print("Audio ended")
end
})
end
animasyon
Belirli bir zamanda oynayan bir Animation oluşturur.
Yapılandırma Anahtarı | Açıklama |
---|---|
StartTime | Animasyonu sahne süresine göre ne zaman oynayacağınız, saniyeler içinde. |
EndTime | Animasyonu sahne süresiyle ilişkili olarak bitirme zamanı (saniyeler içinde). Opsiyonel. |
Rig | Animasyonu oynamak için animasyon ekipmanı. |
AnimationId | Oynanacak animasyonun oynakimliği. |
Speed | animasyonoynatma hızı; varsayılan 1'dir. |
FadeInTime | animasyonkaybolacak süre, saniyeler içinde; varsayılan değer 0.2'dir (saniye). |
FadeOutTime | animasyonyok etmek için gereken süre, saniyeler içinde; varsayılan değer 0.2'dir (saniye). |
OnStart | Animasyon oynatılmaya başladığında ateşlemek için özel işlev. |
OnEnd | Animasyon oynatıldığında ateşlemek için özel işlev. |
Looped | animasyondöngüye sokmak; varsayılanı false dir. |
SyncToAudio | Animasyonu ses yapılandırmasına senkronize etmeyi tanımlayan tablo. Aşağıdaki anahtarları kabul eder:
|
Müşteri Şeması
Schema.OnRun = function()
print("OnRun (Client)")
local MainAudio = Schema:audio({
StartTime = 1,
SoundId = "rbxassetid://1838673350",
})
local DanceAnimation = Schema:animate({
AnimationId = "rbxassetid://3695333486",
Rig = Dummy,
Speed = 1,
FadeInTime = 0.1,
FadeOutTime = 0.3,
SyncToAudio = {
Audio = MainAudio,
StartAtAudioTime = 5,
},
OnStart = function(self)
print("Animation playing")
end,
OnEnd = function(self)
print("Animation stopped")
end
})
end
genç
Aranırken ve dinamik olarak birleşirken korunan yapılandırılabilir bir Tween oluşturur, yani gençleri ayrı noktalarda zincirleyebilir ve her şey beklenen şekilde çalışır ve senkronize edilir.
Yapılandırma Anahtarı | Açıklama |
---|---|
StartTimes | Sahne süresine göre başlangıç zamanları tablosu, saniyeler içinde. |
Tween | Nesneyi ve özellikleri tween için tanımlayan tablo. Aşağıdaki anahtarları kabul eder:
|
OnStart | Genç oynayışa başladığında ateş edecek özel işlev. |
OnHeartbeat | Her Heartbeat üzerinde ateş etmek için özel işlev; ikinci parametre olarak genç alfa alır |
OnEnd | Genç yüzgeç oynadıktan sonra ateşlemek için özel işlev. |
SyncToAudio | Gençliğin bir ses yapısına senkronize edilmesini sağlayıp sağlamadığını tanımlayan tablo. Aşağıdaki anahtarları kabul eder:
|
Müşteri Şeması
Schema.OnRun = function()
print("OnRun (Client)")
local MainAudio = Schema:audio({
StartTime = 1,
SoundId = "rbxassetid://1838673350",
})
local LightFadeOut = Schema:tween({
StartTimes = {29.884},
Tween = {
Object = game:GetService("Lighting"),
Info = TweenInfo.new(2, Enum.EasingStyle.Sine, Enum.EasingDirection.Out),
Properties = {
Brightness = 0,
}
},
SyncToAudio = {
Audio = MainAudio,
StartAtAudioTimes = {5, 7.2, 9.4, 11.6},
},
OnStart = function(self)
print("Tween playing")
end,
OnHeartbeat = function(self, alpha)
print("Tween alpha", alpha)
end,
OnEnd = function(self)
print("Tween completed")
end,
})
end
aralık
Belirtilen bir süre boyunca belirtilen bir frekans üzerinde özel bir geri arama işlevi yürütür, saniyeler içinde.Flaş ışıklar, bir sesin yoğunluğu gibi olayları tekrarlamak için yararlıdır, vs.En düşük olası frekans 0 saniye, ancak teknik olarak minimum frekans daima Heartbeat 'ye sabitlenir.
Yapılandırma Anahtarı | Açıklama |
---|---|
StartTime | Sahne süresine göre aralık süresinin başlangıcı, saniyeler içinde. |
EndTime | Sahne süresine göre aralık süresinin sonu, saniyeler içinde. |
Frequency | OnInterval fonksiyonu, saniyeler içinde kaç kez ateşlenmelidir, ilk çalışma StartTime 'de olacak. |
OnStart | Dizi aralıkları başladığında ateşlenmesi gereken özel işlev. |
OnInterval | Belirtilen süre içinde her süre aralığında ateş edecek özel işlev ( StartTime ile EndTime ). |
OnEnd | Dizi aralıkları sona erdiğinde ateşlemek için özel işlev. |
SyncToAudio | Aralık süresini audio yapılandırmasına senkronize etmeyi tanımlayan tablo. Aşağıdaki anahtarları kabul eder:
|
Müşteri Şeması
Schema.OnRun = function()
print("OnRun (Client)")
local MainAudio = Schema:audio({
StartTime = 1,
SoundId = "rbxassetid://1838673350",
})
local ClientTimerUpdate = Schema:interval({
Frequency = 1,
SyncToAudio = {
StartAtAudioTime = 2.5,
EndAtAudioTime = 10,
Audio = MainAudio
},
OnInterval = function(self)
print(MainAudio.Sound.TimePosition, MainAudio.CurrentSoundIntensityRatio)
end,
})
end
programlama
süre aralığına benzer, fakat aynı olay için bir kez iki kez havai fişek gösterisini planlamak gibi çok sayıda özel başlangıç zamanı tanımlayabilirsiniz, bir sahnede.
Yapılandırma Anahtarı | Açıklama |
---|---|
StartTimes | Sahne süresine göre başlangıç zamanları tablosu, saniyeler içinde. |
OnStart | StartTimes tablosundaki her belirtilen sürede ateş eden özel işlev. |
Skippable | Planlanan etkinin geç katan kullanıcılar veya planlanan bir başlangıç zamanından önce aranan için atlanabilir olup olmadığını belirleyen bir mantık değeri tanımlar. Boolean defining whether the scheduled event can be skipped for users who join late, or for when seeking ahead of a scheduled start time.false olarak ayarlanırsa, katılma/araştırma süresinden önce planlanan tüm etkinlik başlama zamanları o katılma/araştırma süresinde gerçekleşecektir. olarak ayarlanırsa, sadece katılma/araştırma sonrasında planlanan başlangıç süreleri meydana gel.Varsayılan değer false dir. |
SyncToAudio | Programın bir ses yapılandırmasına senkronize edilmesini sağlayıp sağlamadığını tanımlayan tablo. Aşağıdaki anahtarları kabul eder:
|
Müşteri Şeması
Schema.OnRun = function()
print("OnRun (Client)")
Schema:schedule({
StartTimes = {5, 27.25},
OnStart = function(self)
-- Geçici kalp atış bağlantısını başlatma
local tempConnection = RunService.Heartbeat:Connect(function()
end)
-- Bağlantı çerçevesini bilgilendirin
Schema:inform(tempConnection)
end
})
end
bilgilendir
Çerçeveyi herhangi bir modül, UI nesnesi, bağlantı vb. konusunda bilgilendirirwhich are created in the OnRun lifecycle hook, ensuring they are properly cleaned up when araştırır .Kullanım durumları şunları içerir:
Sahne süresinin daha önceki bir noktasına ulaşmak istendiğinde bağlantı temizlenmesi için geçici bir ad-hoc bağlantının çerçevesini bilgilendirmek, örneğin RunService.Heartbeat şöyle
Sunucu ŞemasıSchema.OnRun = function()print("OnRun (Server)")Schema:schedule({StartTimes = {5},OnStart = function(self)-- Geçici kalp atış bağlantısını başlatmalocal tempConnection = RunService.Heartbeat:Connect(function()end)-- Bağlantı çerçevesini bilgilendirinSchema:inform(tempConnection)end})endBağlantı veya diğer referansları başlatan bir ModuleScript ömür döngüsü kancası sırasında özel bir "temizleme" işlevini çağırmak OnRun ömür döngüsü kancası sırasında
Sunucu Şemasılocal ReplicatedStorage = game:GetService("ReplicatedStorage")local RunService = game:GetService("RunService")local customModule = require(ReplicatedStorage:WaitForChild("CustomModule"))local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))local Schema = EventSequencer.createSchema()Schema.OnRun = function()print("OnRun (Server)")Schema:schedule({StartTimes = {5},OnStart = function(self)-- Özel modülde "init" işlevini çağırcustomModule.init()-- Sahneleri temizleme sırasında "temiz" işlevini özel modülde çağırınSchema:inform(customModule, customModule.clean)end,})endModuleScript - Özel Modüllocal RunService = game:GetService("RunService")local CustomModule = {}CustomModule.init = function()-- Kalp atış bağlantısını başlatmaCustomModule.connection = RunService.Heartbeat:Connect(function()end)endCustomModule.clean = function()-- Bağlantıyı kes ve kalp atışı bağlantısını temizleif CustomModule.connection thenCustomModule.connection:Disconnect()CustomModule.connection = nilendendreturn CustomModule
Fonksiyonlar
loadScene yükle
loadScene(sceneName: string , başlangıç zamanı: number ?)
Programatik olarak bir sahneyi sceneName tarafından yükler ve başlangıcından itibaren startTime başlatır.Sahnenin sunucudan yüklenmesi için 5 saniyelik bir "lütuf dönemi" olacak ve sahne oynatmaya başlayacak, arama gerçekleşmeden önce.Bu, yani eğer 4:15:00'de loadScene("[SceneName]", 20) 'yi ararsanız, çerçeve talep edilen 20'e ek olarak 5 saniye bekleyecek ve sahneyi 4:15:25'te başlatacak, saat 4:15:00'de.
Komut Dosyası
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))
-- Mevcut sahne bitince yüklenecek bir sonraki sahneyi bulun
EventSequencer.onOrchestrationFinished:Connect(function(endedSceneName)
if endedSceneName == "PreShow" then
-- “Ön Gösteri” bitirdi; konserde ilk sahneyi yükle
EventSequencer.loadScene("Track1")
elseif endedSceneName == "Track1" then
-- “Track1” bitirdi; konserde ikinci sahneyi yükle
EventSequencer.loadScene("Track2")
else
-- Gösteri öncesi sahneye geri dönün
EventSequencer.loadScene("PreShow")
end
end)
schema oluştur createSchema
createSchema(): table
Sahneye mantık oluşturmak için bir örnek sahne şeması döndürür.
Müşteri Şeması
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))
local Schema = EventSequencer.createSchema()
Schema.OnSetup = function(timePositionObject)
print("OnSetup (Client)")
end
aramak
ara(süre: number )
time değeri, saniyeler içinde, şu anda yüklü sahneden başlayarak aranır.
Komut Dosyası
local ReplicatedStorage = game:GetService("ReplicatedStorage")local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))EventSequencer.seek(95.58)
setSceneWarningTime zamanı
setSceneWarningTime(endSceneTimeWindow: number )
Bir uyarı gönderilen tüm sahnelerin sonundan itibaren tüm süre miktarını ayarlar.Uyarıyı istemci tarafından onSceneEndingWarningForClient veya sunucu tarafından onSceneEndingWarningForServer aracılığıyla tespit edebilirsiniz.
Komut Dosyası
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))
-- Sahneyi yükle
EventSequencer.loadScene("BeautifulScene")
-- Sahnenin bitmesinden 5 saniye önce uyarı süresini ayarlayın
EventSequencer.setSceneWarningTime(5)
-- Sahnelerin bitirüzere olduğunu tespit et
EventSequencer.onSceneEndingWarningForServer:Connect(function()
warn("Scene is about to end!")
end)
setSeekingPermissions seçeneği
setSeekingPermissions(permler: table )
Etkinliğin ve özel ve/veya içindeki grup ve roller üzerine dayalı izin istemelerini sağlar.Daha fazla bilgi için sahneleri arayın ve değiştirin bakın.
getCurrentSceneEnvironment al
getCurrentSceneEnvironment(): Folder (YIELDS)
Mevcut sahnenin istemci tarafında veya sunucu tarafında Çevre klasörünü döndürür, çağrının İstemci şemasından veya Sunucu şemasından gelip gelmediğine bağlı olarak.
Müşteri Şeması
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))
local Schema = EventSequencer.createSchema()
local clientEnvironment
local serverEnvironment
Schema.OnSetup = function(timePositionObject)
print("OnSetup (Client)")
-- Sahne çevrelerine erişim; Çizgili Mod'a uygulanmaz
clientEnvironment = EventSequencer.getCurrentSceneEnvironment()
serverEnvironment = EventSequencer.getCurrentServerEnvironmentFromClient()
print("Current time is:", timePositionObject.Value)
end
Sunucu Şeması
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))
local Schema = EventSequencer.createSchema()
local serverEnvironment
local partColorConnection
local changePartColorEvent = script.Parent.Events.ChangePartColor
Schema.OnSetup = function(timePositionObject)
print("OnSetup (Server)")
serverEnvironment = EventSequencer.getCurrentSceneEnvironment()
partColorConnection = changePartColorEvent.OnServerEvent:Connect(function(player, changedPart, newColor)
serverEnvironment.changedPart.Color = newColor
end)
end
getCurrentServerEnvironmentFromClient'tan alın
getCurrentServerEnvironmentFromClient(): Folder (YIELDS)
Mevcut sahnenin sunucu tarafındaki Çevre klasörünü döndürür.getCurrentSceneEnvironment 'den farklı olarak, bunu İstemci sınama senaryosundan çağırabilirsiniz.
Müşteri Şeması
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))
local Schema = EventSequencer.createSchema()
local clientEnvironment
local serverEnvironment
Schema.OnSetup = function(timePositionObject)
print("OnSetup (Client)")
-- Sahne çevrelerine erişim; Çizgili Mod'a uygulanmaz
clientEnvironment = EventSequencer.getCurrentSceneEnvironment()
serverEnvironment = EventSequencer.getCurrentServerEnvironmentFromClient()
print("Current time is:", timePositionObject.Value)
end
isLoadingScene sahne yükleniyor
isLoadingScene(): boolean
Bir sahnenin şu anda yüklendiğini bilmek için sunucudan çağrılır.
Komut Dosyası
local ReplicatedStorage = game:GetService("ReplicatedStorage")local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))print(EventSequencer.isLoadingScene())while EventSequencer.isLoadingScene() dotask.wait()endprint("Scene loaded")
Etkinlikler
onSceneEndingWarningForClient için
Sahne sona bitirönce istemci üzerinde ateş eder.Varsayılan süre 3 saniye, ancak bunu setSceneWarningTime aracılığıyla yapılandırabilirsiniz.Bu etkinlik yalnızca bir LocalScript içinde bağlanabilir.
YerelScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))
-- Sahnelerin bitmek üzere olduğunu tespit et (client tarafı)
EventSequencer.onSceneEndingWarningForClient:Connect(function()
warn("Scene is about to end!")
end)
onSceneEndingWarningForServer için
Sahne sona bitirönce sunucuda yangınlar çıkar.Varsayılan süre 3 saniye, ancak bunu setSceneWarningTime aracılığıyla yapılandırabilirsiniz.Bu etkinlik yalnızca bir Script içinde bağlanabilir.
Komut Dosyası
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))
-- Sahnenin bitmek üzere olduğunu tespit et (sunucu tarafı)
EventSequencer.onSceneEndingWarningForServer:Connect(function()
warn("Scene is about to end!")
end)
onSceneLoadedForClient için
Sahne başladığında istemci üzerinde ateş eder. Bu olay yalnızca bir LocalScript içinde bağlanabilir.
YerelScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))
-- Sahnelerin başladığını tespit et (client tarafı)
EventSequencer.onSceneLoadedForClient:Connect(function()
warn("Scene is starting!")
end)
onOrchestrationFinished üzerinde
Bir sahne zaman uzunluğuna ulaştığında ve etkili bir şekilde sona erdiğinde sunucuda yangınlar çıkar.Bu etkinlik, bitirdiğiniz sahne için bir endedSceneName dize adı alır ve bu etkinliği koşullu olarak başka bir sahne yüklemeye zincirleyebilirsiniz.Sadece bir Script içinde bağlanabilir.
Komut Dosyası
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))
-- Mevcut sahne bitince yüklenecek bir sonraki sahneyi bulun
EventSequencer.onOrchestrationFinished:Connect(function(endedSceneName)
if endedSceneName == "PreShow" then
-- “Ön Gösteri” bitirdi; konserde ilk sahneyi yükle
EventSequencer.loadScene("Track1")
elseif endedSceneName == "Track1" then
-- “Track1” bitirdi; konserde ikinci sahneyi yükle
EventSequencer.loadScene("Track2")
else
-- Gösteri öncesi sahneye geri dönün
EventSequencer.loadScene("PreShow")
end
end)