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 關注
- 150 瀏覽
添加回答
舉報