81 lines
3.1 KiB
Markdown
81 lines
3.1 KiB
Markdown
# SaleView 进入动画配置指南
|
||
|
||
## 一、层级结构说明
|
||
|
||
SaleView(SellView)下主要结构:
|
||
|
||
```
|
||
SellView
|
||
└── 步进模式
|
||
├── 轨道底座A ~ 轨道底座H (轨道底座组,共 8 个)
|
||
├── 内环
|
||
├── 外边框
|
||
├── 滑片c (滑片,需切换帧 a/b/c)
|
||
├── 电夹 (夹片,需 fadein)
|
||
└── 其他(发条、线圈等)
|
||
```
|
||
|
||
## 二、实现方式:AnimClip + Animator Controller
|
||
|
||
### 1. 创建 Animator 与脚本
|
||
|
||
1. 在 `步进模式` GameObject 上添加 `Animator` 组件(若无)
|
||
2. 添加 `SaleViewEnterAnimation` 脚本
|
||
3. 将步进模式设为默认**初始状态**(缩起、夹片透明等)
|
||
|
||
### 2. 创建 Animation Clip(SaleViewEnter.anim)
|
||
|
||
在 `Assets/Animation/HuoShan/` 下创建 `SaleViewEnter.anim`,绑定到 `步进模式`,添加如下曲线:
|
||
|
||
| 目标路径 | 属性 | 初始(0s) | 结束(0.6s) | 说明 |
|
||
|----------|------|----------|-------------|------|
|
||
| 轨道底座A ~ H | Transform.localScale | (0.3,0.3,1) | (1,1,1) | 轨道底座伸张 |
|
||
| 内环 | Transform.localScale | (0.5,0.5,1) | (1,1,1) | 内环放大 |
|
||
| 外边框 | Transform.localScale | (0.5,0.5,1) | (1,1,1) | 外边框放大 |
|
||
| 滑片c | SpriteRenderer.sprite | 滑片c 的 Sprite | 滑片a 的 Sprite | 帧切换 c→b→a |
|
||
| 电夹 | SpriteRenderer.color.a | 0 | 1 | 夹片淡入 |
|
||
|
||
**滑片帧动画**:在 0s 使用滑片c Sprite,0.3s 使用滑片b,0.6s 使用滑片a(若资源有 a、b、c 三帧)。
|
||
|
||
### 3. 创建 Animator Controller(SaleViewEnter.controller)
|
||
|
||
1. 创建 `SaleViewEnter.controller`
|
||
2. 添加 **Bool** 参数:`Enter`(或 **Trigger**:`Enter`)
|
||
3. 添加两个状态:
|
||
- **Idle**:默认状态,绑定一帧保持“缩起”的 clip(或空 clip)
|
||
- **Enter**:绑定 `SaleViewEnter.anim`
|
||
4. 默认状态设为 **Idle**
|
||
5. 添加 Transition:`Entry → Idle`,`Idle → Enter` 条件为 `Enter` Trigger,`Enter → Idle` 勾选 “Has Exit Time”
|
||
|
||
### 4. 挂接到 SalesManager
|
||
|
||
1. 将 `SaleViewEnter.controller` 赋给 `步进模式` 的 Animator
|
||
2. 在 `SaleViewEnterAnimation` 的 `animatorController` 中引用该 Controller(可选,脚本会使用 Animator 上已有的)
|
||
3. `SalesManager.OpenView()` 会自动调用 `SaleViewEnterAnimation.PlayEnterAnimation()`
|
||
|
||
## 三、轨道底座组的两种做法
|
||
|
||
**方式 A:分别动画 8 个轨道底座**
|
||
|
||
每个 `轨道底座A` ~ `轨道底座H` 各做一条 `localScale` 曲线,从 (0.3,0.3,1) 到 (1,1,1)。
|
||
|
||
**方式 B:建父节点统一缩放**
|
||
|
||
1. 创建空 GameObject `轨道底座组`
|
||
2. 将 轨道底座A~H 拖为其子对象
|
||
3. 只对 `轨道底座组` 做 `localScale` 动画
|
||
|
||
## 四、夹片(电夹)淡入
|
||
|
||
- 使用 `SpriteRenderer.color` 的 alpha 通道
|
||
- 0s:alpha=0(透明)
|
||
- 0.6s:alpha=1(不透明)
|
||
|
||
若夹片有多个(如电阻圈、线圈等),可分别做 alpha 曲线。
|
||
|
||
## 五、默认保持初始状态
|
||
|
||
- Animator 默认进入 **Idle** 状态
|
||
- `SaleViewEnterAnimation.OnEnable()` 会执行 `Rebind()`,确保每次显示时从缩起状态开始
|
||
- 进入销售系统时调用 `PlayEnterAnimation()` 播放进入动画
|