mcpField
U
unity-dotween-design

unity-dotween-design

github.com/besty0728开发1.9k72 次安装今天更新
代码仓库

关于 unity-dotween-design

unity-dotween-design 是用于编写和审查 DOTween 代码的参考模块,规则基于 DOTween 1.3.015 源码。规则标注源码位置,涵盖补间生命周期、序列、快捷方法、安全模式和集成。

主要功能

  1. 01附源码位置的 DOTween 设计规则
  2. 02补间生命周期与序列指导
  3. 03快捷方法和缓动参考
  4. 04安全模式与生命周期指导
  5. 05指向细分设计参考

适用场景

  1. 01审查 DOTween 初始化和设置代码
  2. 02检查序列组合与补间生命周期
  3. 03排查安全模式或目标对象生命周期问题
  4. 04查询快捷方法和缓动行为

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/besty0728/unity-skills --skill unity-dotween-design

安装后在 Claude Code 中输入/unity-dotween-design确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

BASICS.md
EASE.md
INTEGRATION.md
LIFETIME.md
PITFALLS.md
SEQUENCE.md
SHORTCUTS.md
TWEEN.md

详细介绍

在调用此模块中的任何技能之前: 如果你准备根据技能名称或描述猜测参数后调用该技能,请停下——先阅读此文件(或通过 GET /skills/recommend?includeSchema=true 获取其 schema)。如果你已经从 recommend/schema 中获得参数定义,可以直接进行 dryRun。

触发条件

  • 编写或审查 DOTween 代码
  • 构建序列动画
  • 绑定补间生命周期
  • 调试补间陷阱
  • 编写或审查 DOTween 代码、构建序列动画、绑定补间生命周期、排查补间陷阱

DOTween - 设计规则

指导性模块。每条规则均摘自 Demigiant DOTween 源码,位于:

  • 1.3.015 — 随附于 _DOTween.Assembly/DOTween/ 和 bin/Modules/ 模块文件中(Unity 2018+)

每条规则都标注了具体的文件和行号,以便审核推理过程,并避免 AI 根据过时记忆自行发挥。

模式:仅文档——无 REST 技能需要设门槛;在任何运行模式(Approval / Auto / Bypass)下均可自由加载。

何时加载此模块

在编写或审查以下任何内容之前加载:

  • DOTween.Init(...) 引导代码、DOTweenSettings 配置、SetTweensCapacity 调整
  • 任何 .DOMove / .DORotate / .DOScale / .DOColor / .DOFade / .DOShake* / .DOPath / .DOPunch* 快捷调用
  • DOTween.Sequence() + .Append / .Join / .Insert / .Prepend / .AppendInterval / .PrependInterval / .AppendCallback
  • .SetEase / .SetDelay / .SetLoops / .SetAutoKill / .SetLink / .SetId / .SetTarget / .SetUpdate / .SetRelative / .SetRecyclable / .SetSpeedBased
  • .OnStart / .OnUpdate / .OnStepComplete / .OnComplete / .OnKill / .OnPlay / .OnPause / .OnRewind
  • .AsyncWaitForCompletion / .AsyncWaitForKill / .AsyncWaitForRewind / .AsyncWaitForElapsedLoops / .AsyncWaitForPosition
  • tween.ToUniTask(TweenCancelBehaviour, CancellationToken)(UniTask 桥接)
  • DOTween.Kill(target, complete) / DOTween.KillAll() 批量操作
  • 安全模式调试——useSafeMode、safeModeLogBehaviour、nestedTweenFailureBehaviour
  • DOTween 模块生成(Audio / Physics / Physics2D / Sprite / UI / UnityUI / TextMeshPro)

关键规则摘要

#规则来源锚点
1DOTween.Init(recycleAllByDefault, useSafeMode, logBehaviour) 返回 IDOTweenInit,可用于流畅调用 .SetCapacity(...)。如果未显式调用,首次创建补间时会运行自动初始化(DOTween.cs:236 中的 AutoInit)。DOTween.Version = "1.3.015" 以 const 形式公开。DOTween.cs:38,227,236,243
2每个补间都由单个标记为 DontDestroyOnLoad 的 [DOTween] GameObject MonoBehaviour(DOTweenComponent)驱动。它会在首次初始化时创建,并在场景加载后继续存在。不要销毁它——DOTween.Clear(destroy: true) 是唯一受支持的拆除方式。DOTweenComponent.cs:268-270, DOTween.cs:311
3默认 autoKill = true:补间完成时会被销毁。销毁后,.Restart() / .Kill() / .Complete() 等调用将不执行任何操作(安全模式开启时),或引发 NullReferenceException(安全模式关闭时)。使用 .SetAutoKill(false) 可保留补间以便重播。DOTween.cs useSafeMode:49, TweenSettingsExtensions.cs:39,49
4默认开启安全模式(useSafeMode = true)。补间播放期间目标被销毁 → 安全模式会捕获异常,并根据 safeModeLogBehaviour 记录日志(默认值:Warning)。开发期间可关闭安全模式,以查找缺失链接问题。DOTween.cs:49,51
5SetLink(gameObject, LinkBehaviour) 会将补间生命周期绑定到 GameObject。默认值为 LinkBehaviour.KillOnDestroy。如果不使用 SetLink,目标销毁后补间仍会继续运行,并依赖安全模式提供保护。TweenSettingsExtensions.cs:91,103, LinkBehaviour.cs
6SetTarget(object target) 是使用 DOTween.Kill(target) / DOTween.KillAll(target) 对补间分组的必要条件。快捷扩展(.DOMove、.DOFade 等)会自动设置目标;手动调用 DOTween.To(...) 则不会。TweenSettingsExtensions.cs:116, DOTween.cs:884,892
7Sequence.Append(t) 会在前一个补间之后运行。Sequence.Join(t) 会与前一个补间并行运行。Sequence.Insert(float atPosition, t) 会在绝对时间位置插入。Sequence.Prepend(t) 会将补间推到最前面,并使现有内容后移。TweenSettingsExtensions.cs:499,508,517,528
8AsyncWaitForCompletion / AsyncWaitForKill / AsyncWaitForRewind 位于 DOTweenModuleUnityVersion.cs(MODULE 文件,受 `UNITY_2018_1_OR_NEWER && (NET_4_6
9UniTask 桥接方法 tween.ToUniTask(TweenCancelBehaviour, CancellationToken) 位于 UniTask 的 External/DOTween/ 扩展中,是比 AsyncWaitForCompletion 更推荐的等待方式。TweenCancelBehaviour 有 9 个值(Kill / Complete / CancelAwait / KillAndCancelAwait / ...)。UniTask DOTweenAsyncExtensions.cs:14-27,54
10Ease 枚举有 38 个条目(36 个面向用户的条目 + 2 个保留的 INTERNAL_*):Unset / Linear + Sine/Quad/Cubic/Quart/Quint/Expo/Circ/Elastic/Back/Bounce 的 In/Out/InOut 变体(10 × 3 = 30 个数学缓动)+ Flash / InFlash / OutFlash / InOutFlash。DOTween 会为零时长补间和基于 AnimationCurve 的补间自动分配 INTERNAL_Zero 和 INTERNAL_Custom。Ease.cs:9-53

子文档路由

子文档何时阅读
BASICS.mdDOTween.Init、驱动器 GameObject、DOTweenSettings 资源、模块架构、安全模式、补间容量
TWEEN.mdTween 基类、Tweener 与 Sequence、autoKill、Play/Pause/Rewind/Restart/Kill/Complete/Goto 生命周期
SEQUENCE.mdSequence.Append / Join / Insert / Prepend / AppendInterval / PrependInterval / AppendCallback / InsertCallback、嵌套、循环组合
SHORTCUTS.md按目标类型分类的 .DOMove / DOLocalMove / DOAnchorPos / DORotate / DOScale / DOColor / DOFade / DOPath / DOJump / DOPunch / DOShake* 速查表
EASE.md完整的 Ease 枚举、SetEase 重载(Ease / 振幅+周期 / AnimationCurve / EaseFunction)、Flash 系列、Elastic/Back 超调
LIFETIME.mdSetAutoKill / SetLink / SetRecyclable / SetId / SetTarget / DOTween.Kill / DOTween.KillAll、安全模式、补间池容量
INTEGRATION.mdDOTween + UniTask(ToUniTask)、DOTween + Coroutine(WaitForCompletion)、DOTween + Addressables 生命周期、DOTween + Netcode 确定性回放
PITFALLS.md30 个具体的幻觉 / 运行时陷阱(目标缺失、补间句柄过期、无限循环时 OnComplete 不触发、安全模式掩盖错误等)

路由到其他模块

  • 异步集成(ToUniTask、AsyncWaitForCompletion)→ 加载 unitask-design 和 async
  • UI 动画(uGUI / UIToolkit)在 DOTween 与原生动画器之间的选择 → 加载 inspector
  • 以补间为主的场景的架构 / 性能审查 → 加载 performance
  • DOTween 使用方的 Asmdef 布局(DOTween.asmdef、DOTween Modules asmdef)→ 加载 asmdef
  • Addressables 加载的预制体补间生命周期(资源包卸载与补间仍在运行)→ 加载 addressables-design

版本范围

目标版本为 DOTween 1.3.015(打包在 _DOTween.Assembly/ 中的 Pro/Free 源码)。版本通过 DOTween.cs:38 处的常量 DOTween.Version = "1.3.015" 暴露。

较早的 1.2.x 版本对大多数 API 都保持源码兼容。主要差异:

  • 模块系统(UI / TMP / Physics 等)需要 1.2.0 之后的源码和 Utility Panel 扫描器。
  • SetLink 在 1.2.x 系列中加入;LinkBehaviour.KillOnDestroy 与 KillOnDisable 变体出现在之后的 1.2/1.3 版本中。
  • TweenCancelBehaviour(UniTask 桥接)通过 UniTask 包单独发布。

如有疑问,请阅读引用的源码,而非依赖记忆。

评论

支持 Markdown