Người chơi thường thích cảm giác như họ là một phần của việc xây dựng không gian họ ở.Các module phát triển bề mặt bề mặt cho phép người chơi thực sự rời khỏi dấu hiệu của họ trong một trải nghiệm.
Sử dụng module
Cài đặt
Để sử dụng mô-đun SurfaceArt trong một trải nghiệm:
Hãy chắc chắn rằng kiểu sắp xếp Mô hình được chọn, sau đó nhấp vào nút Xem tất cả đối với Danh mục .
Tìm và nhấp vào ô Dev Modules .
Tìm mô-đun Nghệ thuật bề mặt và nhấp vào nó, hoặc kéo và thả nó vào cửa sổ 3D.
Trong cửa sổ Explorer, di chuyển toàn bộ mô hình SurfaceArt vào ServerScriptService .Sau khi chạy trải nghiệm, mô-đun sẽ phân phối bản thân cho các dịch vụ khác nhau và bắt đầu chạy.
Xác định vị trí bản vẽ
Mô-đun đi kèm với một mô hình SurfaceCanvas mà bạn có thể đặt trong thế giới 3D.Mô hình này là những gì người chơi sẽ tương tác để đặt nghệ thuật trên bề mặt của nó.
Tìm mesh Bảng vẽ bề mặt bên trong thư mục Không gian làm việc của thư mục chính của module.
Di chuyển nó vào cấp cao nhất Không gian làm việc và đặt nó ở vị trí mong muốn.
Sau khi xuất bản/chạy phiên thử nghiệm, người chơi sẽ có thể tương tác với đối tượng thông qua một ProximityPrompt và đặt nghệ thuật trên bề mặt được xác định.
Thay đổi khuôn mặt bản vẽ
Bên dưới mui, mô-đun sử dụng một SurfaceGui để hiển thị các vật phẩm nghệ thuật. Để cấu hình bề mặt nào vật phẩm nghệ thuật xuất hiện:
Chọn lưới SurfaceCanvas .
Ở phía dưới của cửa sổ Tính năng , tìm thuộc tính SurfaceCanvasFace với giá trị mặc định là Phải .
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ị thuộc tính | ID Bình thường tương ứng |
---|---|
Phía trước | Enum.NormalId.Front |
Quay lại | Enum.NormalId.Back |
Phải | Enum.NormalId.Right |
Bên trái | Enum.NormalId.Left |
Trên cùng | Enum.NormalId.Top |
Ở đáy | Enum.NormalId.Bottom |
Sử dụng tài sản nghệ thuật tùy chỉnh
Để phù hợp hơn với 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 riêng của mình thay vì các mặc định.Điều này có thể được thực hiện thông qua chức năng configure , đượ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ả các tác phẩm nghệ thuật hiện có từ tất cả các bản vẽ trên thế giới, hãy gọi chức năng removeAllArt từ một Script .
Tập lệnh
local ReplicatedStorage = game:GetService("ReplicatedStorage")local SurfaceArt = require(ReplicatedStorage:WaitForChild("SurfaceArt"))SurfaceArt.removeAllArt()
Hiển thị hiệu ứng tùy chỉnh
Có thể có trường hợp bạn muốn bao gồm thêm hiệu ứng hình ảnh khi một tác phẩm nghệ thuật được đặt.Mô-đun này tiết lộ một sự kiện có tên là artChanged trên khách hàng mà bạn có thể kết nối và thêm logic riêng của bạn.
Tập lệnh đị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 số tia lửa trong 3 giây
task.spawn(function()
local emitterAttachment = createParticleEmitter(canvas, spotPosition)
task.wait(3)
emitterAttachment:Destroy()
end)
end
end)
Tham chiếu API
Loại
Tài sản SurfaceArt
Hình ảnh được sử dụng làm nghệ thuật cho bản vẽ được đại diện bởi một bảng với hai giá trị.
Nhân vật chính | Mô tả |
---|---|
name | Tên hiển thị metadata. |
assetId | ID tài sản của hình ảnh để bao gồm. |
Chức năng
điều chỉnh
điều chỉnh(config: table )
Thay thế các tùy chọn cấu hình mặc định thông qua các chìa khóa/giá trị sau trong bảng config .Chức năng này chỉ có thể được gọi từ một Script .
Nhân vật chính | Mô tả | Mặc định |
---|---|---|
enabled | Bật/tắt chức năng của mô-đun trên hoặc tắt. | đúng |
assets | Danh sách SurfaceArtAsset các loại. | (xem mã bên dưới) |
quotaPerPlayer | Số tối đa các mảnh nghệ thuật có thể được đặt bởi mỗi người chơi. | 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ận đượcCanvases
getCanvases(): table
Trả lại tất cả các bản vẽ được gắn thẻ với thẻ SurfaceCanvas .
Tập lệnh
local ReplicatedStorage = game:GetService("ReplicatedStorage")local SurfaceArt = require(ReplicatedStorage:WaitForChild("SurfaceArt"))local canvases = SurfaceArt.getCanvases()
nhận dạng nơi
Đặt một chương trình nghệ thuật theo cách thủ công thay mặt cho một người chơi.Lưu ý rằng đối tượng canvas phải được gắn thẻ với thẻ SurfaceCanvas khi máy chủ được khởi tạo.Khuyến nghị chỉ sử dụng cái này với một bản vẽ được trả về từ getCanvases .
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 Giải thưởng Bloxy từ 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ài viết
loại bỏAllArt()
Loại bỏ tất cả các tác phẩm nghệ thuật 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
artChanged đã thay đổi
Bắt lửa khi một tác phẩm nghệ thuật được thay đổi tại một vị trí cụ thể trên bản vẽ.Khi một tác phẩm nghệ thuật bị xóa, artId sẽ là nil .Lưu ý rằng một giá trị Vector3 được truyền là tham số thứ ba cho người xử lý sự kiện để bạn có thể vị trí một hiệu ứng tùy chỉnh tại vị trí chính xác mà tác phẩm nghệ thuật được đặt.Sự kiện này chỉ có thể kết nối trong một LocalScript .
Tham số | |
---|---|
bản vẽ: BasePart | Bản vẽ mà tác phẩm nghệ thuật đã được thay đổi. |
điểm: Frame | Nội bộ Frame chứa tác phẩm nghệ thuật ImageLabel . |
vị trí điểm: Vector3 | Vị trí chính xác mà tác phẩm nghệ thuật được đặt. |
artId: string | ID tài sản của tác phẩm mới. |
chủ sở hữuUserId: number | UserId của người chơi đã đặt tác phẩm nghệ thuật. |
Tập lệnh đị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)
được hiển thị nhanh
Bắt lửa khi một thông báo tương tác bản vẽ được hiển thị cho người chơi.Chức năng được kết nối nhận canvas mà lời nhắc đang hiển thị.Sự kiện này chỉ có thể kết nối trong một LocalScript .
Tham số | |
---|---|
bản vẽ: BasePart | Bản vẽ mà lời nhắc đang hiển thị. |
Tập lệnh đị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 nhanh promptHidden
Bắt lửa khi một lời nhắc tương tác bản vẽ được ẩn.Chức năng được kết nối nhận canvas mà lời nhắc đang hiển thị.Sự kiện này chỉ có thể kết nối trong một LocalScript .
Tham số | |
---|---|
bản vẽ: BasePart | Bản vẽ mà lời nhắc được hiển thị. |
Tập lệnh đị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ị
Bắt lửa khi giao diện lựa chọn nghệ thuật bề mặt được hiển thị cho người chơi. Sự kiện này chỉ có thể được kết nối trong một LocalScript .
Tập lệnh đị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)
nhà lựa chọnHidden
Bắt lửa khi giao diện lựa chọn nghệ thuật bề mặt của người chơi được ẩn cho một người chơi. Sự kiện này chỉ có thể được kết nối trong một LocalScript .
Tập lệnh đị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)