Yüze 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 uzayın içinde bulundukları yerin bir parçası olduklarını hissetmeyi seviyorlar. Yüze Sanatıgeliştirici modülü oyuncuların işaretlerini bir deneyimde harfiah olarak bırakmasına izin verir.

Modül Kullanımı

Kurulum

Bir deneyimde Yüze Sanatı modülünü kullanmak:

  1. Görüntü sayfasından aç Araç Kutusu ve seç Yaratıcı Dükkanı sayfasını.

    Toolbox toggle button in Studio
  2. Modelleri Sırala seçimi seçildiğinden emin olun, sonra Tümünü Gör düğmesine tıklayın, Kategoriler için.

  3. Yerleştir ve Dev Modülleri mozülünü tıkla.

  4. Yüze Sanatı modülünü bul ve tıkla, yoksa 3D görüntüsüne kaydır ve bırak.

  5. In the Explorer window, move the entire SurfaceArt model into ServerScriptService . On running the experience, the module will distribute itself to various services and begin running.

Canvas'ı Yerleştirme

Modül, 3D dünyasına yerleştirebileceğiniz bir Yüzey Canvası modeli ile gelir. Bu model, oyuncuların yüzeyine sanat yerleştirmek için etkileşime geçecek olan şeydir.

  1. Modülün ana dizininin Yüzey Canvas meshesini bulun Çalışma Alanı dizinindeki.

  2. En üst düzeydeki Çalışma Alanı hiyerarşisine hareket ettir ve istediğin yere yerleştir.

  3. Bir test oturumunu yayınladığınızda, oyuncular bir ProximityPrompt aracılığıyla nesneyle etkileşime geçebilir ve sanatı belirli yüze yerleştirebilir.

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

Kapüşon altında, modül bir SurfaceGui kullanarak sanat öğelerini gösterir. Sanatın hangi yüze gösterileceğini yapılandırmak için:

  1. Select the Yüzey Canvası mesh.

  2. Propetler Pencere ın altında, Yüzey CanvasFace özelliğini Sağ değerinde bulun.

  3. Özellikteki bir öğe tıklayın ve bir Enum.NormalId açıklayan altı değerden birini girin.

Özellik DeğeriEşdeğer Normal ID
Önceki Enum.NormalId.Front
Geri gitmek. Enum.NormalId.Back
Sağa Enum.NormalId.Right
Sol taraftır Enum.NormalId.Left
Üstü Enum.NormalId.Top
Altı Enum.NormalId.Bottom

Özel Sanat Kaynaklarını Kullan

Deneyiminizin temasına uymak için, varsayılanlardan daha iyi uyarlanmış bir özel kaynak seti kullanabilirsiniz. Bu, 配置 fonksiyonunu, bir Script 从 ServerScriptService 呼叫 eden bir şeriftir.

Kod

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 mevcut sanatın tüm kanvaslarından kaldırmak için, bir Class.Script 'den Script işlevini çağırın.

Kod

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

Özel Efektleri Göster

Bir sanat eserini yerleştirirken ek görsel efektleri içermek istediğiniz durumlar olabilir. Bu modül, istediğiniz sanat değiştirici modülüne bağlanabilen artChanged adlı bir etkinliği kullanıcınıza gösterir ve kendi mantığınızı ekleyebilirsiniz.

Yerel Kod

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 İşaretçisi

Türler

Yüzey Sanatı Varlığı

Kanvas için kullanılacak görüntüler iki değerle temsil edilir.

AnahtarAçıklama
nameMetadatasını görünen ad.
assetIdDahil edilecek görüntünün kaynağı.

Fonksiyonlar

yapılandır

yapılandır(Config: table )

class.脚本 tabelasındaki önbelleği geçersiz hale getiren anahtarlar/değerler aracılığıyla varsayılan yapılandırma seçeneklerini üst üste geçersiz kılar. Bu işlev sadece Script ile bağlantı kurulabilir.

AnahtarAçıklamaVarsayılan
enabledModülün işlevini açık veya kapalı bırakır.doğru
assetsYüzey Sanatı Varlıkları türleri listesi.(aşağıdaki kodu görüntüleyin)
quotaPerPlayerHer oyuncu tarafından yerleştirilebilen maksimum sanat eser sayısı.2
Kod

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

getCanvases

getCanvases() : table

Tüm kanvasların SurfaceCanvas etiketiyle etiketlendiği içeriği iade eder.

Kod

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

Yer Artı

placeArt(oyuncu: Player , canvas: BasePart )

Bir oyuncunun adına bir sanat eser programıyla yerleştirir. canvas yerleştirmeyi, SurfaceCanvas etiketini kullanarak sunucu başlatıldığında etiketlenmelidir. getCanvases ile geri dönen bir canvas'i kullanmak önerilir.

Kod

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SurfaceArt = require(ReplicatedStorage:WaitForChild("SurfaceArt"))
local remoteEvent = ReplicatedStorage:WaitForChild("SurfaceArtRemoteEvent")
remoteEvent.OnServerEvent:Connect(function(player)
-- Bloxy Ödülünü varsayılan sanat kaynaklarına ilk kanvasa yerleştirin
local canvases = SurfaceArt.getCanvases()
SurfaceArt.placeArt(player, canvases[1], "BloxyAward")
end)

tüm sanatı kaldır

RemoveAllArt()

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

Kod

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

Etkinlikler

artDeğiştirildi

Bir sanat eserinin kendi yerinde bir tuvalette değiştirildiğinde ateşlenir. Bir sanat eserinin kaldırıldığında, artId``nil olacaktır. Not edin ki bir sanat eserinin bir Vector3 değ

Parametreler
canvas: BasePartEserin değiştirildiği tuvalet.
nokta: FrameSanat eserini içeren Frame .
spotPosition: Vector3Sanat eserinin yerleştirildiği doğru pozisyon.
artId: stringYeni sanat eserinin kimliği.
sahibiÜrün kodu: numberUserId sanatı yerleştiren oyuncunun.
Yerel Kod

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)

gösterilen

Bir oyuncu için bir Canvas etkileşim istemesi gösterildiğinde ateşlenir. Bağlantılı işlev, gösterilen Canvas'ı alır. Bu olay sadece bir LocalScript ile bağlantılanabilir.

Parametreler
canvas: BasePartİstemin gösterildiği alan.
Yerel Kod

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)

Kayıtlanmış

Bir Canvas etkileşim istemesi gizlendiğinde ateş eder. Bağlantılı işlev, gösterilen Canvas'ı alır. Bu olay sadece bir LocalScript ile bağlantılanabilir.

Parametreler
canvas: BasePartİstemin gösterildiği alan.
Yerel Kod

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)

択器Gösterildi

Yüzey sanat seçici UI'si bir oyuncuya gösterildiğinde ateşlenir. Bu olay sadece bir LocalScript ile bağlanabilir.

Yerel Kod

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)

選擇器Hidden

Yüzey sanat seçici UI'si bir oyuncunun için gizlenmiş olunca ateşlenir. Bu olay sadece bir LocalScript ile bağlanabilir.

Yerel Kod

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)