Yüzey Sanatı

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

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:

  1. Görüntü sekmesinden açın Araç çantası ve Yaratıcı mağazası 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. Yüzey Sanatı modülünü bulun ve tıklayın veya 3B görüntüye sürükleyin ve bırakın.

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

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

  2. En üst seviye Çalışma Alanı hiyerarjisine taşı ve istediğin yere yerleştir.

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

  1. Yüzey Kanvası meshesini seçin.

  2. Özellikler penceresinin en altında, varsayılan değeri Sağ olan Yüzey Kanvas Yüzü özniteliğini bulun.

  3. Özniteliğe tıklayın ve bir Enum.NormalId tanımlayan altı değerden birini girin.

Öznitelik DeğeriEş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.

AnahtarAçıklama
nameMetadat görünen ad.
assetIdDahil 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.

AnahtarAçıklamaVarsayılan
enabledModülün işlevselliğini açık veya kapalı geçirir.doğru
assetsYüzeySanatVarlığı türlerinin listesi.(aşağıdaki kodu görün)
quotaPerPlayerHer 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

placeArt(oyuncu: Player , kanvas: BasePart )

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: BasePartSanat eserinin değiştirildiği kanvas.
nokta: FrameSanat eserini içeren içsel .
spotPosition: Vector3Sanat eseri yerleştirilen kesin konum.
artId: stringYeni sanat eserinin varlık kimliği.
sahip kullanıcı kimliği: numberUserId 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: BasePartUyarı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: BasePartUyarı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)