refactor(enemy): Appear/FacePlayer/PlayClip 参数迁入各自子类 SO
This commit is contained in:
@@ -10,15 +10,21 @@ namespace BaseGames.Enemies.Abilities
|
||||
/// </summary>
|
||||
public class AppearAbility : EnemyAbilityBase
|
||||
{
|
||||
[SerializeField] private ClipTransition _appearClip;
|
||||
private AppearAbilitySO _cfg;
|
||||
|
||||
protected override void Awake()
|
||||
{
|
||||
base.Awake();
|
||||
_cfg = ResolveConfig<AppearAbilitySO>();
|
||||
}
|
||||
|
||||
protected override IEnumerator ExecuteCoroutine()
|
||||
{
|
||||
Phase = AbilityRunState.Active;
|
||||
if (_appearClip.Clip == null) yield break;
|
||||
if (_cfg == null || _cfg.appearClip.Clip == null) yield break;
|
||||
|
||||
_animancer.Play(_appearClip);
|
||||
yield return EnemyAbilityWaits.Get(_appearClip.Clip.length);
|
||||
_animancer.Play(_cfg.appearClip);
|
||||
yield return EnemyAbilityWaits.Get(_cfg.appearClip.Clip.length);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
using Animancer;
|
||||
using UnityEngine;
|
||||
|
||||
namespace BaseGames.Enemies.Abilities
|
||||
{
|
||||
/// <summary>AppearAbility 的配置:出场动画。</summary>
|
||||
[CreateAssetMenu(menuName = "BaseGames/Enemies/Abilities/Appear Ability", fileName = "ABL_")]
|
||||
public class AppearAbilitySO : EnemyAbilitySO
|
||||
{
|
||||
public ClipTransition appearClip;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 73e9c01905c405d4ea9e4c04ca7886fa
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,12 @@
|
||||
using Animancer;
|
||||
using UnityEngine;
|
||||
|
||||
namespace BaseGames.Enemies.Abilities
|
||||
{
|
||||
/// <summary>FacePlayerAbility 的配置:转身/翻转动画。</summary>
|
||||
[CreateAssetMenu(menuName = "BaseGames/Enemies/Abilities/Face Player Ability", fileName = "ABL_")]
|
||||
public class FacePlayerAbilitySO : EnemyAbilitySO
|
||||
{
|
||||
public ClipTransition faceClip;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cb259f910bbefb342b91080d8a091cea
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,12 @@
|
||||
using Animancer;
|
||||
using UnityEngine;
|
||||
|
||||
namespace BaseGames.Enemies.Abilities
|
||||
{
|
||||
/// <summary>PlayClipAbility 的配置:待播放的单个动画 Clip。</summary>
|
||||
[CreateAssetMenu(menuName = "BaseGames/Enemies/Abilities/Play Clip Ability", fileName = "ABL_")]
|
||||
public class PlayClipAbilitySO : EnemyAbilitySO
|
||||
{
|
||||
public ClipTransition clip;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fc81345eb5294d643b4242eac215c5fc
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -12,7 +12,13 @@ namespace BaseGames.Enemies.Abilities
|
||||
/// </summary>
|
||||
public class FacePlayerAbility : EnemyAbilityBase
|
||||
{
|
||||
[SerializeField] private ClipTransition _faceClip;
|
||||
private FacePlayerAbilitySO _cfg;
|
||||
|
||||
protected override void Awake()
|
||||
{
|
||||
base.Awake();
|
||||
_cfg = ResolveConfig<FacePlayerAbilitySO>();
|
||||
}
|
||||
|
||||
public override bool CanUse =>
|
||||
base.CanUse
|
||||
@@ -33,10 +39,10 @@ namespace BaseGames.Enemies.Abilities
|
||||
|
||||
_enemy.FacePlayer();
|
||||
|
||||
if (_faceClip.Clip == null) yield break;
|
||||
if (_cfg == null || _cfg.faceClip.Clip == null) yield break;
|
||||
|
||||
_animancer.Play(_faceClip);
|
||||
yield return EnemyAbilityWaits.Get(_faceClip.Clip.length);
|
||||
_animancer.Play(_cfg.faceClip);
|
||||
yield return EnemyAbilityWaits.Get(_cfg.faceClip.Clip.length);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,15 +10,21 @@ namespace BaseGames.Enemies.Abilities
|
||||
/// </summary>
|
||||
public class PlayClipAbility : EnemyAbilityBase
|
||||
{
|
||||
[SerializeField] private ClipTransition _clip;
|
||||
private PlayClipAbilitySO _cfg;
|
||||
|
||||
protected override void Awake()
|
||||
{
|
||||
base.Awake();
|
||||
_cfg = ResolveConfig<PlayClipAbilitySO>();
|
||||
}
|
||||
|
||||
protected override IEnumerator ExecuteCoroutine()
|
||||
{
|
||||
Phase = AbilityRunState.Active;
|
||||
if (_clip.Clip == null) yield break;
|
||||
if (_cfg == null || _cfg.clip.Clip == null) yield break;
|
||||
|
||||
_animancer.Play(_clip);
|
||||
yield return EnemyAbilityWaits.Get(_clip.Clip.length);
|
||||
_animancer.Play(_cfg.clip);
|
||||
yield return EnemyAbilityWaits.Get(_cfg.clip.Clip.length);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user