diff --git a/Assets/Scripts/MiniGame/HuoShan/SalesSystem/SaleViewEnterAnimation.cs b/Assets/Scripts/MiniGame/HuoShan/SalesSystem/SaleViewEnterAnimation.cs
new file mode 100644
index 000000000..2c0f24ff5
--- /dev/null
+++ b/Assets/Scripts/MiniGame/HuoShan/SalesSystem/SaleViewEnterAnimation.cs
@@ -0,0 +1,60 @@
+using UnityEngine;
+
+namespace AibisDream.MiniGame.HuoShan
+{
+ ///
+ /// SaleView 进入动画控制器
+ /// 负责在进入销售系统时播放进入动画,包括:
+ /// 1. 轨道底座组伸张
+ /// 2. 内环和外边框放大
+ /// 3. 滑片从缩着变为伸出(帧动画 c→b→a)
+ /// 4. 夹片淡入
+ /// 默认保持初始(缩起)状态,进入时播放。
+ ///
+ [RequireComponent(typeof(Animator))]
+ public class SaleViewEnterAnimation : MonoBehaviour
+ {
+ private const string AnimParamTriggerEnter = "Enter";
+
+ [Header("Animator 配置")]
+ [Tooltip("Animator Controller(带 Idle/Enter 两个状态)")]
+ [SerializeField] private RuntimeAnimatorController animatorController;
+
+ private Animator _animator;
+ private int _triggerEnterId;
+
+ private void Awake()
+ {
+ _animator = GetComponent();
+ if (animatorController != null)
+ _animator.runtimeAnimatorController = animatorController;
+ _triggerEnterId = Animator.StringToHash(AnimParamTriggerEnter);
+ }
+
+ private void OnEnable()
+ {
+ // 确保初始状态为 Idle(缩起)
+ _animator.Rebind();
+ _animator.Update(0f);
+ }
+
+ ///
+ /// 播放进入动画(进入销售系统时调用)
+ ///
+ public void PlayEnterAnimation()
+ {
+ if (_animator == null || !_animator.enabled) return;
+ _animator.SetTrigger(_triggerEnterId);
+ }
+
+ ///
+ /// 重置到初始状态(可用于关闭时重置)
+ ///
+ public void ResetToIdle()
+ {
+ if (_animator == null) return;
+ _animator.Rebind();
+ _animator.Update(0f);
+ }
+ }
+}
diff --git a/Assets/Scripts/MiniGame/HuoShan/SalesSystem/SaleViewEnterAnimation.cs.meta b/Assets/Scripts/MiniGame/HuoShan/SalesSystem/SaleViewEnterAnimation.cs.meta
new file mode 100644
index 000000000..05bfc1e2b
--- /dev/null
+++ b/Assets/Scripts/MiniGame/HuoShan/SalesSystem/SaleViewEnterAnimation.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7a2b3c4d5e6f7890abcdef1234567890
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant: