Instance
*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.
Instans, Roblox sınıf hiyerarının bir parçası olabilecek DataModel ağacının tüm sınıfları için temel sınıfıdır. Doğrudan Instans nesneleri oluşturulmaz.
İンスタンス'ın kod yoluyla nesneleri oluşturmak için kullandığı özel bir işlevi vardır. Bu işlev kod adını bir parçası olarak alır ve oluşturulan nesneyi döndürür.抽象 sınıf ve hizmetler İン스タンス'ın yeni . fonksiyonu ile oluşturulamaz.
Özet
Özellikler
Class.Instance ve onun yolundaki çizgililer klonlanabilir ve Instance:Clone() kullanılarak kaydedilebilir.
Bu konteyner içindeki kodlar için kullanılabilen yetenek seti.
Class.Instance ın benzersiz bir tanımlayıcısı.
Class.Instance 'in hierarchical ebeveynini belirler.
CoreGui nesnelerini korumak için kullanılan artık deprecated bir özellik.
İン스턴ansı Sandboxed Container olarak döndürür.
Yöntemler
İн스ansına bir durumuygular.
Bu işlev, bir durumtüm çocuklarını yok eder.
Bir instansın ve tüm yeraltılarının bir kopyasını oluşturur, Archivable olmayan yeraltıları görmez.
Class.Instance.Parent özelliğini nil olarak ayarlar, Instance.Parent özelliğini kilitler, tüm bağlantıları keser ve tüm çocuklar için Yok Et'i çağırır.
Bağlantısına eşit olan ilk atalarını Instance olarak iade eder.
Verilen kullanıcının kullanıcı adına eşdeğer olan Instance ile ilgili ilk atalarını döndürür.
Class.Instance ın ilk atalarını için Object:IsA() verir ve bu adlandırma için Class.Instance için doğru.
Verilen isimle bulunan Instance ın ilk çocuğunu döndürür.
Verilen kullanıcının Instance ının eşdeğer olduğu ilk çocuğu döndürür.
Class.Instance ın ilk çocuğunu döndürür, Object:IsA() verilen kullanıcının isminde gerçekten true değerine sahiptir.
Verilen şu Instance.Name ile bululan ilk soyundan döndürür.
Eğer varsa Actor İн스턴스 ile ilişkili döndürür.
Verilen özniteliğin atanan değerini iade eder.
Verilen özellik değiştirildiğinde çalıştığı olayı döndürür.
İн스anz'ın özelliklerinin bir diziniyi döndürür.
Tüm durumçocuklarını içeren bir matris döndürür.
Roblox'un kullanıcıları tarafından içeride kullanılan gizli kodlanmış bir dizi dönüşür.
Enstrümanın tüm soyundan oluşan bir matrisi iade eder.
durumkökeni hakkında bir yuva döndürür.
Enstansa uygulanan tüm durumbir matrisi alır.
İンстанsta belirli bir etiket olup olmadığını kontrol edin.
Bir Instance ile verilen soyundan bir ataletse geri döndürür.
Bir Instance ile verilen atasının bir soyundan olup olmadığını geri döndürür.
durum'tan bir etiket kaldırır.
Özellik, verilen isme atributunu verilen değere ayarlar.
Class.Instance ile verilen isimle çocuğunu döndürür. Eğer çocuk mevcut değilse, mevcut çocuk kadar günlük kayıt üretir.
Etkinlikler
Class.Instance.Parent öğenin veya atalarından biri değiştirildiğinde ateşlenir.
Bir özellik Instance 'da değiştirildiğinde ateş eder.
Bir nesneye bu Instance e bağlandıktan sonra yanar.
Bir çocuğu bu Instance 'den kaldıktan sonra ateş eder.
Bir yok edici, Instance'a bir atlağı ekledikten sonra ateş eder.
Class.Instance olarak adlandırılan bir soyundan derhal önce yanar.
Anında yanar (ya da gecikir) Instance:Destroy() ile bir instans yok edilmeden önce.
Özellikler
Archivable
Bu özellik, deneyin yayınlanması veya kaydedilmesindeki istisna, veya Clone() 'in instansın atalarından birinde çağrılması durumunda deneyin ortaya çıkmasını
Bir nesneyi Studio'da Kopyala veya Kopyala / Yapıştır / 2>Yapıştır2> seçeneklerini kullanarak kopyalayabilirsiniz. Ayrıca kopyalanan nesnenin kendi 5> Class.Instance.Archivable|Archivable özelliğini5>
local part = Instance.new("Part")print(part:Clone()) --> Partpart.Archivable = falseprint(part:Clone()) --> nil
Capabilities
Bu durumdaki kodlar için kullanılabilen yeteneklerin seti. Yeteneklerin etkinleştirilmesi için Instance.Sandboxed özelliği etkinleştirilmelidir.
Bu özellik deneysel bir özellik tarafından kullanılıyor. Ayrıntılar için Kript Yetenekleri sayfasına bakın.
Name
Class.Instance ın benzersiz bir tanımlayıcısı.
Bu özellik, bir nesneyi tanımlayan bir tanımlayıcıdır. İsimler, her zaman bir nesnenin eşsiz kimliğini tanımlayan bir tanımlayıcı değildir; bir nesnenin birden fazla çocuğu aynı ismi paylaşabilir. İsimler, öğenin yapısının yanı sıra, kodların belirli nesneleri erişebilmesi için izin verilmesiyle 100 karakterden fazla bir boy
Bir nesnenin ismi genellikle aşağıdaki yöntemleri kullanarak nesneye erişmek için veri modeli hiyerarşisini kullanarak nesneye erişmek için kullanılır:
local baseplate = workspace.Baseplatelocal baseplate = workspace["Baseplate"]local baseplate = workspace:FindFirstChild("BasePlate")
Nesne dot operatörü kullanılarak erişilebilir hale getirilmek için, bir nesnenin adı belirli bir sintilde başlamalıdır. Nesne adı bir alt çizgi veya harf ile başlamalıdır. Nesne adının geri kalan kısmı sadece harfler, sayılar ve üstlükler (başka özel karakterler yok) içerebilir. Eğer nesne adı
Aynı ada sahip birden fazla nesne varsa, aynı ismi taşıyan bir nesneyi indekslemek herhangi bir nesneyi Instance:FindFirstChild() ile eşdeğer olarak, ancak istediğiniz nesneyi değil, iade eder. kodaracılığıyla belirli bir nesneye erişilmesi gerekirse, nesnenin eşdeğer adını vermek
Not, durumhierarşisini gösteren tüm bir isim alabilirsiniz kullanarak Instance:GetFullName() .
Parent
Ebeveyn öğesi, Instance 'in yerleşik ebeveyni belirler. Aşağıdaki terminoloji, bu öğün nasıl ayarlanacağı hakkında konuşulduğunda genellikle kullanılır:
- Bir nesne, onun Ebeveyni belirlenmişken, bir başka nesneyi çocuk ( ebeveyni belirlenmişken başka bir ebeveyn) olarak kullanır.
- Bir Class.Instance 의 çıplak torunları, o nesnenin çocuklarına ek olarak, çocukların çocuklarını da içerir.
- Bir Class.Instance 'in ataları, bir Instance 'in soyundan olan tüm nesnelerdir.
Bu özellikten diğer API üyelerinin isimlerini aldığını birçok başka API üyesi, örneğin GetChildren ve FindFirstChild alır.
Class.Instance:Remove()|Remove işlevi, bu özelliği nil olarak ayarlar. Destroy çağrısı, ebeveyn bir Class.Instance ile tüm onun çıkışlarını Instance ayarlar ve ayrıca 1> kilit
Bu özellik ayrıca, bir nesnenin oyunda mevcut olup olmadığını yönetmek için kullanılır. Bir nesnenin ebeveyni DataModel ile bağlantıda ise, oyun içindeki bir başka nes
Yeni oluşturulan nesneler kullanılarak Instance.new() olmayacak bir ebeveyn olmayacak ve genellikle bir ebeveyn ayarlanana kadar görünmez veya işlevsel olmayacak. Bir nesnenin en temel yaratılışı iki adımda oluşur: nesneyi oluştur ve sonra ebeveynini ayarla.
-- Create a part and parent it to the workspacelocal part = Instance.new("Part")part.Parent = workspace-- Instance new can also take Parent as a second parameterInstance.new("NumberValue", workspace)
Bir örneği DataModel ın ebeveyn olarak atılırken değiştirilirse, motor gerekirse içeride ekstra iş yapmak zorunda kalabilir (yeniden kopyalama, şekillendirme ve GUI yerleştirme gibi şeyler için). Mümkün olduğunda, bir durumözelliklerini önce yer
Nesne Kopyalama
Sunucunun oluşturduğu bir nesne, yeniden oluşturulan bir nesneye ebeveyn olana kadar kliyentlere kopyalanmayacaktır. Bir nesneyi oluştırırken birçok özellik değiştirilirse, ebeveyni son olarak belirle önerilir. Bu, nesnenin bir kopyasının oluşturulmasını sağlar, böylece birçok özellik değiştiril
local part = Instance.new("Part") -- Burada ikinci parametreyi kullanmayınpart.Anchored = truepart.BrickColor = BrickColor.new("Really red")-- Potansiyel olarak birçok başka özellik değişikliği buraya buraya gitabilir...-- Ana Sayfayı Her Zaman Sonra Ayarla!part.Parent = workspace
Ancak, eğer parçalarınızı Model olarak bir ebeveynlere ayarlarsanız, her bir parçayı bu modelin ebeveyni olarak ayarlamak sorun değildir, çünkü model henüz kopyalanmadığı için her bir parçayı bu model olarak ebeveyn ayarlayabilirsiniz.
RobloxLocked
Bu özellik, CoreGui hizmetindeki nesneleri kullanıcılar tarafından izinsiz bir şekilde değiştirilmiş olarak korumak için kullanıldı. Deprecenmiştir ve hiçbir şey yapmaz.
Sandboxed
İн스턴스yu Sandboxed Container olarak döndürür. Sandboxed Containers, belirli bir kontenedör içindeki eylemleri sınırlayan deneysel bir özelliktir.
Daha fazla bilgi için Script Kapabiliteleri sayfasını görün.
UniqueId
Yöntemler
AddTag
Bu yöntem, etiketin zaten uygulandığı durumda etkisi yoktur. Bir etiketi başarıyla eklemek, CollectionService:GetInstanceAddedSignal() ile verilen etikete sahip bir sinyali başlatacaktır.
Bir instansı etiketlemek için, bazı kaynakların etiketinin işlevini sağlamak için kullanıldığı yaygındır. Etiketin işlevini vermek için, örneğin etkinleştirilmiş olay bağ
Parametreler
Dönüşler
ClearAllChildren
Bu işlev, bir durumtüm çocuklarını yok eder.
As Instance:Destroy() ayrıca kullandığı nesnin çocuklarına da adlandırılır, bu işlev tüm soyundaki tüm çocukları yok eder.
ClearAllChildren'ın Alternatifleri
Geliştirici tüm soyundaki herhangi birini yok etmek istemezse, Instance:GetChildren() veya Instance:GetDescendants() ı kullanarak bir nesneyi döndürmelidir ve neyi yok etleyeceğini seçmelidir. Örneğin, aşağıdaki kod örneği tüm parçaları bir nesnede yok edecektir.
for _, instance in object:GetDescendants() doif instance:IsA("BasePart") theninstance:Destroy()endend
Dönüşler
Kod Örnekleri
local part = Instance.new("Part")
-- add some sparkles
for _ = 1, 3 do
local sparkles = Instance.new("Sparkles")
sparkles.Parent = part
end
print("Part has", #part:GetChildren(), "children")
--> Part has 3 children
part:ClearAllChildren()
print("Part has", #part:GetChildren(), "children")
--> Part has 0 children
Clone
Klon Etme bir instansın ve tüm soyundan bir kopyayı oluşturur, tüm instansların Archivable olmadığını g
Eğer klon bir durumObjectValue.Value gibi bir referans özelliği belirlenmişse, kopyanın özelliğinin değeri orijinalin değerine bağlıdır:
- Bir referans özelliği, klonlanmış olan bir instansa işaret ediyorsa, kopya kopyaya işaret edecektir.
- Bir referans özelliği klonlanmamış bir nesneyi işaret ediyorsa, aynı değer kopyada korunur.
Dönüşler
Kod Örnekleri
local Workspace = game:GetService("Workspace")
-- Get a reference to an existing object
local model = script.Parent.Model
-- Create a clone of the model
local clone = model:Clone()
-- Move the clone so it's not overlapping the original model
clone:PivotTo(model.PrimaryPart.CFrame - (Vector3.xAxis * 10))
-- Add the clone to the Workspace
clone.Parent = Workspace
Destroy
Class.Instance.Parent özelliğini nil olarak ayarlar, Instance.Parent özelliğini kilitler, tüm bağlantıları bırakır ve çağırılır Destroy tüm çocuklar üzerinde çağırılır. Bu işlev, artık gerekli olmayan nesneler
İpucu: Bir nesneyi yok etmeden önce, nesneye (veya onun geliştiricilerine) referans eden herhangi bir değişkeni yok edin. Bu, kodunuzun nesneyle ilgili herhangi bir şeye erişmesini engeller.
local part = Instance.new("Part")part.Name = "Hello, world"part:Destroy()-- Bunu yapmayın:print(part.Name) --> "Merhaba, dünya"-- Yukarıdaki satırın çalışmasını önlemek için bunu yapın:part = nil
Bu yöntemle bir Instance yok edildiğinde, yeniden kullanılamaz çünkü Instance.Parent özelliği kilitlidir. Geçici olarak bir nesneyi kaldırmak için, Parent yerine sıfırla bırakın. Örneğin:
object.Parent = nilwait(2)object.Parent = workspace
Bir nesneyi belirli bir süreden sonra yok etmek için Debris:AddItem() kullanın.
Dönüşler
Kod Örnekleri
local part = script.Parent.Part
part:Destroy()
FindFirstAncestor
Bağlantısına eşit olan ilk atalarını Instance olarak iade eder.
Bu işlev yukarı çalışır, yani Instance.Parent'de başlar ve DataModel'e doğru çalışır. Eşleşen atalar bulunmazsa, nil'i iade eder.
Aşağıdaki kod kısmı, 'Car' adındaki objenin ilk atalarını bulur.
local car = object:FindFirstAncestor("Car")
Belirli bir klasanın atalarını bulan çeşitler için, lütfen şu adresleri görün: Instance:FindFirstAncestorOfClass() ve Instance:FindFirstAncestorWhichIsA().
Parametreler
Ara Instance.Name olarak.
Dönüşler
Class.Instance bulundu.
FindFirstAncestorOfClass
Verilen kullanıcının kullanıcı adına eşdeğer olan Instance ile ilgili ilk atalarını döndürür.
Bu işlev yukarı çalışır, yani Instance.Parent'de başlar ve DataModel'e doğru çalışır. Eşleşen atalar bulunmazsa, nil'i iade eder.
Bu işlevin yaygın kullanımı, Model 'in bir BasePart 'e ait olduğunu bulmaktır. Örneğin:
local model = part:FindFirstAncestorOfClass("Model")
Bu işlev, Instance:FindFirstAncestor() ın özelliğini kontrol eder, Object.ClassName değerini değil, Instance.Name . 1> Class.Instance:FindFirstAncestorWhichIsA()1> da mevcut, kullanıcının kalıtırı
Parametreler
Ara Object.ClassName olarak.
Dönüşler
Class.Instance bulundu.
FindFirstAncestorWhichIsA
Class.Instance ın ilk atalarını için Object:IsA() verir ve bu adlandırma için Class.Instance için doğru.
Bu işlev yukarı çalışır, yani Instance.Parent'de başlar ve DataModel'e doğru çalışır. Eşleşen atalar bulunmazsa, nil'i iade eder.
Class.Instance:FindFirstAncestorOfClass() dışında, bu işlev Object:IsA() kullanır, bu da klas atıfına saygı duyar. Örneğin:
print(part:IsA("Part")) --> trueprint(part:IsA("BasePart")) --> trueprint(part:IsA("Instance")) --> true
Bu nedenle, aşağıdaki kod örneği ilk BasePart atalarını, WedgePart , MeshPart veya 1> Class.Part1> olup olmadığını bile gösterir.
local part = object:FindFirstAncestorWhichIsA("BasePart")
Ayrıca, Instance:FindFirstAncestor() .
Parametreler
Ara Object.ClassName olarak.
Dönüşler
Class.Instance bulundu.
FindFirstChild
Class.Instance ile verilen isimle ilk çocuğunu iade eder,
ya da nil eğer öyle bir çocuk yoksa. Eğer gerekli recursive argumenti doğruysa, bu işlev tüm soyundan arar Instance .
Bir Objeden Geçerli Olup Olmadığını Kontrol Etme
Devam etmeden önce bir nesnenin varlığını doğrulamak için FindFirstChild gerekir. Bir çocuğu isim olarak indekslemeye çalışmak çocuğun mevcut olmadığı durumda bir hata oluşur.
-- Aşağıdaki hata, Parça Çalışma Alanında mevcut değilse:workspace.Part.Transparency = 0.5
FindFirstChild'ı kullanarak ilk olarak Parça için kontrol et, ardından if-句'i kullanarak ihtiyacı olan kodu çalıştır.
local part = workspace:FindFirstChild("Part")if part thenpart.Transparency = 0.5end
Bir Özellikle İşaretlenen Çocuğu Bulma
Bazen bir nesnenin Name ı öbür nesnelerin Parent ı ile aynıdır. Dot operatörünü kullanırken, özellikler isim paylaşırsa çocuklar üzerinde özellikler önceliği vardır.
Aşağıdaki örnekte, renk adında bir Folder eklenir bir Part , bu da Part.Color özelliğine sahiptir. 2>Class.Part.Color2> Folder'ın değil, 5>Datatype.Color35> ile ilgilidir.
local part = Instance.new("Part")local folder = Instance.new("Folder")folder.Name = "Color"folder.Parent = partlocal c = part.Color --> Bir Renk3local c2 = part:FindFirstChild("Color") --> The Folder
Bu yol a FindFirstChild() kullanıyor olmanın bir yararı ise, yeni özelliklerin kodunuzda risk oluşturmadığıdır.
Performans Notu
FindFirstChild() dot operatörünü kullanarak yaklaşık 20% daha uzun sürer ve nesne s
Parametreler
Ara Instance.Name olarak.
Arama sırası olarak yapılıp yapılmayacağı.
Dönüşler
Class.Instance bulundu.
Kod Örnekleri
local found = workspace:FindFirstChild("Brick")
if found then
found.Name = "Foo"
end
FindFirstChildOfClass
Verilen kullanıcının Instance ının eşdeğer olduğu ilk çocuğu döndürür.
Eşleşen çocuk bulunmazsa, bu işlev nil'i döndürür.
Class.Instance:FindFirstChildWhichIsA() bu işlev sadece Class.Instance:FindFirstChildWhichIsA() ile eşleşen nesneleri kullanır, klasik mirası görmezden gelir.
Bir çocuğu isim olarak arayan geliştiriciler Instance:FindFirstChild() yerine Class.Instance:FindFirstChild kullanmalıdır.
Parametreler
Ara Object.ClassName olarak.
Dönüşler
Class.Instance bulundu.
Kod Örnekleri
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid
while not humanoid do
humanoid = character:FindFirstChildOfClass("Humanoid")
if not humanoid then
character.ChildAdded:Wait()
end
end
FindFirstChildWhichIsA
Class.Instance ın ilk çocuğunu döndürür, Object:IsA() verilen kullanıcının isminde gerçekten true değerine sahiptir.
Eşleşen çocuk bulunmazsa, bu işlev nil'i döndürür. Eğer seçimli recursive argüman doğruysa, bu işlev tüm soyundan arar, Instance'nin derhalki çocukları değil.
Class.Instance:FindFirstChildOfClass() dışında, bu işlev Object:IsA() kullanır, bu da klas atıfta saygı gösterir. Örneğin:
print(part:IsA("Part")) --> doğruprint(part:IsA("BasePart")) --> doğruprint(part:IsA("Instance")) --> true
Bu nedenle, aşağıdaki kod örneği ilk BasePart çocuğunu, WedgePart , MeshPart veya 1> Class.Part1> olup olmadığını bilecek şekilde geri dönecektir.
local part = object:FindFirstChildWhichIsA("BasePart")
Bir çocuğu isim olarak arayan geliştiriciler bunun yerine Instance:FindFirstChild() kullanmalıdır.
Parametreler
Aranacak Object.ClassName olmalıdır.
Arama sırası olarak yapılıp yapılmayacağı.
Dönüşler
Class.Instance bulundu.
FindFirstDescendant
Verilen şu Instance.Name ile bululan ilk soyundan döndürür.
Bu yöntem devre dışı ve kullanılamaz. Bir durumilk soyundan bulmak için, recursive yerine Instance:FindFirstChild() parametresini kullanmayı düşünün.
Parametreler
Arayacağınız Instance.Name aracı.
Dönüşler
Class.Instance bulundu.
GetActor
Class.Instance bir Actor ise, Actor kendisi iade edilir. Aksi takdirde, en yakın atancısı 1>Class.Actor1> iade edilir. Eğer atancı yoksa, sonuç 4>nil4> olur. Eğer atancı bir 7>Class.Actor</
Dönüşler
Class.Actor bulundu.
GetAttribute
Bu yöntem, belirlenen öz isme atanan değerini döndürür. Eğer bir öz atanmadıysa, nil döndürülür.
Örneğin, aşağıdaki kod snippetsi ayarlar ve sonra InitialPosition özelliğinin değerini alır:
local part = workspace.Partpart:SetAttribute("InitialPosition", part.Position)local initialPosition = instance:GetAttribute("InitialPosition")print(initialPosition)
Ayrıca bakın
- Instance:SetAttribute() which sets the attribute with the given name to the given value.
- Instance:GetAttributes() which returns a dictionary of key-value pairs for each of the durum's attributes.
Parametreler
Geri alınan özelliğin adı.
Dönüşler
Verilen özniteliğe atanan değer. Eğer bir öznitelik atanmadıysa, nil döndürülür.
GetAttributeChangedSignal
Bu işlev, Changed etkinliği gibi davranır, ancak sadece belirli verilen öznitelik değiştirildiğinde başlar; etkili olarak, bunlar öznitelikler için benzerdir.
Bu yöntemi, özellik ismini kontrol eden bir işlevle Changed ile kullanmak genellikle iyidir. Aynı özellik adına sahip olan aynı öğretimdeki bir sonraki çağrı bu yönteme döndürür.
Aşağıdaki kod örneği, parçanın İlkPozisyonu özelliğinin değişmesi durumunda işlevi attributeChanged() iletir:
local part = workspace.Part
part:SetAttribute("InitialPosition", part.Position)
local function attributeChanged()
print("Attribute changed")
end
part:GetAttributeChangedSignal("InitialPosition"):Connect(attributeChanged)
Ayrıca bakın Instance.AttributeChanged, herhangi bir özellik değiştirildiğinde başlatılır.
Parametreler
Değiştirme sinyali için belirlenen özelliklerin adı.
Dönüşler
Verilen özellik değiştirildiğinde çalışan bir etkinlik.
GetAttributes
Bu yöntem, anahtarın özelliği olduğu her özellik için bir anahtar değeri çifti dictionary'sini döndürür.This method returns a dictionary of key-value pairs for each attribute where the key is the attribute's name and the value is a non- nil value.
Örneğin, aşağıdaki kod örneği bir durumözelliklerini ve değerlerini gösterir:
local part = workspace.Partpart:SetAttribute("InitialPosition", part.Position)part:SetAttribute("CanUse", true)for name, value in part:GetAttributes() doprint(name .. " = " .. value)end
Ayrıca bakınız Instance:GetAttribute() , verilen öznitelik adına atanan değerin dönümünü içerir.
Dönüşler
Bir dizin string → varyant çiftleri, string'in özellik adı ve variant'in bir nil değeri olmadığından özellikler için dizin.
GetChildren
Tüm durum'ın doğrudan çocuklarını içeren bir matematiksel indeksli tablo (örneğin bir Class.Instance)'yu veya herhangi bir Instance ile eşdeğer olan herhangi bir Class.Instance'yi içeren bir dizge olarak işleyebilir. Matematiksel dizi, herhangi bir Class.Instance ile eşdeğer olana kadar iterebilir:
-- Numerik for- loop örneğilocal children = workspace:GetChildren()for i = 1, #children dolocal child = children[i]print(child.Name .. " is child number " .. i)end
-- Genel for-Loop örneğilocal children = workspace:GetChildren()for i, child in children doprint(child.Name .. " is child number " .. i)end
Çocuklar, öğelerinin Parent özelliğine ayarlandığı sırayla sıralanır.
Ayrıca bakın GetDescendants işlevini.
Dönüşler
durumçocuklarını içeren bir matris.
Kod Örnekleri
local children = workspace:GetChildren()
for i = 1, #children do
print(i, children[i].Name)
end
GetDebugId
Roblox'un kullanıcıları tarafından içeride kullanılan gizli kodlanmış bir dizi dönüşür.
Not:
- Bu öğe koruma altında. Onu bir Script veya LocalScript kullanmaya çalışmak bir hata yaratacaktır
- Bir debug ID, debug işlemlerinde kullanılan bir kimettir. Bu, bir debugger'ın herhangi bir talimatı okumasına izin verir ve bir uygulamanın işlemlediği herhangi bir yorum okuması gerekirse. Roblox'daki tüm nesneler işlem olarak davranır ve herhangi bir yorum okuması gerekirse.
- Bu, aynı ismi paylaşan farklı nesneleri birbirinden ayırt etmesi gereken eklentiler için yararlı olabilir (örneğin aynı adı olan nesneler)
Parametreler
Menzil uzunluğu.
Dönüşler
Debug ID dizi.
Kod Örnekleri
print(workspace:GetDebugId()) --> 39FA_12
print(workspace:GetDebugId(10)) --> 39FA2FEF4D_12
print(workspace:GetDebugId(math.huge)) --> 12
GetDescendants
Bu nesne metodu, o objenin tüm soyundan oluşan bir matrisi içerir. Instance:GetChildren() , sadece bir objenin derhal kayıtlarını içeren bir matrisi içerir, bu yüzden bu yöntem her objenin derhal kayıtlarını içerir, her çocuğun çocuğunu ve öylece devam eder.
Dönüşler
durum'ın soyundan oluşan bir matris.
Kod Örnekleri
local descendants = workspace:GetDescendants()
-- Loop through all of the descendants of the Workspace. If a
-- BasePart is found, the code changes that parts color to green
for _, descendant in pairs(descendants) do
if descendant:IsA("BasePart") then
descendant.BrickColor = BrickColor.Green()
end
end
GetFullName
durumkökeni hakkında bir dizi döndürür. Dizin, Name ile ayrılmış DataModel ile ayrılmıştır. game ( 2>oyun2> ) kabul edilme
Class.DataModel ile ilgili olmayan bir DataModel çağrıldığında, bu işlev tüm atalarının en üstününü dikkate alır, bir Parent olmadan.
Bu işlevleri günlükleme ve depresyon için kullanışlıdır. Geriye alınan metni herhangi bir yararlı işlem için parlamaz; bu işlev herhangi bir simgeyi (veya başka bir sembolü) içindeki dönüştürmez. Diğer bir deyişle, çıktısı genellikle geçerli bir Lua tanımlayıcısı gibi görünse de, garanti edilmez.
Dönüşler
Class.Instance 'in tam adı.
Kod Örnekleri
-- Create a simple hierarchy
local model = Instance.new("Model")
local part = Instance.new("Part")
part.Parent = model
local fire = Instance.new("Fire")
fire.Parent = part
print(fire:GetFullName()) --> Model.Part.Fire
model.Parent = workspace
print(fire:GetFullName()) --> Workspace.Model.Part.Fire
part.Name = "Hello, world"
print(fire:GetFullName()) --> Workspace.Model.Hello, world.Fire
local function getFullName(object)
local result = object.Name
object = object.Parent
while object and object ~= game do
-- Prepend parent name
result = object.Name .. "." .. result
-- Go up the hierarchy
object = object.Parent
end
return result
end
print(getFullName(workspace.Camera)) --> Workspace.Camera
GetTags
Bu yöntem, verilen durumuygulanan etiketlerin bir matrisini döndürür, yani teller. Etiketleri Studio'da Özellikler penceresinde veya Class.Instance:AddTag()|AddTag() yükleme sırasında ekleyebilirsiniz.
Bu yöntem, bir seferde bir instansındaki birden fazla etiket için bir şey yapmak istediğinizde yararlıdır. Ancak, tek bir etiket için mevcut olup olmadığını kontrol etmek için bu yöntemi kullanmak için verimli değildir; yerine, HasTag() kullanarak tek bir etiket için mevcut olup olmadığını kontrol edin.
Dönüşler
HasTag
Bu yöntem, sağlanan etiketin nesneye eklenmiş olup olmadığına bağlı olarak true döndürür. Etiketleri Studio'da Özellikler penceresine veya Class.Instance:AddTag()|AddTag() iletişim kutusuna ekleyebilirsiniz.
Parametreler
Dönüşler
IsAncestorOf
Bir Instance ile verilen soyundan bir ataletse geri döndürür.
Bir Instance , bir nesnenin atalarına bakıldığında bir nesnenin Instance.Parent veya onun ebeveynlerinden biri Instance.Parent ile belirlenmiştir.
Ayrıca, Instance:IsDescendantOf() göre.
Parametreler
Class.Instance olarak adlandırılır.
Dönüşler
Gerçekleştir ifade edilen kökeneşterinin verilen yokluğunun atasıdır.
Kod Örnekleri
local Workspace = game:GetService("Workspace")
local spawnLocation = Workspace.SpawnLocation
local decal = spawnLocation.Decal
-- These statements are true
print(Workspace:IsAncestorOf(spawnLocation))
print(Workspace:IsAncestorOf(decal))
print(spawnLocation:IsAncestorOf(decal))
-- These statements are false
print(spawnLocation:IsAncestorOf(Workspace))
print(decal:IsAncestorOf(Workspace))
print(decal:IsAncestorOf(spawnLocation))
IsDescendantOf
Bir Instance ile verilen atasının bir soyundan olup olmadığını geri döndürür.
Bir Instance bir nesnenin aşçısı olarak kabul edilir, eğer nesnenin ebeveyni veya ebeveyninin ebeveyni olarak ayarlanır.
Not, DataModel bir nesnenin kaldırıldığını kontrol etmek için nil ile aşağıdakişekilde kullanılamaz. Bu, IsDescendantOf'nin nesneyi kaldırıldığını kontrol etmek için nil ile bir parametre kullanılamaz demektir.
Ayrıca, Instance:IsAncestorOf() göz.
Parametreler
Dönüşler
Kod Örnekleri
local part = Instance.new("Part")
print(part:IsDescendantOf(game))
--> false
part.Parent = workspace
print(part:IsDescendantOf(game))
--> true
part.Parent = game
print(part:IsDescendantOf(game))
--> true
RemoveTag
Bu yöntem bir instansından bir etiketi kaldırır. Etiket olmadığı durumda bir hata oluşturmaz. Bir etiketi başarıyla kaldırmak CollectionService:GetInstanceRemovedSignal() ile verilen etikete başarıyla oluşturulur.
Bir durumetiketlemek, bir etiketiğin işlevselliğini sağlamak için bazı kaynakların kullanıldığı yaygındır, örneğin etkinlik bağlantıları veya tablolar. Hafıza tükelerini önlemek için, bir etiket için artık gerekli olmadığında (bağlantıyı kapat, nil vb.) temizlenmesi iyidir.
Parametreler
Dönüşler
SetAttribute
Bu yöntem, verilen isimle özellik belirlenen değere atar. Eğer verilen değer nil ise, özellik kaldırılır, çünkü nil varsayılır.
Örneğiniz, aşağıdaki kod kesmesi, örneğin İlkPozisyonu özelliğini Vector3.new(0, 10, 0) olarak ayarlar:
local part = workspace.Partpart:SetAttribute("InitialPosition", Vector3.new(0, 10, 0))
Sınırlamalar
İsimlendirme gereksinimleri ve sınırları:
- İsimler sadece alfanümerik karakterler ve alt çizgi kullanabilir.
- Boşluk veya benzersiz semboller kullanılamaz.
- IP'ler 100 karakterden daha kısa olmalıdır.
- İsimler Roblox çekirdek kripti ile başlamayı 允许 RBX ile başlamayı 允许 etmez.
Bir özelliği desteklenmeyen bir yazayarlamaya çalışırken bir hata oluşur.
Ayrıca bakınız:
- Instance:GetAttribute() which returns the value that has been assigned to the given attribute name.
- Instance:GetAttributes() which returns a dictionary of key-value pairs for each of the durum's attributes.
Parametreler
Özellik ayarlanan isim.
Belirli özelliklerin belirlenmesi için ayarlanan değer.
Dönüşler
WaitForChild
Class.Instance ile verilen isimle çocuğunu döndürür. Eğer çocuk mevcut değilse, mevcut threadi gerekir kadar yeniden çalıştırır. timeOut parametresi belirtilmişse, bu yöntem belirlenen sayıda saniye sonra zamanlanır ve nil döndürür.
Prim Kullanımı
WaitForChild() kodun çalıştığı LocalScript üzerindeki kod işlemleri için son derece önemlidir. Roblox motoru,
Notlar
- Bu işlev çağrılırken verilen ismi alan çocuk varsa üretmez.
- Instance:FindFirstChild() varsayılan varlıklar için daha verimli bir alternatiftir.
- Bu yöntem çağrısı 5 saniyeden fazla sürmez ve hiçbir timeOut parametresi belirtilmediğinde, çıktıya bir uyarı yazılır.
Parametreler
Ara Instance.Name olarak.
Opcional bir zamanlayıcı özelliği.
Dönüşler
Class.Instance bulundu.
Kod Örnekleri
local part = workspace:WaitForChild("Part")
print(part.Name .. " has been added to the Workspace")
Etkinlikler
AncestryChanged
Class.Instance.Parent öğenin veya atalarından biri değiştirildiğinde ateşlenir.
Bu etkinlik iki parametre içerir, çocuk ve ebeveyn . çocuk , aslında 1> Class.Instance1> ın ebeveyni olarak değiştirildiğini işaret eder. 4> ebeveyn4> , bu durumyeni 7> Class.Instance.
Stüdyo'daki bir instansın silinmesini takip etmek için bu etkinliği kullanabilirsiniz, örneğin Explorer'da manuel silme veya bir eklentiaracılığıyla. Eğer bir instansı Instance:Destroy() ile silmeniz gerekiyorsa, Instance.Destroying etkinliğini kullanın.
Parametreler
Değiştirilen Instance ün Instance.Parent
Değiştirilen Instance 의 yeni Instance.Parent .
Kod Örnekleri
local Workspace = game:GetService("Workspace")
local redPart = script.Parent.RedPart
local bluePart = script.Parent.BluePart
local changingPart = script.Parent.ChangingPart
-- Change the color of changingPart based on it's Parent
local function onAncestryChanged(part: Part, parent: Instance)
if parent == redPart then
changingPart.Color = Color3.new(1, 0, 0)
elseif parent == bluePart then
changingPart.Color = Color3.new(0, 0, 1)
else
changingPart.Color = Color3.new(1, 1, 1)
end
print(`{part.Name} is now parented to {parent.Name}`)
end
changingPart.AncestryChanged:Connect(onAncestryChanged)
-- Set changingPart's Parent property to different instances over time
while true do
task.wait(2)
changingPart.Parent = redPart
task.wait(2)
changingPart.Parent = bluePart
task.wait(2)
changingPart.Parent = Workspace
end
AttributeChanged
Bu olay, bir özelliğin nil ile değiştirilmesi durumunda herhangi bir özelliğin değiştirildiğinde başlar. Değiştirilen özelliğin ismi bağlantılı işlevle geçerlidir.
Örneğin, aşağıdaki kod parçanın özelliklerinden biri değiştirildiğinde herhangi biri için attributeChanged() işlevini bağlar:
local part = workspace.Part
local function attributeChanged(attributeName)
print(attributeName, "changed")
end
part.AttributeChanged:Connect(attributeChanged)
Ayrıca bakınız Instance:GetAttributeChangedSignal() , bir belirli özellik atributı değiştirildiğinde çalıştığında bir etkinliği döndürür.
Parametreler
Değiştirilen özelliğin adı.
ChildAdded
Bir nesneye bu Instance e bağlandıktan sonra yanar.
Not, bu işlevi bir istemciyi kullanarak sunucunun oluşturduğu nesneleri tespit etmek için kullanırken, bu nesnelerin aşağıdaki izişlemleri Instance:WaitForChild() kullanmak gerekir. Bunun nedeni, bu nesnelerin aşağıdaki izişlemleri sunucudan istemciye aynı anda yeniden yapılması garanti edilmez. Örneğin:
workspace.ChildAdded:Connect(function(child)
-- need to use WaitForChild as descendants may not have replicated yet
local head = child:WaitForChild("Head")
end)
Not, bu işlev sadece Instance 'in derhalik çocukları için çalışır. Bir çocuğu tüm aşçılarını yakalayan işlev için Instance.DescendantAdded kullanın.
Ayrıca, Instance.ChildRemoved .
Parametreler
Kod Örnekleri
local function onChildAdded(instance)
print(instance.Name .. " added to the workspace")
end
workspace.ChildAdded:Connect(onChildAdded)
local part = Instance.new("Part")
part.Parent = workspace --> Part added to the Workspace
ChildRemoved
Bir çocuğu bu Instance 'den kaldıktan sonra ateş eder.
Kaldırılan, bir nesnenin ebeveyni bu Instance 'den başka bir şey olabilir. Not, bu olay ayrıca bir çocuğu yok eder (kullanando Instance ) olarak bir nesnenin ebeveynini sıfırladığında da ateş eder.
Bu işlev sadece Instance 'nin derhalik çocukları için çalışır. Bir çocuğu tüm soyundan alan bir işlev için Instance.DescendantRemoving kullanın.
Ayrıca bakınız Instance.ChildAdded.
Parametreler
Kod Örnekleri
local function onChildRemoved(instance)
print(instance.Name .. " removed from the workspace")
end
workspace.ChildRemoved:Connect(onChildRemoved)
local part = Instance.new("Part")
part.Parent = workspace
task.wait(2)
part:Destroy()
DescendantAdded
DescendantAdded etkinliği, bir atıftan sonra etkinleştirilmiş Instance'a ateşlenir.
DescendantAdded aşağıdaki için her yeni aşçığı için, bir nesneyi Instance'a bağlı olarak etkinleştirirse etkinleştirirse etkinleştirir.
Sadece Instance ile ilgili derin çocukları olan geliştiriciler Instance.ChildAdded yerine bunu kullanmalıdır.
Ayrıca bakın Instance.DescendantRemoving.
Parametreler
Kod Örnekleri
local function onDescendantAdded(descendant)
print(descendant)
end
workspace.DescendantAdded:Connect(onDescendantAdded)
local part = Instance.new("Part")
part.Parent = workspace
DescendantRemoving
Bu etkinlik, ebeveyni derhal önce değiştirerek bir Instance instansının artık bir dizgi olmadığını gösterir. Class.Instance:Destroy()|Destroy() , bir durum2> Class.Instance.Parent|Parent2>
Bu olay etkin olmadan önce yok edilen çırağın kaldırılması, çırağın zamanında ebeveyni değişmez. Eğer çırağın da bir doğrudan çocuğu ise, bu olay 0>Class.Instance.ChildRemoved0> önce0> olacaktır.
Bir soyundaki çocuklar varsa, bu olay kendisi önce başlar, onun soyundaki çocuklarınızı takip eder.
Uyarı
Bu etkinlik, yok edilen aşağıdaki nesne ile başlar. Yok edilen aşağıdaki nesneyi başka bir nesneye ayarlamaya çalışmak başarısız olacaktır. Aşağıdaki örnek, bunu gösteren bir örnektir:
workspace.DescendantRemoving:Connect(function(descendant)
-- Do not manipulate the parent of the descendant in this function!
-- This event fires BECAUSE the parent was manipulated, and the change hasn't happened yet
-- Therefore, it is problematic to change the parent like this:
descendant.Parent = game
end)
local part = Instance.new("Part")
part.Parent = workspace
part.Parent = nil
Ayrıca bakın DescendantAdded .
Parametreler
Kod Örnekleri
workspace.DescendantRemoving:Connect(function(descendant)
print(descendant.Name .. " is currently parented to " .. tostring(descendant.Parent))
end)
local part = Instance.new("Part")
part.Parent = workspace
part.Parent = nil
--> Part is currently parented to Workspace
print(part.Parent)
--> nil
Destroying
Bir bağlantılı işlev hala kullanılıyorsa, hafızadan hiç silinmez. Ancak, işlev herhangi bir noktada yeniden oluşturulursa, Instance ve onun çıplak ataları Instance olacaktır.
Class.Workspace.SignalBehavior özelliği Enum.SignalBehavior.Immediate veya onun atalarından biri yok edilene kadar derhal başlar. Bu olay, Instance veya onun atalarından biriyle birleştirilirse hemen önce başlar.
Class.Workspace.SignalBehavior özelliği Enum.SignalBehavior.Deferred değerine ayarlandıysa, bu olay sonraki toplama noktasında başlar ve Class.Instance veya onun atalarının Instance ile yok edilmesinden sonra gerçekleşir.
Class.Instance.Destroying etkinliğine bağlanan bir skripti kendi Instance.Destroying etkinliğine bağlamak problematikdir, çünkü çağrılmadan önce skript yok edilir (yani işlevsiz hale getirilir).
Stüdyo'da bir Instance silirken, manuel olarak Explorer'dan veya bir eklenti'den silmek gibi, Class.Instance yok edilmez. Bunun yerine, ebeveyn Instance ile belirlenmiştir, which you can track with 1> Class.Instance.AncestryChanged1>.
Kod Örnekleri
local part = Instance.new("Part", workspace)
local function onPartDestroying()
print("Before yielding:", part:GetFullName(), #part:GetChildren())
task.wait()
print("After yielding:", part:GetFullName(), #part:GetChildren())
end
part.Destroying:Connect(onPartDestroying)
part:Destroy()
local part = Instance.new("Part", workspace)
local function onPartDestroying()
print("In signal:", part:GetFullName(), #part:GetChildren())
end
part.Destroying:Connect(onPartDestroying)
print("Before destroying:", part:GetFullName(), #part:GetChildren())
part:Destroy()
print("After destroying:", part:GetFullName(), #part:GetChildren())