chore: initial commit

This commit is contained in:
2026-05-08 11:04:00 +08:00
commit f55d2a57c3
6278 changed files with 866081 additions and 0 deletions

View File

@@ -0,0 +1,52 @@
using UnityEngine;
namespace BaseGames.Combat
{
/// <summary>
/// 攻击数据源 SO。描述单次攻击的基础伤害参数。
/// ⚡ 热路径使用零分配工厂DamageInfo.From(sourceSO)。
/// 仅需链式覆盖多字段时才使用 CreateBuilder()。
/// </summary>
[CreateAssetMenu(menuName = "Combat/DamageSource")]
public class DamageSourceSO : ScriptableObject
{
[Header("Identity")]
public string sourceId;
public string skillId;
[Header("Base")]
public int BaseDamage = 10;
public float DamageMultiplier = 1.0f;
public DamageType Type = DamageType.Normal;
public DamageCategory Category = DamageCategory.NormalAttack;
public DamageFlags Flags = DamageFlags.CanBeParried;
public DamageTags Tags = DamageTags.MeleeHit;
[Header("Physics")]
public float KnockbackForce = 5f;
public float HitStunDuration = 0.1f;
public BreakLevel BreakLevel = BreakLevel.Light;
[Header("FX")]
public HitFxType FxType = HitFxType.Slash;
[Header("Combo")]
public float ComboWindowDuration = 0.4f;
public float CancelWindowEnd = 0.5f;
/// <summary>
/// 链式 Builder特殊场景使用热路径改用 DamageInfo.From(this))。
/// </summary>
public DamageInfo.Builder CreateBuilder() => new DamageInfo.Builder()
.SetRaw(Mathf.RoundToInt(BaseDamage * DamageMultiplier))
.SetType(Type)
.SetCategory(Category)
.SetFlags(Flags)
.SetTags(Tags)
.SetStun(HitStunDuration)
.SetFx(FxType)
.SetBreak(BreakLevel)
.SetSourceId(sourceId)
.SetSkillId(skillId);
}
}