2015-10-11 59 views
1

我在XNA拍了一個Shoot'Em Up遊戲。我正在制定一個關卡系統,每一分鐘,關卡都會提升,敵人的速度也會提高。XNA:如何從另一個類中更改變量值?

以我主類(Game1.cs)我有增加水平的方法,而在Enemy I類具有可變public int speed = 2;,其在敵人

public override void Update() 
{ 
    base.pos.Y += speed; 
} 

的更新中使用在Game1類,我有這樣的方法

public void LevelSystemUpdate() 
{    
    if (timer > 60f) 
    { 
     level += 1; 
     timer = 0f; 
    } 
} 

我想有添加一行Enemy.speed += 2;但它不會讓我。

另外,我有這個在Enemy

public int Speed 
{ 
    get 
    { 
     return speed; 
    } 
    set 
    { 
     speed = value; 
    } 
} 

但我不知道如何使它發揮作用。感謝你們!

回答

0

添加Enemy.Speed += 2而不是Enemy.speed並在Enemy類中使變量私有。

+0

我試圖做到這一點,但我得到一個錯誤:「一個對象引用是必需的非靜態字段,方法或屬性等 但我不想設置速度+ = 2只是一個對象在我想改變它爲整個班級 –

+0

然後讓它靜態'公共靜態INT速度;' – C1sc0

+0

我覺得你的敵人的速度應該計算在你的程序的其他地方(困難管理課程)難度水平計算, 。對於僅在一個地方進行管理的難點,我建議你使用Singleton模式,或者通過自己實現它或通過IoC來實現它。在我看來,使速度變爲靜態是一種不好的做法。 – KOTIX

1

因爲你沒有做什麼特別的Speed屬性的getter &二傳手,你應該語法切換到Auto-Property如下:

public int Speed { get; set; } 

這樣一來,你就不會需要私有字段speed,因此不會混淆在2.

爲避免將來出現此類錯誤,您可以爲您的私有變量使用命名模式(例如:m_speed,其中「m」代表成員)。

相關問題