裝飾對象是一個用於應用圖像到 BasePart 面的對象。
裝飾如何工作?
裝飾會將圖像應用在 BasePart 它的上一個。 表面上此裝飾適用的是 FaceInstance.Face 屬性。 裝飾的大小取決於 BasePart.Size 的大小。 裝飾的大小取決於 1>Class.Face1> 的大小。 裝飾
裝飾應用程式的圖像是由其 Decal.Texture 屬性決定。圖像可以上傳到 Roblox,提供裝飾適用程式的使用者指南。有關上傳圖像的方法,請參閱 裝飾和裝飾。
裝飾的替代
雖然樣式有各種各樣的應用,但在某些情況下開發人員可能會想選擇以下類別。
- 對於重複的地磚文字,建議使用 Texture 對象
- 要應用GUI元素,SurfaceGui 對象應該使用
- 如果需要改變圖像上照明的效果,SurfaceGui 對象應該用
範例程式碼
-- create part
local part = Instance.new("Part")
part.Size = Vector3.new(5, 1, 5)
part.Position = Vector3.new(0, 0.5, 0)
part.Anchored = true
part.TopSurface = Enum.SurfaceType.Smooth
part.BrickColor = BrickColor.new("Toothpaste")
-- create decal
local decal = Instance.new("Decal")
decal.Face = Enum.NormalId.Top
decal.Parent = part
-- create sound
local sound = Instance.new("Sound")
sound.SoundId = "rbxasset://sounds/uuhhh.mp3" -- oof
sound.Parent = part
-- define faces
local happyFace = "http://www.roblox.com/asset/?id=26424652"
local sadFace = "http://www.roblox.com/asset/?id=147144198"
decal.Texture = happyFace
-- touched event
local cooldown = false
part.Touched:Connect(function(hit)
if not cooldown then
if hit and hit.Parent then
cooldown = true
sound:Play()
decal.Texture = sadFace
task.wait(1)
decal.Texture = happyFace
task.wait(0.2)
cooldown = false
end
end
end)
-- add to workspace
part.Parent = workspace
概要
屬性
Class.Decal 的 Decal 色。
作為貼貼花的 Decal.Transparency 屬性的乘數。效果只對本地玩家可見。
應用 Decal 的圖像的內容ID。
決定 Decal 的透明度,0 完全不透明,1 完全透明。
決定多個裝飾的臉部位時的渲染順序。
設定磚塊上的對象的面。
屬性
Color3
Class.Decal 的 Decal 色。
開發人員應該注意,這個屬性只會設定裝貼花的顏色,而不是顏色。這意味著,除非原來的 Decal 是白色 (RGB = 1,1,1) ,否則顏色無法使用此屬性來變更。
通過將 Color3 的 RGB 屬性降低在聯集合中,開發人員可以使裝飾更暗。
範例程式碼
local TweenService = game:GetService("TweenService")
local part = Instance.new("Part")
part.Size = Vector3.new(10, 10, 1)
part.Position = Vector3.new(0, 5, 0)
part.Anchored = true
part.Transparency = 1
local decal = Instance.new("Decal")
decal.Face = Enum.NormalId.Front
decal.Texture = "http://www.roblox.com/asset/?id=1145367640" -- white circle
decal.Parent = part
part.Parent = workspace
local redTween = TweenService:Create(
decal,
TweenInfo.new(1, Enum.EasingStyle.Linear, Enum.EasingDirection.Out),
{ Color3 = Color3.new(1, 0, 0) }
)
local greenTween = TweenService:Create(
decal,
TweenInfo.new(1, Enum.EasingStyle.Linear, Enum.EasingDirection.Out),
{ Color3 = Color3.new(0, 1, 0) }
)
local blueTween = TweenService:Create(
decal,
TweenInfo.new(1, Enum.EasingStyle.Linear, Enum.EasingDirection.Out),
{ Color3 = Color3.new(0, 0, 1) }
)
while true do
redTween:Play()
redTween.Completed:Wait()
greenTween:Play()
greenTween.Completed:Wait()
blueTween:Play()
blueTween.Completed:Wait()
end
LocalTransparencyModifier
作為貼紙的 Decal.Transparency 屬性的乘數。效果只對 Players.LocalPlayer 可見。
這個屬性應該在使用 Decal.Transparency 由不同的指指令碼設置的情況下。Decal.Transparency 的好處是可以在原來 Decal 的基礎上變更它,而不會有任何擔心。
當 Decal 設為 1 時,即使是原本的透明度,Decal.Transparency 也會完全隱藏。當它設為 0 時,裝貼花的渲染透明度會與 Class.Decal.Transparency 值相匹配。方程式如下:
Displayed Transparency = Transparency + ((1 - Transparency) * LocalTransparencyModifier)
注意,此屬性應該只在客戶端使用,並且不會重複到服務伺服器。
對於 BaseParts 的變體,請參閱 BasePart.LocalTransparencyModifier 。
Texture
應用 Decal 的圖像的內容 ID。
我如何上傳裝飾?
圖像可以上傳到 Roblox ,但要遵守社群指引。有關上傳圖像的方法,請參閱 紋理和裝飾。
如何查找我如何查找裝飾內容 ID?
與 Sound 和 Animation 對象不同,裝飾的內容ID 不是來自 URL 的數字。有兩種主要方法來尋找裝飾的內容ID:
- 將 URL 貼入 Roblox Studio 中的「結構」屬性。Roblox 將自動更新屬性至正確的內容 ID。請注意,這只適用於 Roblox Studio 中,並且無法從腳本或遊戲正在執行時執行。
- 將裝飾挿入遊戲,這通常是通過 "我的裝飾" 下方的工具箱完成。內容ID可以在裝飾挿入後找到。注意, InsertService:LoadAsset() 也可以用於自動化此方法。
範例程式碼
-- create part
local part = Instance.new("Part")
part.Size = Vector3.new(5, 1, 5)
part.Position = Vector3.new(0, 0.5, 0)
part.Anchored = true
part.TopSurface = Enum.SurfaceType.Smooth
part.BrickColor = BrickColor.new("Toothpaste")
-- create decal
local decal = Instance.new("Decal")
decal.Face = Enum.NormalId.Top
decal.Parent = part
-- create sound
local sound = Instance.new("Sound")
sound.SoundId = "rbxasset://sounds/uuhhh.mp3" -- oof
sound.Parent = part
-- define faces
local happyFace = "http://www.roblox.com/asset/?id=26424652"
local sadFace = "http://www.roblox.com/asset/?id=147144198"
decal.Texture = happyFace
-- touched event
local cooldown = false
part.Touched:Connect(function(hit)
if not cooldown then
if hit and hit.Parent then
cooldown = true
sound:Play()
decal.Texture = sadFace
task.wait(1)
decal.Texture = happyFace
task.wait(0.2)
cooldown = false
end
end
end)
-- add to workspace
part.Parent = workspace
Transparency
決定 Decal 的透明度,0 完全不透明,1 完全透明。
注意,Decals也尊重原始圖像檔案上傳到 Roblox 的透明度。這意味著在上傳到 Roblox 之前,Decals可以變更,而不需要使用透明度屬性。
Decal.LocalTransparencyModifier 作為多處透明度的乘數,應該在裝飾的透明度發生其他變更時使用,例如使用其他程式指令碼的角色。
對於 BaseParts,請參閱 BasePart.Transparency 。
範例程式碼
local TweenService = game:GetService("TweenService")
local part = Instance.new("Part")
part.Size = Vector3.new(10, 10, 1)
part.Position = Vector3.new(0, 5, 0)
part.Anchored = true
part.Transparency = 1
local decal = Instance.new("Decal")
decal.Face = Enum.NormalId.Front
decal.Texture = "http://www.roblox.com/asset/?id=699259085" -- roblox logo
decal.Parent = part
part.Parent = workspace
local tween = TweenService:Create(
decal,
TweenInfo.new(1, Enum.EasingStyle.Linear, Enum.EasingDirection.Out, -1, true),
{ Transparency = 1 }
)
tween:Play()
ZIndex
ZIndex 決定裝飾在同一個 Face 上的裝飾的排序。裝飾會在 BasePart 的優先級排序中 renders 裝飾,其中最低值是最先渲染。因此,上方的一個裝飾會先渲染其他裝飾,而在裝飾之上 (
有效值範圍是 -MAX_INT 到 MAX_INT,包括 (2,147,483,647 或 (2^31 - 1))。 如果您不確定在未來是否需要覆蓋兩個已存在的裝飾之間,可以考慮使用 100 倍 (i.e. 0, 100, 200
也看:
- GuiObject.ZIndex , 一個相同的屬性,但對於GUI元素