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ın inşasında bir parça olduklarını hissetmeyi severler. SurfaceArt geliştirici modülü, oyuncuların bir deneyimde gerçekten iz bırakmalarını sağlar.

Modül Kullanımı

Kurulum

SurfaceArt modülünü bir deneyimde kullanmak için:

  1. Studio'nun Pencere menüsünden veya Ana Sayfa sekmesi araç çubuğundan Araç Kutusunu açın ve Yaratıcı Dükkân sekmesini seçin.

  2. Modeller sıralamasının seçili olduğundan emin olun, ardından Kategorileri Gör All butonuna tıklayın.

  3. Paketler kutucuklarını bulun ve tıklayın.

  4. Yüzey Sanatı modülünü bulun ve üzerine tıklayın ya da 3D görünümüne sürükleyip bırakın.

  5. Explorer penceresinde, tüm SurfaceArt modelini ReplicatedStorage içine taşıyın. Deneyimi çalıştırdığınızda, modül çalışmaya başlayacaktır.

Tuvali Konumlandırma

Modül, 3D dünyada konumlandırabileceğiniz bir SurfaceCanvas modeli ile birlikte gelir. Bu model, oyuncuların sanat yerleştirdiği yüzeydir.

  1. Modülün ana klasöründeki Workspace klasöründe SurfaceCanvas modelini bulun.

  2. Üst seviye Workspace hiyerarşisine taşımak ve istenilen yere yerleştirmek için taşıyın.

  3. Bir test oturumu yayımladığınızda/çalıştırdığınızda, oyuncular ProximityPrompt aracılığıyla nesneyle etkileşime girebilir ve belirlenen yüzey üzerine sanat yerleştirebilirler.

Tuval Yüzünü Değiştirme

Modül, sanat nesnelerini görüntülemek için bir SurfaceGui kullanır. Sanatın hangi yüzeyde görüneceğini ayarlamak için:

  1. SurfaceCanvas modelini seçin.

  2. Özellikler penceresinin en altında, varsayılan değeri Sağ olan SurfaceCanvasFace özelliğini bulun.

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

Özel Sanat Varlıklarını Kullanma

Deneyiminizin temasına daha iyi uyum sağlaması için varsayılanların yerine kendi özel varlık setinizi kullanabilirsiniz. Bu, ServerScriptService içinde bir Script'ten çağrılan konfigürasyon işlevi aracılığıyla yapılabilir.

Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SurfaceArt = require(ReplicatedStorage.SurfaceArt)
local customAssets = {
CustomAsset1 = {
name = "Özel Varlık 1",
assetId = "rbxassetid://7322508294",
},
CustomAsset2 = {
name = "Özel Varlık 2",
assetId = "rbxassetid://7322547665",
},
}
SurfaceArt.configure({
assets = customAssets,
})

Tüm Tuvalleri Temizleme

Dünyadaki tüm tuvallerdeki mevcut sanatı kaldırmak için, bir Script içinde removeAllArt işlevini çağırın.

Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SurfaceArt = require(ReplicatedStorage.SurfaceArt)
SurfaceArt.removeAllArt()

Özel Etkileri Gösterme

Bir sanat eseri yerleştirildiğinde ek görsel efektler eklemek isteyebilirsiniz. Bu modül, bağlayabileceğiniz ve kendi mantığınızı ekleyebileceğiniz artChanged adlı bir olayı istemci üzerinde açığa çıkarır.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SurfaceArt = require(ReplicatedStorage.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 saniyeliğine 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

SurfaceArtAsset

Tuvalde sanat olarak kullanılacak resimler, iki değer içeren bir tablo ile temsil edilir.

AnahtarAçıklama
nameMeta veri görüntü adı.
assetIdDahil edilecek resmin varlık kimliği.

İşlevler

configure

configure(config: table)

config tablosundaki aşağıdaki anahtar/değerler aracılığıyla varsayılan yapılandırma seçeneklerini geçersiz kılar. Bu işlev yalnızca bir Script içinden çağrılabilir.

KeyAçıklamaVarsayılan
enabledModülün işlevselliğini açıp kapatır.true
assetsSurfaceArtAsset türlerinin listesi.(aşağıdaki koda bakın)
quotaPerPlayerHer oyuncunun yerleştirebileceği maksimum sanat parça sayısı.2
Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SurfaceArt = require(ReplicatedStorage.SurfaceArt)
SurfaceArt.configure({
quotaPerPlayer = 4,
promptKeyCode = Enum.KeyCode.T,
promptMaxActivationDistance = 8,
})

getCanvases

getCanvases(): table

SurfaceCanvas etiketiyle etiketlenmiş tüm tuval sonuçlarını döndürür.

Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SurfaceArt = require(ReplicatedStorage.SurfaceArt)
local canvases = SurfaceArt.getCanvases()

placeArt

placeArt(player: Player, canvas: BasePart)

Bir sanat parçasını bir oyuncu adına programatik olarak yerleştirir. canvas nesnesinin sunucu başlatıldığında SurfaceCanvas etiketiyle etiketlenmiş olması gerektiğini unutmayın. Bunu yalnızca getCanvases metodundan dönen bir tuvali kullanarak yapmanız önerilir.

Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SurfaceArt = require(ReplicatedStorage.SurfaceArt)
local remoteEvent = ReplicatedStorage:WaitForChild("SurfaceArtRemoteEvent")
remoteEvent.OnServerEvent:Connect(function(player)
-- Varsayılan sanat varlıklarından Bloxy Award'ı ilk tuvale yerleştir
local canvases = SurfaceArt.getCanvases()
SurfaceArt.placeArt(player, canvases[1], "BloxyAward")
end)

removeAllArt

removeAllArt()

Tüm yüzeylerden tüm sanat eserlerini kaldırır.

Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SurfaceArt = require(ReplicatedStorage.SurfaceArt)
SurfaceArt.removeAllArt()

Olaylar

artChanged

Bir tuvalde belirli bir konumdaki sanat eseri değiştiğinde tetiklenir. Bir sanat eseri kaldırıldığında, artId nil olacaktır. Olay işleyicisine üçüncü parametre olarak bir Vector3 değeri geçtiği için, sanatı yerleştirilen tam noktada bir özel efekt konumlandırabilirsiniz. Bu olay yalnızca bir LocalScript içinde bağlanabilir.

Parametreler
canvas: BasePartSanat eserinin değiştirildiği tuval.
spot: FrameSanat eserini içeren içsel Frame.
spotPosition: Vector3Sanat eserinin yerleştirildiği tam konum.
artId: stringYeni sanat eserinin varlık kimliği.
ownerUserId: numberSanatı yerleştiren oyuncunun UserId.
LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SurfaceArt = require(ReplicatedStorage.SurfaceArt)
SurfaceArt.artChanged:Connect(function(canvas, spot, spotPosition, artId, ownerId)
print("Sanat burada yerleştirildi:", spotPosition)
print("Sanat varlık kimliği:", artId)
print("Sanatı yerleştiren:", ownerId)
end)

promptShown

Bir tuval etkileşim istemcisi bir oyuncuya gösterildiğinde tetiklenir. Bağlı işlev, uyarıların gösterildiği tuvali alır. Bu olay yalnızca bir LocalScript içinde bağlanabilir.

Parametreler
canvas: BasePartUyarıların gösterildiği tuval.
LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local SurfaceArt = require(ReplicatedStorage.SurfaceArt)
SurfaceArt.promptShown:Connect(function(canvas)
print(Players.LocalPlayer, canvas)
end)

promptHidden

Bir tuval etkileşim istemcisi gizlendiğinde tetiklenir. Bağlı işlev, uyarıların gösterildiği tuvali alır. Bu olay yalnızca bir LocalScript içinde bağlanabilir.

Parametreler
canvas: BasePartUyarıların gösterildiği tuval.
LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local SurfaceArt = require(ReplicatedStorage.SurfaceArt)
SurfaceArt.promptClosed:Connect(function(canvas)
print(Players.LocalPlayer, canvas)
end)

selectorShown

Yüzey sanatı seçici kullanıcı arayüzü bir oyuncuya gösterildiğinde tetiklenir. Bu olay yalnızca bir LocalScript içinde bağlanabilir.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local SurfaceArt = require(ReplicatedStorage.SurfaceArt)
SurfaceArt.selectorShown:Connect(function()
print(Players.LocalPlayer, "yüzey sanatı seçicisini açtı")
end)

selectorHidden

Yüzey sanatı seçici kullanıcı arayüzü bir oyuncuda gizlendiğinde tetiklenir. Bu olay yalnızca bir LocalScript içinde bağlanabilir.

LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local SurfaceArt = require(ReplicatedStorage.SurfaceArt)
SurfaceArt.selectorHidden:Connect(function()
print(Players.LocalPlayer, "yüzey sanatı seçicisini kapattı")
end)
©2026 Roblox Corporation. Roblox, the Roblox logo and Powering Imagination are among our registered and unregistered trademarks in the U.S. and other countries.