- 调整项目结构以适应打包需求

- 添加控制台便于在游戏运行过程中调试各项功能
- 添加 LevelRarity 表,增加了随关卡数动态调整的商品道具品质刷新概率
This commit is contained in:
SepComet
2026-02-18 22:53:33 +08:00
parent e151619c69
commit b4bc8b0445
202 changed files with 5160 additions and 3393 deletions
@@ -16,11 +16,12 @@ namespace Entity.EntityData
[SerializeField] private float _dropPercent = 0;
public EnemyData(int entityId, int typeId) : base(
public EnemyData(int entityId, int typeId, int level) : base(
entityId, typeId, CampType.Enemy)
{
DREnemy enemyRow = GameEntry.DataTable.GetDataTableRow<DREnemy>(typeId);
MaxHealthBase = enemyRow.MaxHealth;
int effectiveLevel = Mathf.Max(1, level);
MaxHealthBase = enemyRow.MaxHealth + enemyRow.HpAddPerLevel * (effectiveLevel - 1);
SpeedBase = enemyRow.Speed;
DropCoin = enemyRow.DropCoin;
DropExp = enemyRow.DropExp;
@@ -53,4 +54,4 @@ namespace Entity.EntityData
set => _dropPercent = value;
}
}
}
}
@@ -7,10 +7,12 @@ namespace Entity
public class CoinEntity : EntityBase
{
private CoinData _coinData;
private bool _isCollected;
protected override void OnShow(object userData)
{
base.OnShow(userData);
_isCollected = false;
if (userData is CoinData coinData)
{
@@ -24,14 +26,25 @@ namespace Entity
this.CachedTransform.localScale = new Vector3(0.3f, 0.3f, 0.3f);
}
public bool TryCollect(Player player, float collectDistance = 0f)
{
if (_isCollected || player == null || !player.Available || _coinData == null) return false;
if (collectDistance > 0f)
{
float distance = Vector3.Distance(player.CachedTransform.position, CachedTransform.position);
if (distance > collectDistance) return false;
}
_isCollected = true;
player.Coin += _coinData.Value;
GameEntry.Entity.HideEntity(this);
return true;
}
private void OnTriggerEnter(Collider other)
{
var player = other.GetComponent<Player>();
if (player != null && player.Available)
{
player.Coin += _coinData.Value;
GameEntry.Entity.HideEntity(this);
}
TryCollect(other.GetComponent<Player>());
}
}
}
}
@@ -7,10 +7,12 @@ namespace Entity
public class ExpEntity:EntityBase
{
private ExpData _expData;
private bool _isCollected;
protected override void OnShow(object userData)
{
base.OnShow(userData);
_isCollected = false;
if (userData is ExpData expData)
{
@@ -23,14 +25,25 @@ namespace Entity
this.CachedTransform.localScale = new Vector3(0.3f, 0.3f, 0.3f);
}
public bool TryCollect(Player player, float collectDistance = 0f)
{
if (_isCollected || player == null || !player.Available || _expData == null) return false;
if (collectDistance > 0f)
{
float distance = Vector3.Distance(player.CachedTransform.position, CachedTransform.position);
if (distance > collectDistance) return false;
}
_isCollected = true;
player.Exp += _expData.Value;
GameEntry.Entity.HideEntity(this);
return true;
}
private void OnTriggerEnter(Collider other)
{
var player = other.GetComponent<Player>();
if (player != null && player.Available)
{
player.Exp += _expData.Value;
GameEntry.Entity.HideEntity(this);
}
TryCollect(other.GetComponent<Player>());
}
}
}
}
@@ -15,6 +15,7 @@ namespace Entity
private InputComponent _inputComponent;
private MovementComponent _movementComponent;
private AbsorbComponent _absorbComponent;
private StatComponent _statComponent;
private BackpackComponent _backpackComponent;
private PlayerData _playerData;
@@ -44,6 +45,7 @@ namespace Entity
/// 玩家是否启用。
/// </summary>
private bool _enable;
private bool _weaponEnabled = true;
public int Coin
{
@@ -95,11 +97,19 @@ namespace Entity
if (value == _enable) return;
_enable = value;
_movementComponent.SetMove(value);
_backpackComponent.SetWeaponState(value);
_backpackComponent.SetWeaponState(value && _weaponEnabled);
_inputComponent.SetListening(value);
}
}
public bool WeaponEnabled => _weaponEnabled;
public void SetWeaponEnabled(bool enabled)
{
_weaponEnabled = enabled;
_backpackComponent?.SetWeaponState(_enable && _weaponEnabled);
}
public void InitRole(DRRole role)
{
// MovementComponent
@@ -146,9 +156,15 @@ namespace Entity
_inputComponent = GetComponent<InputComponent>();
_movementComponent = GetComponent<MovementComponent>();
_absorbComponent = GetComponent<AbsorbComponent>();
_statComponent = GetComponent<StatComponent>();
_healthComponent = GetComponent<HealthComponent>();
_backpackComponent = GetComponent<BackpackComponent>();
if (_absorbComponent == null)
{
_absorbComponent = gameObject.AddComponent<AbsorbComponent>();
}
}
protected override void OnShow(object userData)
@@ -166,6 +182,8 @@ namespace Entity
_inputComponent.OnInit();
_inputComponent.SetListening(true);
_absorbComponent.OnInit(this, _statComponent);
_weaponEnabled = true;
_currentLevel = 0;
}
@@ -178,6 +196,7 @@ namespace Entity
_movementComponent.SetDirection(_inputComponent.Direction);
_movementComponent.OnUpdate(elapseSeconds, realElapseSeconds);
_absorbComponent.OnUpdate(elapseSeconds, realElapseSeconds);
}
protected override void OnHide(bool isShutdown, object userData)
@@ -187,6 +206,7 @@ namespace Entity
_healthComponent.OnReset();
_statComponent.OnReset();
_backpackComponent.OnReset();
_absorbComponent.OnReset();
base.OnHide(isShutdown, userData);
}
@@ -206,4 +226,4 @@ namespace Entity
#endregion
}
}
}
@@ -24,15 +24,15 @@ namespace Entity
public abstract class WeaponBase : EntityBase
{
protected const string AttachPoint = "Weapon Point";
protected bool _isAttacking = false;
protected bool _isEnabled = false;
[SerializeField] protected bool _isEnabled = false;
public WeaponData WeaponData;
public bool IsAttacking => _isAttacking;
protected WeaponStateBase _currentState;
#region FSM