Etkinlik Sıralayıcı

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

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:

  1. Görüntüden , Araç çantasını açın ve Yaratıcı mağazasını seçin sekmesini seçin.

    Toolbox toggle button in Studio
  2. 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 >.

  3. Yerini ve tıklayın Geliştirici Modülleri düğmesi.

  4. Etkinlik Sekansı modülünü bulun ve tıklayın veya 3B görüntüye sürükleyin ve bırakın.

  5. 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:

  1. 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.

  2. Ö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:

  1. Etkinlik Sekansörü klasörünü genişletin ve Boş Sahne klasörünü bulun.

  2. 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:

KonteynerAçı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:

Üç kanca ayrıca sahne yeniden oynatılırsa tekrarlanabilir:

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.

  1. Create a new Script within ServerScriptService . içinde yeni bir oluşturun.

  2. Yeni senaryoya aşağıdaki kodu yapıştırın.

    Script - Arayan İzinleri Ayarlama

    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local EventSequencer = require(ReplicatedStorage:WaitForChild("EventSequencer"))
    EventSequencer.setSeekingPermissions({
    placeIDs = {},
    userIDs = {},
    groups = {
    {GroupID = , MinimumRankID = },
    }
    })
  3. 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.
    userIDsDesteklenen yerler içinde arayabilenler için virgülle ayrılmış UserIds listesi.
    groupsVirgü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:

  1. Studio'nun Görüşü menüsünden, Alet Çantasını açın.

    Toolbox toggle button in Studio
  2. Yaratıcı Dükkan sekmesi seçildiğinde, düşme menüsünden Eklentiler seçin.

  3. Arama alanında, Sahne Yöneticisi yazın ve eklentibulmak için Enter basın.

  4. Detaylarını görmek için eklentinin simgesine tıklayın ve ardından Yükle düğmesine tıklayın.

  5. 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 aksiyonAçı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.

  1. Sahnedeki ışık özelliklerini, post-izleme etkilerini, atmosferik etkileri ve gökyüzü kutuları üst düzey Lighting aracılığıyla yapılandırın.

  2. Sahne Yöneticisi eklentisi penceresinde, istenen sahne için Işıklandırma kaydet seçeneğine tıklayın.

  3. 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.

  1. Sahnedeki araziyi üst seviye Arazi hizmeti aracılığıyla yapılandırın.

  2. Sahne Yöneticisi eklentisi penceresinde, istenen sahne için Arazi kaydet seçeneğine tıklayın.

  3. 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
StartTimeSahne süresine göre sesi ne zaman oynayacağınız, saniyeler içinde.
SoundIdOynanacak sesin oynakimliği.
OnStartSes çalmaya başladığında ateşlemek için özel işlev.
OnEndSes oynatıldığında ateşlemek için özel işlev.
VolumeSound 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
StartTimeAnimasyonu sahne süresine göre ne zaman oynayacağınız, saniyeler içinde.
EndTimeAnimasyonu sahne süresiyle ilişkili olarak bitirme zamanı (saniyeler içinde). Opsiyonel.
RigAnimasyonu oynamak için animasyon ekipmanı.
AnimationIdOynanacak animasyonun oynakimliği.
Speedanimasyonoynatma hızı; varsayılan 1'dir.
FadeInTimeanimasyonkaybolacak süre, saniyeler içinde; varsayılan değer 0.2'dir (saniye).
FadeOutTimeanimasyonyok etmek için gereken süre, saniyeler içinde; varsayılan değer 0.2'dir (saniye).
OnStartAnimasyon oynatılmaya başladığında ateşlemek için özel işlev.
OnEndAnimasyon oynatıldığında ateşlemek için özel işlev.
Loopedanimasyondöngüye sokmak; varsayılanı false dir.
SyncToAudioAnimasyonu ses yapılandırmasına senkronize etmeyi tanımlayan tablo. Aşağıdaki anahtarları kabul eder:
  • Audioses yapılandırmasına referans.
  • StartAtAudioTime – Sesin süresine göre animasyonu oynama zamanı.
  • EndAtAudioTime – Sesin süresiyle ilgili sesbitirmek için isteğe bağlı süre.
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
StartTimesSahne süresine göre başlangıç zamanları tablosu, saniyeler içinde.
TweenNesneyi ve özellikleri tween için tanımlayan tablo. Aşağıdaki anahtarları kabul eder:
OnStartGenç oynayışa başladığında ateş edecek özel işlev.
OnHeartbeatHer Heartbeat üzerinde ateş etmek için özel işlev; ikinci parametre olarak genç alfa alır
OnEndGenç yüzgeç oynadıktan sonra ateşlemek için özel işlev.
SyncToAudioGençliğin bir ses yapısına senkronize edilmesini sağlayıp sağlamadığını tanımlayan tablo. Aşağıdaki anahtarları kabul eder:
  • Audioses yapılandırmasına referans.
  • StartAtAudioTimes – sessüresiyle ilgili tween'in oynanacağını tanımlayan başlangıç ​​zamanları tablosu.
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
StartTimeSahne süresine göre aralık süresinin başlangıcı, saniyeler içinde.
EndTimeSahne süresine göre aralık süresinin sonu, saniyeler içinde.
FrequencyOnInterval fonksiyonu, saniyeler içinde kaç kez ateşlenmelidir, ilk çalışma StartTime 'de olacak.
OnStartDizi aralıkları başladığında ateşlenmesi gereken özel işlev.
OnIntervalBelirtilen süre içinde her süre aralığında ateş edecek özel işlev ( StartTime ile EndTime ).
OnEndDizi aralıkları sona erdiğinde ateşlemek için özel işlev.
SyncToAudioAralık süresini audio yapılandırmasına senkronize etmeyi tanımlayan tablo. Aşağıdaki anahtarları kabul eder:
  • Audioses yapılandırmasına referans.
  • StartAtAudioTime – Sesin süresine göre aralık süresini başlatma zamanı.
  • EndAtAudioTime – Sesin süresiyle ilgili aralık süresini bitirmek için seçilen zaman.
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
StartTimesSahne süresine göre başlangıç zamanları tablosu, saniyeler içinde.
OnStartStartTimes tablosundaki her belirtilen sürede ateş eden özel işlev.
SkippablePlanlanan 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.
SyncToAudioProgramın bir ses yapılandırmasına senkronize edilmesini sağlayıp sağlamadığını tanımlayan tablo. Aşağıdaki anahtarları kabul eder:
  • Audioses yapılandırmasına referans.
  • StartAtAudioTimes – sessüresiyle ilgili OnStart fonksiyonunu ateşleme zamanını tanımlayan başlangıç ​​zaman tablosu.
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şlatma
    local tempConnection = RunService.Heartbeat:Connect(function()
    end)
    -- Bağlantı çerçevesini bilgilendirin
    Schema:inform(tempConnection)
    end
    })
    end
  • Bağ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ğır
    customModule.init()
    -- Sahneleri temizleme sırasında "temiz" işlevini özel modülde çağırın
    Schema:inform(customModule, customModule.clean)
    end,
    })
    end
    ModuleScript - Özel Modül

    local RunService = game:GetService("RunService")
    local CustomModule = {}
    CustomModule.init = function()
    -- Kalp atış bağlantısını başlatma
    CustomModule.connection = RunService.Heartbeat:Connect(function()
    end)
    end
    CustomModule.clean = function()
    -- Bağlantıyı kes ve kalp atışı bağlantısını temizle
    if CustomModule.connection then
    CustomModule.connection:Disconnect()
    CustomModule.connection = nil
    end
    end
    return 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() do
task.wait()
end
print("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)