跳转至

最佳实践

以下是一些有助于配置与使用 2D/3D Paint 的建议。

性能优化

如果你的应用遇到性能问题,可以尝试以下方法进行改进:

  1. Brush Duplicate Part:当使用 SpriteRendererRawImage 组件时,用于定义渲染笔刷采样的频率。该值会影响顶点数量以及线条的密度。值越大,绘制的笔刷采样越少,线条细节与密度会降低;值越小,顶点越多,线条更密集。为减少渲染顶点数量,可将该值设置为 24、32 或更高:

    Image title

  2. Raycast Interval:用于定义执行射线检测的频率。值越大,射线检测次数越少,采样密度可能降低;值越小,检测更频繁,线条更密集。若要减少射线检测次数,请提高该值:

    Image title

  3. Smoothing:工具的平滑参数可为 SpriteRenderer 与 RawImage 组件绘制更顺滑的线条。范围为 1 到 10:1 表示关闭平滑,10 为最大平滑。Smoothing 大于 1 时,会渲染更多的笔刷采样,并且绘制可能出现约 2 帧的延迟。要提升性能,可将 Smoothing 降到 2–4,或设置为 1 彻底关闭:

    Image title

  4. Undo/Redo System:可以禁用撤销/重做系统来提升性能:

    Image title

在 World Space 中绘制

在 World Space 中绘制会使用模型法线来避免在网格背面绘制。如果你的模型没有法线,可以在 Unity 的模型导入设置中选择 Calculate 来生成:

Image title

另外,如果你不想依赖网格法线,也可以在 PaintManager 组件中降低 Normal Cutout 值:

Image title

用点而不是线来绘制

如果希望用“点”而不是“线”来绘制,请在 PaintManager 组件中关闭 Can Paint Lines

Image title

关闭笔刷圆角

若要关闭笔刷的圆形边缘效果,将笔刷的 Hardness 参数设为 1。

在带透明区域的 Sprite 上绘制

要在包含透明区域的 Sprite 上绘制,请使用带有 XD Paint/Alpha Mask 着色器的材质,并将纹理分别设置为 Main TextureMask Texture

Image title

然后将 Shader Texture Name 设为 _MainTex

Image title

使用碰撞体进行绘制

若要通过碰撞体实现绘制,请按以下步骤操作:

  1. 在带有 Rigidbody 组件的 GameObject 上添加 ColliderPainter 组件。该设置会基于碰撞事件触发绘制。
  2. ColliderPainter 组件提供以下关键参数:
    • Color - 定义碰撞绘制时使用的颜色。
    • Pressure - 调整绘制时施加的压力(会影响笔刷大小)。
    • FingerId - 指定用于碰撞绘制的手指索引(对多点触控场景有用)。

这样配置后,当物体之间发生碰撞时就会触发绘制动作。

Image title

SkinnedMeshRenderer 建议

如果你使用 Skinned Mesh 进行绘制,建议使用默认 Transform:根动画与网格对象的位置为 0:0:0,旋转为 0:0:0,缩放为 1:1:1:

Image title
Image title

像素风(Pixel Art)

如果要处理像素风图形,请在 PaintController 与 PaintManager 组件中将 Filter Mode 设为 Point,并在 Settings 中将 BrushDuplicatePartWidth 设为 1:

Image title