Người chơi thường thích cảm thấy như thể họ là một phần của quá trình xây dựng không gian mà họ đang ở trong. The Bề mặtArt 模块 cho phép người chơi literally leave their mark in an experience.
Sử dụng mô-đun
Cài đặt
Để sử dụng module SurfaceArt trong một trải nghiệm:
Từ trang Xem, mở trang Hộp công cụ và chọn trang Cửa hàng Creator .
Đảm bạn chắn chọn Mô Hình sắp xếp, then click the Xem tất cả button for Các danh mục .
Tìm và nhấp vào Dev Modules mảnh.
Tìm modul Nghệ thuật bề mặt và nhấp vào nó, hoặc kéo nó vào 3D view.
Trong cửa sổ Explorer, di chuyển toàn bộ mô hình SurfaceArt đến ServerScriptService . Khi chạy trải nghiệm, mô-đun sẽ được phân bố đến các dịch vụ khác nhau và bắt đầu chạy.
Định vị bản vẽ
Modul này đi kèm với một mô hình SurfaceCanvas bạn có thể đặt vào thế giới 3D. Đây là nơi người chơi sẽ tương tác để đặt vật phẩm vào bề mặt của nó.
Tìm SurfaceCanvas mạng trong thư mục Workspace của modul chính.
Di chuyển nó vào cấp độ cao nhất Workspace và đặt nó ở vị trí mà bạn muốn.
Khi công bố/chạy một phiên kiểm tra, người chơi sẽ có thể tương tác với đối tượng thông qua một ProximityPrompt và đặt vật phẩm trên bề mặt đã định.
Thay đổi khuôn mặt Canvas
Ở dưới cap, mô-đun sử dụng một SurfaceGui để hiển thị các mặt hàng nghệ thuật. Để cấu hình trên mặt nào nghệ thuật xuất hiện:
Chọn Bề mặt Canvas meshes.
Ở phía dưới của cái Properties window, locate the SurfaceCanvasFace attribute with a default value of Right .
Nhấp vào thuộc tính và nhập một trong sáu giá trị mô tả một Enum.NormalId .
Giá trị đặc tính | ID Phù Hợp Normal |
---|---|
Phía trước | Enum.NormalId.Front |
Quay lại | Enum.NormalId.Back |
Phải | Enum.NormalId.Right |
Rẽ trái | Enum.NormalId.Left |
Trên cùng | Enum.NormalId.Top |
Phần dưới cùng | Enum.NormalId.Bottom |
Sử dụng tài nguyên nghệ thuật tùy chỉnh
Để phù hợp chủ đề của trải nghiệm của bạn, bạn có thể sử dụng bộ tài nguyên tùy chỉnh của riêng bạn thay vì các giá trị mặc định. Điều này có thể được thực hiện thông qua chức năng tùy chỉnh , được gọi từ một Script trong ServerScriptService</
Tập lệnh
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,})
Xóa tất cả các bản vẽ
Để xóa tất cả những bức tranh hiện có từ tất cả các bản vẽ trên thế giới, gọi chức năng xóa tất cả art từ một Script .
Tập lệnh
local ReplicatedStorage = game:GetService("ReplicatedStorage")local SurfaceArt = require(ReplicatedStorage:WaitForChild("SurfaceArt"))SurfaceArt.removeAllArt()
Hiển thị Effects Tùy chỉnh
Có thể có trường hợp bạn muốn bao gồm các hiệu ứng thị giác bổ sung khi bức tranh được đặt. Modul này hiển thị một sự kiện tên là artChanged trên client bạn có thể kết nối và thêm logica của riêng bạn.
Script địa phương
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
-- Hiển thị một vài lấp lánh trong 3 giây
task.spawn(function()
local emitterAttachment = createParticleEmitter(canvas, spotPosition)
task.wait(3)
emitterAttachment:Destroy()
end)
end
end)
Tham khảo API
Các loại
Hồ sơ nghệ thuật bề mặt
Hình ảnh được sử dụng như một bức tranh cho bản vẽ được diễn tả bằng một bảng có hai giá trị.
Chìa khóa | Mô tả |
---|---|
name | Tên hiển thị metadữ. |
assetId | ID tài nguyên của hình ảnh để bao gồm. |
Hàm
điều chỉnh
Làm mất các lựa chọn cài đặt mặc định qua các chìa khóa/giá trị được đề xuất dưới đây trong bảng config . Chức năng này chỉ có thể được gọi từ một Script .
Chìa khóa | Mô tả | Mặc định |
---|---|---|
enabled | Bật/tắt chức năng của các mô-đun. | đúng |
assets | Danh sách các SurfaceArtAsset kiểu. | (xem mã bên dưới) |
quotaPerPlayer | Số lượng tối đa các bộ phận nghệ thuật mà mỗi người chơi có thể đặt. | 2 |
Tập lệnh
local ReplicatedStorage = game:GetService("ReplicatedStorage")local SurfaceArt = require(ReplicatedStorage:WaitForChild("SurfaceArt"))SurfaceArt.configure({quotaPerPlayer = 4,promptKeyCode = Enum.KeyCode.T,promptMaxActivationDistance = 8,})
nhậnCanvases
Trả lại tất cả các bản vẽ được gắn nhãn với nhãn SurfaceCanvas .
Tập lệnh
local ReplicatedStorage = game:GetService("ReplicatedStorage")local SurfaceArt = require(ReplicatedStorage:WaitForChild("SurfaceArt"))local canvases = SurfaceArt.getCanvases()
đặt Art
Đặt một tác phẩm nghệ thuật lên trên behalf của một người chơi. Ghi nhớ rằng đối tượng canvas phải được gắn nhãn với nhãn SurfaceCanvas khi máy chủ được khởi tạo. Nó được khuyến nghị sử dụng này chỉ với một tác phẩm đư
Tập lệnh
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SurfaceArt = require(ReplicatedStorage:WaitForChild("SurfaceArt"))
local remoteEvent = ReplicatedStorage:WaitForChild("SurfaceArtRemoteEvent")
remoteEvent.OnServerEvent:Connect(function(player)
-- Đặt Bloxy Award từ nguồn tài nguyên nghệ thuật mặc định vào bản vẽ đầu tiên
local canvases = SurfaceArt.getCanvases()
SurfaceArt.placeArt(player, canvases[1], "BloxyAward")
end)
xóa tất cả các bức vẽ
Loại bỏ tất cả các bức vẽ từ tất cả các bề mặt.
Tập lệnh
local ReplicatedStorage = game:GetService("ReplicatedStorage")local SurfaceArt = require(ReplicatedStorage:WaitForChild("SurfaceArt"))SurfaceArt.removeAllArt()
Sự kiện
artĐã thay đổi
Lửa khi một bức tranh được thay đổi ở một vị trí cụ thể trên bản vẽ. Khi bức tranh được xóa, artId sẽ được truyền làm tham số thứ ba cho hệ thống xử
Các biến | |
---|---|
canvas: BasePart | Bản vẽ màu trên đó bức vẽ đã được thay đổi. |
spot: Frame | Class.Frame nội bộ chứa hội họa ImageLabel . |
位置: Vector3 | Vị trí chính xác mà bức tranh đã được đặt. |
artId: string | ID tài sản của bức tranh mới. |
OwnerUserId: number | UserId của người đặt vẽ. |
Script địa phương
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)
đã hiển thị
Lửa khi một hộp thoại hướng dẫn người chơi thấy đã hiển thị. Hàm được kết nối nhận bản vẽ trên màn hình mà hộp thoại đó hiển thị. Sự kiện này chỉ có thể kết nối trong một LocalScript .
Các biến | |
---|---|
canvas: BasePart | Bản vẽ mà nội dung đang được hiển thị. |
Script địa phương
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)
ẩn
Kích hoạt khi một hộp thoại hướng dẫn người dùng được ẩn. Hàm liên kết nhận bản vẽ mà hộp thoại đang hiển thị. Sự kiện này chỉ có thể kết nối trong một LocalScript .
Các biến | |
---|---|
canvas: BasePart | Bản vẽ mà nội dung đã được hiển thị. |
Script địa phương
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)
selectorHiển thị
Lửa khi giao diện người dùng chọn nghệ thuật bề mặt được hiển thị cho một người chơi. Sự kiện này chỉ có thể được kết nối trong một LocalScript .
Script địa phương
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)
ẩnSelector
Lửa khi người dùng người dùng người dùng bị ẩn khỏi mặt trên của máy người chơi. Sự kiện này chỉ có thể được kết nối trong một LocalScript .
Script địa phương
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)