3 回答

TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊
在您想要實(shí)現(xiàn)的目標(biāo)中,您希望避免靜態(tài)字段。您應(yīng)該能夠使用以下內(nèi)容:
player.projectile = new Projectile();
player.projectile.DamageOnHit = 5;
enemy.projectile = new Projectile();
enemy.projectile.DamageOnHit = 1;
希望這可以幫助

TA貢獻(xiàn)1845條經(jīng)驗(yàn) 獲得超8個(gè)贊
這是一個(gè)更好的解決方案,但它確實(shí)意味著您總共需要 3 個(gè)類(lèi)。1 個(gè)基類(lèi)保存標(biāo)準(zhǔn)射彈邏輯,另外 2 個(gè)類(lèi)用于繼承射彈基類(lèi),用于玩家和敵方射彈。
還有一種不同的方法可以做到這一點(diǎn)。您可以在彈丸類(lèi)中創(chuàng)建一個(gè)名為 ProjectileType 的枚舉,如下所示:
public Enum ProjectileType { PlayerProjectile, EnemyProjectile }
每當(dāng)您創(chuàng)建/實(shí)例化射彈時(shí),將此 ProjectileType 分配給projectileType 變量,如下所示:
private projectileType;
public Projectile(ProjectileType projectileType)
{
? ? this.projectileType = projectileType;
}
現(xiàn)在,每當(dāng)您升級(jí)射彈時(shí),您都可以檢查射彈是否屬于玩家類(lèi)型,如下所示:
if(projectileType == ProjectileType.PlayerProjectile)
{
? ? // Upgrade logic.
}

TA貢獻(xiàn)1844條經(jīng)驗(yàn) 獲得超8個(gè)贊
我不確定這是否是最好的解決方案,因?yàn)檫@完全取決于您的游戲邏輯,但您可以創(chuàng)建兩類(lèi)射彈,一類(lèi)用于敵人,一類(lèi)用于玩家。這兩個(gè)類(lèi)都可以繼承自您的 Projectile 類(lèi)。
public class PlayerProjectil : Projectile {...} public class AIProjectil : Projectile {...}
將 Projectile 類(lèi)函數(shù)設(shè)為虛擬。當(dāng)您需要不同的行為時(shí),可以在 PlayerProjectil 和 AIProjectil 中覆蓋它們。
- 3 回答
- 0 關(guān)注
- 167 瀏覽