refactor(enemy): Appear/FacePlayer/PlayClip 参数迁入各自子类 SO
This commit is contained in:
@@ -10,15 +10,21 @@ namespace BaseGames.Enemies.Abilities
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class AppearAbility : EnemyAbilityBase
|
public class AppearAbility : EnemyAbilityBase
|
||||||
{
|
{
|
||||||
[SerializeField] private ClipTransition _appearClip;
|
private AppearAbilitySO _cfg;
|
||||||
|
|
||||||
|
protected override void Awake()
|
||||||
|
{
|
||||||
|
base.Awake();
|
||||||
|
_cfg = ResolveConfig<AppearAbilitySO>();
|
||||||
|
}
|
||||||
|
|
||||||
protected override IEnumerator ExecuteCoroutine()
|
protected override IEnumerator ExecuteCoroutine()
|
||||||
{
|
{
|
||||||
Phase = AbilityRunState.Active;
|
Phase = AbilityRunState.Active;
|
||||||
if (_appearClip.Clip == null) yield break;
|
if (_cfg == null || _cfg.appearClip.Clip == null) yield break;
|
||||||
|
|
||||||
_animancer.Play(_appearClip);
|
_animancer.Play(_cfg.appearClip);
|
||||||
yield return EnemyAbilityWaits.Get(_appearClip.Clip.length);
|
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>
|
/// </summary>
|
||||||
public class FacePlayerAbility : EnemyAbilityBase
|
public class FacePlayerAbility : EnemyAbilityBase
|
||||||
{
|
{
|
||||||
[SerializeField] private ClipTransition _faceClip;
|
private FacePlayerAbilitySO _cfg;
|
||||||
|
|
||||||
|
protected override void Awake()
|
||||||
|
{
|
||||||
|
base.Awake();
|
||||||
|
_cfg = ResolveConfig<FacePlayerAbilitySO>();
|
||||||
|
}
|
||||||
|
|
||||||
public override bool CanUse =>
|
public override bool CanUse =>
|
||||||
base.CanUse
|
base.CanUse
|
||||||
@@ -33,10 +39,10 @@ namespace BaseGames.Enemies.Abilities
|
|||||||
|
|
||||||
_enemy.FacePlayer();
|
_enemy.FacePlayer();
|
||||||
|
|
||||||
if (_faceClip.Clip == null) yield break;
|
if (_cfg == null || _cfg.faceClip.Clip == null) yield break;
|
||||||
|
|
||||||
_animancer.Play(_faceClip);
|
_animancer.Play(_cfg.faceClip);
|
||||||
yield return EnemyAbilityWaits.Get(_faceClip.Clip.length);
|
yield return EnemyAbilityWaits.Get(_cfg.faceClip.Clip.length);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,15 +10,21 @@ namespace BaseGames.Enemies.Abilities
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class PlayClipAbility : EnemyAbilityBase
|
public class PlayClipAbility : EnemyAbilityBase
|
||||||
{
|
{
|
||||||
[SerializeField] private ClipTransition _clip;
|
private PlayClipAbilitySO _cfg;
|
||||||
|
|
||||||
|
protected override void Awake()
|
||||||
|
{
|
||||||
|
base.Awake();
|
||||||
|
_cfg = ResolveConfig<PlayClipAbilitySO>();
|
||||||
|
}
|
||||||
|
|
||||||
protected override IEnumerator ExecuteCoroutine()
|
protected override IEnumerator ExecuteCoroutine()
|
||||||
{
|
{
|
||||||
Phase = AbilityRunState.Active;
|
Phase = AbilityRunState.Active;
|
||||||
if (_clip.Clip == null) yield break;
|
if (_cfg == null || _cfg.clip.Clip == null) yield break;
|
||||||
|
|
||||||
_animancer.Play(_clip);
|
_animancer.Play(_cfg.clip);
|
||||||
yield return EnemyAbilityWaits.Get(_clip.Clip.length);
|
yield return EnemyAbilityWaits.Get(_cfg.clip.Clip.length);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user