งานศิลปะพื้นดิน

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

ผู้เล่นมักจะชอบที่จะรู้สึกเหมือนเป็นส่วนหนึ่งของการสร้างพื้นที่พวกเขาอยู่ใน ผู้พัฒนา พื้นผิวศิลปะ ให้ผู้เล่นออกจากเครื่องหมายในประสบการณ์

การใช้งานโมดูล

การติดตั้ง

เพื่อใช้ ศิลปะพื้นผิว โมดูลในประสบการณ์:

  1. จากแท็บ ดู เปิด กล่องเครื่องมือ และเลือกแท็บ ร้านค้าผู้สร้าง

    Toolbox toggle button in Studio
  2. ให้แน่ใจว่า รุ่น การเรียงลำดับเลือกแล้วคลิกปุ่ม ดูทั้งหมด สําหรับ หมวดหมู่

  3. ค้นหาและคลิกที่ โมดูลการพัฒนา รายการ

  4. ค้นหาโมดูล ศิลปะพื้นผิว และคลิกหรือลากไปยัง 3D มุมมอง

  5. ใน หน้าต่าง Explorer ให้ย้ายโมเดล SurfaceArt ทั้งหมดไปยัง ServerScriptService เมื่อเรียกใช้ประสบการณ์จะเริ่มต้นดำเนินการโดยหลายบริการและเริ่มดำเนินการ

ตำแหน่งพื้นผิว

โมดูลมีหนึ่ง SurfaceCanvas โมเดลที่คุณสามารถวางในโลก 3D ได้ โมเดลนี้คือสิ่งที่ผู้เล่นจะใช้เพื่อวางศิลปะบนพื้นผิวของมัน

  1. ค้นหา SurfaceCanvas เมชภายใน กล่องงาน ฟอลเดอร์ของโมดูลหลัก

  2. ย้ายมันไปยังระดับการจัดการ Workspace และตำแหน่งมันที่ต้องการ

  3. เมื่อเผยแพร่/วิดีโอเซสชันทดสอบผู้เล่นจะสามารถใช้งานวัตถุผ่านทาง ProximityPrompt และวาดศิลปะบนพื้นผิวที่กำหนด

เปลี่ยนหน้า Canvas

ภายใต้หลังคา โมดูลใช้ SurfaceGui เพื่อแสดงผลงานศิลปะ เพื่อกำหนดพื้นผิวที่ศิลปะปรากฏขึ้น:

  1. เลือก SurfaceCanvas เมช

  2. ในด้านล่างของหน้าต่าง โปรพีเพอร์ตี้ ค้นหา ค่านิยม SurfaceCanvasFace ด้วยค่าเริ่มต้นของ Right

  3. คลิกค่าตัวละครและใส่หนึ่งในหกมูลค่าที่อธิบาย Enum.NormalId

มูลค่าละตรับรหัสปกติที่ตรงกัน
หน้าด้านหน้า Enum.NormalId.Front
กลับ Enum.NormalId.Back
ขวา Enum.NormalId.Right
ซ้าย Enum.NormalId.Left
ด้านบน Enum.NormalId.Top
ด้านล่าง Enum.NormalId.Bottom

ใช้สินทรัพย์ศิลปะที่กำหนดเอง

เพื่อให้เหมาะกับธีมของประสบการณ์ของคุณมากขึ้น คุณอาจใช้ชุดทรัพยากรที่กำหนดเองของคุณแทนที่จะใช้ค่าเริ่มต้น สิ่งนี้สามารถทำได้ผ่านหน้า กำหนดค่า ใน Script โดยใ

สคริป

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,
})

ล้างพื้นทั้งหมด

เพื่อลบงานศิลปะทั้งหมดที่มีอยู่ในแคนวาสทั้งหมดในโลกให้โทร removeAllArt ฟังจาก a Script

สคริป

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

แสดงเอฟเฟกต์ที่กำหนดเอง

อาจมีกรณีที่คุณต้องการรวมเอฟเฟกต์ทางสายตาเพิ่มเติมเมื่องานศิลปะถูกวาง โมดูลนี้แสดงเหตุการณ์ที่เรียกว่า artChanged บนคลายเคลื่อนที่คุณสามารถเชื่อมต่อและเพิ่มล็อกของคุณเอง

สคริปต์ท้องถิ่น

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 วินาที
task.spawn(function()
local emitterAttachment = createParticleEmitter(canvas, spotPosition)
task.wait(3)
emitterAttachment:Destroy()
end)
end
end)

อ้างอิง เอกสารอ้างอิงเกี่ยวกับ API

รูปแบบ

รายการศิลปะพื้นผิว

รูปภาพที่จะใช้เป็นงานศิลปะสำหรับพื้นผิวเรียบร้อยได้รับการแทนที่โดยโต๊ะที่มีสองค่า

กุญแจคำอธิบาย
nameชื่อแสดงตัวแห่งรายละเอียด
assetIdรหัสสินทรัพย์ของรูปภาพที่จะรวมอยู่

ฟังก์ชัน

กำหนดค่า

กำหนดค่า(คอนฟิก: table )

เปลี่ยนตั้งค่าการกำหนดค่าเริ่มต้นผ่านคีย์ / ค่าต่อไปนี้ในตาราง config เท่านั้น ฟังก์ชันนี้สามารถเรียกได้จาก Script เท่านั้น

กุญแจคำอธิบายเริ่มต้น
enabledเปิด/ปิดการใช้งานโมดูลจริง
assetsรายการ พื้นผิวศิลปะดิจิทัล รูปแบบ(ดูรหัสด้านล่าง)
quotaPerPlayerจำนวนสูงสุดของชิ้นส่วนศิลปะที่ผู้เล่นแต่ละคนสามารถวางได้2
สคริป

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

รับ Canvases

รับ Canvases: table

กลับรายการบนพื้นที่เติมเต็มทั้งหมดที่มีแท็ก SurfaceCanvas

สคริป

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

สถานที่ศิลปะ

วาดสถานที่(ผู้เล่น: Player , พื้น: BasePart )

วางโปรแกรมชิ้นงานศิลปะในนามของผู้เล่น หมายเหตุว่าวัตถุ canvas จะต้องถูกแท็กด้วยป้ายชื่อ SurfaceCanvas เมื่อเซิร์ฟเวอร์ถูกไอนิเซียไลซ์ ให้ใช้เฉพาะกับคันวาดที่ก

สคริป

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SurfaceArt = require(ReplicatedStorage:WaitForChild("SurfaceArt"))
local remoteEvent = ReplicatedStorage:WaitForChild("SurfaceArtRemoteEvent")
remoteEvent.OnServerEvent:Connect(function(player)
-- วางรางวัล Bloxy จากแหล่งศิลปะปกติในพื้นหลังตรง
local canvases = SurfaceArt.getCanvases()
SurfaceArt.placeArt(player, canvases[1], "BloxyAward")
end)

ลบศิลปะทั้งหมด

ลบทั้งหมดArt()

ลบงานศิลปะทั้งหมดออกจากพื้นผิวทั้งหมด

สคริป

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

เหตุการณ์

artเปลี่ยนแปลง

เปิดให้เปลี่ยนแปลงเมื่องานศิลปะถูกเปลี่ยนที่สถานที่หนึ่งบนแคนวาส. เมื่องานศิลปะถูกลบออกจะ artId จะเป็น

ตัวแปร
ตรา: BasePartพื้นที่บนตัวอักษรซึ่งศิลปะถูกเปลี่ยนแปลง
สปอต: Frameภายใน Frame ที่มีงานศิลปะ ImageLabel
ตําแหน่ง: Vector3ตำแหน่งที่แน่นอนที่ภาพถูกวาง
artId: stringรหัสสินทรัพย์ของงานศิลปะใหม่
ชื่อเจ้าของ: numberUserId ของผู้เล่นที่วาดศิลปะ
สคริปต์ท้องถิ่น

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)

แสดงตัวอย่าง

จะเกิดขึ้นเมื่อกระบองเต้นที่มีการใช้งานปรากฏขึ้นสำหรับผู้เล่น ฟังก์ชันที่เชื่อมต่อจะได้รับกระบองเต้นที่มีการแสดง นี้เหตุการณ์สามารถเชื่อมต่อใน LocalScript เท่านั้น

ตัวแปร
ตรา: BasePartสามารถเลือกได้ในแคนวาสที่เนื้อหานี้ปรากฏขึ้น
สคริปต์ท้องถิ่น

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)

แสดงความโปร่งใส

เปิดใช้งานเมื่อปุ่มใช้งานบนพื้นหน้าผืนผ้าถูกซ่อน ฟังก์ชันที่เชื่อมต่อจะได้รับพื้นผืนหน้าผ้าที่สามารถแสดงผลได้ เหตุการณ์นี้สามารถเชื่อมต่อได้ใน LocalScript เท่านั้น

ตัวแปร
ตรา: BasePartพื้นหน้าต่างที่เราแสดงข้อความ
สคริปต์ท้องถิ่น

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)

ตัวเลือกที่แสดง

เกิดขึ้นเมื่อตัวเลือกศิลปะพื้นผิวปรากฏให้ผู้เล่นเห็น เหตุการณ์นี้สามารถเชื่อมต่อได้ใน LocalScript เท่านั้น

สคริปต์ท้องถิ่น

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)

ซ่อนเลือก

เกิดขึ้นเมื่อตัวเลือกศิลปะพื้นผิวถูกซ่อนสำหรับผู้เล่น เหตุการณ์นี้สามารถเชื่อมต่อได้ใน LocalScript เท่านั้น

สคริปต์ท้องถิ่น

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)