using UnityEngine; namespace CustomComponent { public abstract class StoryDirectiveAsset : ScriptableObject { [SerializeField] private bool _enabled = true; [SerializeField] private StoryTriggerType _triggerType = StoryTriggerType.DialogCompleted; [SerializeField] [Tooltip("触发来源 Id;<=0 表示该触发类型下的任意 Id。")] private int _triggerId = 0; public bool IsEnabled => _enabled; public StoryTriggerType TriggerType => _triggerType; public int TriggerId => _triggerId; public virtual string ActionName => GetType().Name; public virtual bool RequiresCompletion => false; public bool IsMatch(StoryTriggerType triggerType, int triggerId) { if (!_enabled || _triggerType != triggerType) { return false; } if (_triggerId > 0 && _triggerId != triggerId) { return false; } return true; } public abstract void Execute(StoryDirectorComponent director); } }