简介

 「Scratch Card」是一款简单易用的资源包,让你能够快速创建刮刮卡!只需添加预制体、选择刮刮卡图片并设置几个参数即可。
使用「Scratch Card」,你可以在以下组件上实现刮擦效果: MeshRendererSpriteRendererImage
 该资源支持 标准渲染管线URPHDRP,同时兼容 旧版输入系统 (Input Manager)新版输入系统 (Input System)。无需为刮擦添加碰撞体。

系统要求

 为了正常运行,「Scratch Card」需要以下条件:

  • Unity 2019.4 或更高版本;
  • 带有以下任一受支持组件的 GameObject: MeshRendererSpriteRendererImage
  • 作为刮擦表面的精灵 (Sprite)。
  • 如何升级?

     首先,请备份你的项目。
    然后通过 Package Manager 从 Unity 资产商店更新到最新版本(Windows -> Package Manager)。
    本资源附带 API 变更对比列表,打开文件 v.2.0_API_Changes.pdf 即可查看。
    另请参考此部分:从版本 1.x 升级到 2.x
    如果遇到任何问题或错误,请随时联系我,我很乐意提供帮助!

    快速开始

     从路径 Assets/ScratchCard/Prefabs/ScratchCard.prefab 将预制体添加到场景中。你也可以在层级窗口中右键点击或通过菜单添加:GameObject -> Scratch Card -> ...创建 Scratch Card


    设置 Main CameraSpriteScratchCardManager 设置
    就是这样,你的 Scratch Card 已准备就绪!

    ScratchCardManager

     「ScratchCard」预制体包含 ScratchCardManager 组件,该组件负责管理刮擦与擦除进度逻辑。下面是其参数介绍:

    ScratchCardManager
    • Scratch Card —— 引用 ScratchCard 组件;
    • Erase Progress —— 引用 EraseProgress 组件;
    • Main Camera —— 主相机引用,如果未指定,将自动使用 Camera.main
    • Render Type —— 刮擦表面的渲染类型,可选:MeshRenderer、SpriteRenderer、Image;
      • Mesh Card —— 引用 MeshRenderer 组件;
      • Sprite Card —— 引用 SpriteRenderer 组件;
      • Image Card —— 引用 Image 组件;
    • Sprite —— 用于刮擦的精灵;
    • Input Enabled —— 是否启用输入;
    • Use Pressure —— 是否启用压力感应输入(如 Apple Pencil 或支持压力的触控笔/触摸设备);
    • Check Canvas Raycasts —— 若有其他 UI 元素覆盖在上方,阻止刮擦操作;
    • Canvases For Raycasts Blocking —— 可用于阻止刮擦的 Canvas;
    • Brush Texture —— 刮擦使用的画笔纹理;
    • Brush Opacity —— 画笔不透明度;
    • Brush Size —— 画笔大小;
    • Scratch Mode —— 刮擦模式,可选择「擦除 (Erase)」或「还原 (Restore)」。在还原模式下,用户操作将恢复刮擦区域而非擦除。

     点击 Set Native Size 按钮可设置刮擦对象的原始大小。

    工作原理

    ScratchCardManager 管理 ScratchCardEraseProgress 组件。 ScratchCard 创建 RenderTexture 并根据用户输入进行绘制。 EraseProgress 通过计算 ScratchCard RenderTexture 的平均红色通道值,获取刮擦进度。

    动画

     从 2.0 版本开始,资源支持刮擦动画。刮擦动画是用于模拟刮擦操作的数据序列,可以手动创建或通过录制用户输入生成。
    刮擦动画保存在 ScriptableObject 中,包含位置、压力和时间信息。
    内置的刮擦动画位于路径:Assets/ScratchCard/ScratchAnimations/

    播放刮擦动画

     你可以使用内置动画或 创建新的动画
    要播放刮擦动画,请在带有 ScratchCardManager 的对象上添加 ScratchAnimator 组件,并在 Scratch Animation 字段中设置动画资源: Scratch Animator 组件
    ScratchAnimator 会在播放模式中自动播放刮擦动画。
    若不希望在开始时播放,可关闭 PlayOnStart,并通过代码进行控制。

    录制刮擦动画

     要创建新的刮擦动画,请使用 Unity 菜单:Assets -> Create -> Scratch Card -> Scratch Animation
    Scratch Animation
     刮擦动画可以通过在播放模式下重复用户操作录制,也可以手动创建。
    创建 Scratch Animation ScriptableObject 后, 在带有 ScratchCardManager 的对象上添加 ScratchAnimationRecorder 组件,并选择一个动画资源: Scratch Animation Recorder
     进入播放模式后,用户操作将被 ScratchAnimationRecorder 写入 Scratch Animation ScriptableObject

     你也可以使用手动方式创建动画,通过 Add Hole ScratchAdd Line Scratch 按钮添加数据:

    • Add Hole Scratch —— 添加单点刮擦数据,包括位置、画笔大小与时间;
    • Add Line Scratch —— 添加线条刮擦数据,包括起点和终点的坐标、画笔大小与时间。

    示例:

    Scratch Animation 示例 Scratch Animation 动画

    注意:若 Scratch Space 为 UV,请使用 0~1 的坐标;若为 Texture,请使用纹理像素坐标。

    API 帮助

    以下部分详细介绍「Scratch Card」核心组件的公共字段、属性与方法。

    联系方式

    如有任何问题、建议或创意,请随时联系我。
    如果你需要技术支持,请提供发票号。信息越详细,我能提供的帮助就越高效。
    邮箱:unitymedved@gmail.com