一个 Texture 是一种图像,你可以将其放置在任何 部件 或 联合体 的任何面上,且在表面大小上 重复 水平和垂直方向。相对而言,Decal 是一种 拉伸 图像,以适应部件或联合体表面的区域。在将 Texture 或 Decal 对象添加到部件或联合体后,你可以:
更改纹理或贴花的 Color3 属性,通过 RGB 颜色代码设置颜色色调。
将纹理或贴花的 Transparency 属性更改为介于默认值 0(完全可见)和 1(不可见)之间的值。




创建纹理或贴花
要创建一个纹理或贴花,你必须将 Texture 或 Decal 对象添加到一个部件或联合体上。你可以 导入 图像到 Studio 中用作纹理和贴花,以便在游戏之间使用,并 分发 到 创作者商店。一旦你导入了图像,Studio 会为其分配一个唯一的资产 ID。
选择 ColorMapContent 属性,并通过以下任一方法应用图像:
- 选择任何你之前上传的纹理或贴花。
- 在字段中输入一个 资产 ID。
自定义纹理
与贴花不同,纹理 提供了更进一步的功能以缩放、偏移和动画源图像。
缩放纹理
部件的大小不会影响纹理。相反,缩放部件仅会增加或减少纹理的重复次数。
StudsPerTileU 和 StudsPerTileV 属性决定每个“砖块”的大小(以研究单位为单位)。StudsPerTileU 决定纹理的横向大小,而 StudsPerTileV 决定纹理的纵向大小。

偏移纹理
如果你想对纹理的位置进行更多控制,可以通过调整 OffsetStudsU(水平)和 OffsetStudsV(垂直)属性来偏移纹理。这对 动画 也很有帮助。

动画纹理
使用 TweenService,你可以对纹理属性进行 tween,像 OffsetStudsU 和 StudsPerTileV,以实现动画表面。例如,如果你对一个容器应用两个雾纹理并用以下脚本对它们进行动画处理,你可以实现层叠移动雾的效果。
local TweenService = game:GetService("TweenService")local texture1 = script.Parent.Texture1local texture2 = script.Parent.Texture2local tweenInfo1 = TweenInfo.new(8, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut, -1)local tween1 = TweenService:Create(texture1, tweenInfo1, {OffsetStudsV=50})local tweenInfo2 = TweenInfo.new(7, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut, -1, true)local tween2 = TweenService:Create(texture2, tweenInfo2, {OffsetStudsU=50, StudsPerTileU=55, StudsPerTileV=45})tween1:Play()tween2:Play()
纹理流
纹理流 根据距离和相机视图动态加载纹理,让你可以更自由地使用纹理,而不必担心在不同设备间的缩放。引擎首先加载基线质量的纹理,按重要性顺序排列,然后逐渐提高每个纹理的质量,直到达到设备上的可用内存。纹理流是自动启用的,因此你无需采取任何措施即可受益于此。

优势
- 更快的加载时间和更小的下载量:纹理几乎立即以基线质量出现,且引擎只下载所需的细节,在传输和本地磁盘缓存中进行压缩。
- 在关键位置提供更高的质量:引擎持续估算每个对象的重要性,例如通过它占用的屏幕空间,并在这些纹理上使用内存预算,以便最突出对象获得最高的细节。
- 减少内存不足导致的崩溃:由于引擎保持在内存预算内,并能在内存不足时降低纹理质量,玩家发生纹理内存峰值导致崩溃的可能性大大降低。
纹理流与 MeshPart(有骨骼和无骨骼)、SurfaceAppearance、Texture、Decal、MaterialVariant、Beam、ParticleEmitter 以及应用于 PartOperation 和 BasePart 实例的基础材质一同工作。
最佳实践
- 优先使用独特、单独的纹理,而不是纹理图集,除非图集应用于可批量处理的零件;请求图集中某个纹理的高分辨率会同时流入整个图集的该分辨率。
- 在你的 UV 映射网格中保持近乎均匀的像素密度,以便引擎能够为每个纹理选择最佳分辨率。
- 继续仔细管理纹理内存,对于纹理流尚不支持的实例类型。




