3 回答
TA贡献1890条经验 获得超9个赞
在您想要实现的目标中,您希望避免静态字段。您应该能够使用以下内容:
player.projectile = new Projectile();
player.projectile.DamageOnHit = 5;
enemy.projectile = new Projectile();
enemy.projectile.DamageOnHit = 1;
希望这可以帮助
TA贡献1845条经验 获得超8个赞
这是一个更好的解决方案,但它确实意味着您总共需要 3 个类。1 个基类保存标准射弹逻辑,另外 2 个类用于继承射弹基类,用于玩家和敌方射弹。
还有一种不同的方法可以做到这一点。您可以在弹丸类中创建一个名为 ProjectileType 的枚举,如下所示:
public Enum ProjectileType { PlayerProjectile, EnemyProjectile }
每当您创建/实例化射弹时,将此 ProjectileType 分配给projectileType 变量,如下所示:
private projectileType;
public Projectile(ProjectileType projectileType)
{
this.projectileType = projectileType;
}
现在,每当您升级射弹时,您都可以检查射弹是否属于玩家类型,如下所示:
if(projectileType == ProjectileType.PlayerProjectile)
{
// Upgrade logic.
}
TA贡献1844条经验 获得超8个赞
我不确定这是否是最好的解决方案,因为这完全取决于您的游戏逻辑,但您可以创建两类射弹,一类用于敌人,一类用于玩家。这两个类都可以继承自您的 Projectile 类。
public class PlayerProjectil : Projectile {...} public class AIProjectil : Projectile {...}
将 Projectile 类函数设为虚拟。当您需要不同的行为时,可以在 PlayerProjectil 和 AIProjectil 中覆盖它们。
- 3 回答
- 0 关注
- 111 浏览
添加回答
举报