Table of Contents

使用精灵

中级 程序员

要将精灵添加到场景中,请向实体添加一个精灵组件(sprite component)。之后,你就可以用脚本控制该精灵。

添加精灵组件

  1. 在**场景编辑器(Scene Editor)**中,选择你要添加精灵的实体。

    Tip

    要创建实体,请右键单击场景或实体树(Entity Tree),然后选择 Empty entity。

  2. 在**属性网格(Property Grid)**中,点击 Add component(添加组件),然后选择 Sprite。

    精灵表

    Game Studio 会向该实体添加一个 Sprite 组件。

  3. 从资产视图中,将精灵表拖放到 Sprite 组件的 Source 字段中:

    也可以点击 手形图标(Select an asset,选择资产):

    拾取资产

    然后选择一个精灵表:

    选择资产

Game Studio 会将该精灵添加到实体上。

精灵组件属性

你可以在属性网格中访问精灵组件的属性。

精灵组件属性

属性 功能
Source 精灵的源图像文件
Type Sprites 在场景中具有 3D 空间。

Billboards(公告板)始终面向摄像机,并在 3D 空间中保持固定

Color 为精灵应用一种颜色
Intensity 用于缩放该颜色的强度(主要用于在 HDR 场景中渲染 LDR 精灵)
Premultiply alpha 用 alpha 分量对颜色分量进行预乘
Ignore depth 渲染精灵时忽略场景中其他元素的深度。这会始终把精灵置于之前元素的上方
Alpha cutoff 渲染精灵时忽略 alpha 值较低的像素
Sampler 精灵使用的纹理采样方式:Point(最近点)、Linear(线性)或 Anisotropic(各向异性)
Swizzle 颜色通道的访问方式。

Default 保持图像不变(finalRGB = originalRGB)

Normal map 将颜色通道用作法线贴图

Grayscale (alpha) 只使用 R 通道(finalRGBA = originalRRRR),因此精灵呈红色

Grayscale (opaque) 与 Grayscale (alpha) 相同,但 alpha 通道使用 1,因此精灵是不透明的

Render group 该精灵所属的渲染组。摄像机可以渲染不同的组。更多信息请参阅渲染组与渲染蒙版

在脚本中使用精灵

你可以使用脚本在运行时渲染精灵。为此,请把脚本附加到带有精灵组件的实体上。

有关如何向实体添加脚本的信息,请参阅使用脚本。

代码示例

此脚本显示一个精灵,每秒前进到索引中的下一个精灵。到达精灵索引末尾后,它会循环。

using Stride.Rendering.Sprites;

public class Animation : SyncScript
{
   // 声明为 public 的成员字段和属性会显示在 Game Studio 中。
   private SpriteFromSheet sprite;
   private DateTime lastFrame;

   public override void Start()
   {
       // 初始化脚本。
       sprite = Entity.Get<SpriteComponent>().SpriteProvider as SpriteFromSheet;
       lastFrame = DateTime.Now;
   }

   public override void Update()
   {
      // 每个新帧都执行一些操作。
      if ((DateTime.Now - lastFrame) > new TimeSpan(0, 0, 1))
      {
         sprite.CurrentFrame += 1;
         lastFrame = DateTime.Now;
      }
   }
}

另请参阅