Oyuncular genellikle bulundukları alanı inşa etmenin bir parçası gibi hissetmeyi sever.The YüzeySanatı geliştirici modülü oyuncuların bir deneyimde kendi işaretlerini kelimsel olarak bırakmasına izin verir.
Modül Kullanımı
Yükleme
Bir deneyimde YüzeySanatı modülünü 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.
Yüzey Sanatı modülünü bulun ve tıklayın veya 3B görüntüye sürükleyin ve bırakın.
Gezgin penceresinde, tüm YüzeySanatı modelini SunucuKriptServisi 'ye taşın.Deneyimi çalıştırdıktan sonra, modül kendini çeşitli hizmetlere dağıtacak ve çalışmaya başlayacaktır.
Kanvası Konumlandırma
Modül, 3B dünyada konumlandırabileceğiniz bir Yüzey Kanvası modeli ile birlikte gelir.Bu model, oyuncuların yüzeyine sanat yerleştirmek için etkileşime gireceği şeydir.
Modülün ana klasörünün Yüzey Kanvası ağı içindeki Çalışma Alanı klasörünün içindeki mesh'i bulun.
En üst seviye Çalışma Alanı hiyerarjisine taşı ve istediğin yere yerleştir.
Test oturumunu yayınladıktan/çalıştırdıktan sonra, oyuncular bir ProximityPrompt aracılığıyla nesneyle etkileşime girebilecek ve belirlenen yüzeyde sanat yerleştirebilecekler.
Kanvas Yüzünü Değiştirme
Kaputun altında, modül sanat öğelerini görüntülemek için bir SurfaceGui kullanır. Sanatın hangi yüzeyde göründüğünü yapılandırmak için:
Yüzey Kanvası meshesini seçin.
Özellikler penceresinin en altında, varsayılan değeri Sağ olan Yüzey Kanvas Yüzü özniteliğini bulun.
Özniteliğe tıklayın ve bir Enum.NormalId tanımlayan altı değerden birini girin.
Öznitelik Değeri | Eşdeğer Normal Kimlik |
---|---|
Önden | Enum.NormalId.Front |
Geri | Enum.NormalId.Back |
Sağ | Enum.NormalId.Right |
Sola Yüksek | Enum.NormalId.Left |
Üst | Enum.NormalId.Top |
Altı | Enum.NormalId.Bottom |
Özel Sanat Varlıklarını Kullanma
Deneyiminizin temasına daha iyi uymak için, varsayılanlara yerine kendi özel varlık setinizi kullanabilirsiniz.Bunun yapılması, configure işlevi aracılığıyla, Script 'den bir **** 'dan yapılabilir.
Komut Dosyası
local ReplicatedStorage = game:GetService("ReplicatedStorage")local SurfaceArt = require(ReplicatedStorage:WaitForChild("SurfaceArt"))local customAssets = {CustomAsset1 = {name = "Custom Asset 1",assetId = "rbxassetid://7322508294",},CustomAsset2 = {name = "Custom Asset 2",assetId = "rbxassetid://7322547665",},}SurfaceArt.configure({assets = customAssets,})
Tüm Kanvasları Temizleme
Dünyadaki tüm kanvaslardan mevcut sanatı kaldırmak için, removeAllArt işlevini bir Script 'dan çağırın.
Komut Dosyası
local ReplicatedStorage = game:GetService("ReplicatedStorage")local SurfaceArt = require(ReplicatedStorage:WaitForChild("SurfaceArt"))SurfaceArt.removeAllArt()
Özel Etkileri Göster
Bir eser yerleştirildiğinde ek görsel efektler dahil etmek istediğiniz durumlar olabilir.Bu modül, bağlanabileceğiniz ve kendi mantığınızı ekleyebileceğiniz bir istemciye artChanged adlı bir olayı açar.
YerelScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SurfaceArt = require(ReplicatedStorage:WaitForChild("SurfaceArt"))
local function createParticleEmitter(canvas, position)
local attachment = Instance.new("Attachment")
attachment.Position = canvas.CFrame:PointToObjectSpace(position)
attachment.Axis = Vector3.new(0, 0, 1)
attachment.SecondaryAxis = Vector3.new(1, 0, 0)
attachment.Parent = canvas
local particleEmitter = Instance.new("ParticleEmitter")
particleEmitter.Speed = NumberRange.new(50)
particleEmitter.Rate = 50
particleEmitter.Color = ColorSequence.new(Color3.fromRGB(128, 254, 7))
particleEmitter.SpreadAngle = Vector2.new(35, 35)
particleEmitter.Parent = attachment
return attachment
end
SurfaceArt.artChanged:Connect(function(canvas, spot, spotPosition, artId, ownerId)
if artId then
-- 3 saniye boyunca bazı parıltılar göster
task.spawn(function()
local emitterAttachment = createParticleEmitter(canvas, spotPosition)
task.wait(3)
emitterAttachment:Destroy()
end)
end
end)
API Referansı
Türler
YüzeySanatKaynağı
Kanvas için sanat olarak kullanılacak görüntüler iki değerle temsil edilir bir tablo ile temsil edilir.
Anahtar | Açıklama |
---|---|
name | Metadat görünen ad. |
assetId | Dahil edilecek resmin varlık kimliği. |
Fonksiyonlar
yapılandır
yapılandır(config: table )
Varsayılan yapılandırma seçeneklerini aşağıdaki anahtarlar/değerler aracılığıyla geçersiz kılar: config tablosunda.Bu işlev yalnızca bir Script 'dan çağrılabilir.
Anahtar | Açıklama | Varsayılan |
---|---|---|
enabled | Modülün işlevselliğini açık veya kapalı geçirir. | doğru |
assets | YüzeySanatVarlığı türlerinin listesi. | (aşağıdaki kodu görün) |
quotaPerPlayer | Her oyuncu tarafından yerleştirilebilecek maksimum sanat eseri sayısı. | 2 |
Komut Dosyası
local ReplicatedStorage = game:GetService("ReplicatedStorage")local SurfaceArt = require(ReplicatedStorage:WaitForChild("SurfaceArt"))SurfaceArt.configure({quotaPerPlayer = 4,promptKeyCode = Enum.KeyCode.T,promptMaxActivationDistance = 8,})
kanvasları almak
getCanvases(): table
SurfaceCanvas etiketiyle etiketlenmiş tüm kanvasları döndürür.
Komut Dosyası
local ReplicatedStorage = game:GetService("ReplicatedStorage")local SurfaceArt = require(ReplicatedStorage:WaitForChild("SurfaceArt"))local canvases = SurfaceArt.getCanvases()
yerArt
Bir oyuncunun adına programatik olarak bir sanat eseri yerleştirir.Sunucu başlatıldığında canvas nesnesinin SurfaceCanvas etiketiyle etiketlenmesi gerektiğini unutmayın.Bunu yalnızca getCanvases adresinden alınan bir kanvasla kullanmanız önerilir.
Komut Dosyası
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SurfaceArt = require(ReplicatedStorage:WaitForChild("SurfaceArt"))
local remoteEvent = ReplicatedStorage:WaitForChild("SurfaceArtRemoteEvent")
remoteEvent.OnServerEvent:Connect(function(player)
-- Varsayılan sanat kaynaklarından Bloxy Ödülünü ilk kanvasa yerleştir
local canvases = SurfaceArt.getCanvases()
SurfaceArt.placeArt(player, canvases[1], "BloxyAward")
end)
removeAllArt'ı kaldır
removeAllArt()
Tüm yüzeylerden tüm sanat eserlerini kaldırır.
Komut Dosyası
local ReplicatedStorage = game:GetService("ReplicatedStorage")local SurfaceArt = require(ReplicatedStorage:WaitForChild("SurfaceArt"))SurfaceArt.removeAllArt()
Etkinlikler
artChanged değiştirildi
Bir kanvasta belirli bir konumda bir sanat eseri değiştirildiğinde ateş eder.Bir sanat eseri kaldırıldığında, artId olacaktır nil.Bir Vector3 değeri, olay işleyicisine üçüncü parametre olarak geçtiğinden, sanat eserinin yerleştirildiği aynı konuma bir özel efekt konumlandırabilirsiniz.Bu etkinlik yalnızca bir LocalScript içinde bağlanabilir.
Değerler | |
---|---|
kanvas: BasePart | Sanat eserinin değiştirildiği kanvas. |
nokta: Frame | Sanat eserini içeren içsel . |
spotPosition: Vector3 | Sanat eseri yerleştirilen kesin konum. |
artId: string | Yeni sanat eserinin varlık kimliği. |
sahip kullanıcı kimliği: number | UserId sanatı yerleştiren oyuncunun |
YerelScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SurfaceArt = require(ReplicatedStorage:WaitForChild("SurfaceArt"))
SurfaceArt.artChanged:Connect(function(canvas, spot, spotPosition, artId, ownerId)
print("Art placed at:", spotPosition)
print("Art asset ID:", artId)
print("Art placed by:", ownerId)
end)
soruGösterildi
Bir oyuncuya bir kanvas etkileşim istemi gösterildiğinde ateş eder.Bağlı işlev, uyarının gösterildiği kanvası alır.Bu etkinlik yalnızca bir LocalScript içinde bağlanabilir.
Değerler | |
---|---|
kanvas: BasePart | Uyarının gösterildiği kanvas. |
YerelScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local SurfaceArt = require(ReplicatedStorage:WaitForChild("SurfaceArt"))
SurfaceArt.promptShown:Connect(function(canvas)
print(Players.LocalPlayer, canvas)
end)
gizliİstekli
Bir kanvas etkileşim istemi gizlendiğinde ateş eder.Bağlı işlev, uyarının gösterildiği kanvası alır.Bu etkinlik yalnızca bir LocalScript içinde bağlanabilir.
Değerler | |
---|---|
kanvas: BasePart | Uyarının gösterildiği kanvas. |
YerelScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local SurfaceArt = require(ReplicatedStorage:WaitForChild("SurfaceArt"))
SurfaceArt.promptClosed:Connect(function(canvas)
print(Players.LocalPlayer, canvas)
end)
seçiciGösterildi
Yüzey sanat seçicisi UI'si bir oyuncuya gösterildiğinde ateş eder. Bu etkinlik yalnızca bir LocalScript içinde bağlanabilir.
YerelScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local SurfaceArt = require(ReplicatedStorage:WaitForChild("SurfaceArt"))
SurfaceArt.selectorShown:Connect(function()
print(Players.LocalPlayer, "opened surface art selector")
end)
gizliSeçici
Yüzey sanat seçicisi arayüzü bir oyuncu için gizlendiğinde ateş eder. Bu olay yalnızca bir LocalScript içinde bağlanabilir.
YerelScript
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local SurfaceArt = require(ReplicatedStorage:WaitForChild("SurfaceArt"))
SurfaceArt.selectorHidden:Connect(function()
print(Players.LocalPlayer, "closed surface art selector")
end)