2016-07-08 109 views
0

我得到這樣啓動功能不被稱爲C#

GameObject currentAuraObject 
IAura currentAura = currentAuraObject.GetComponent<IAura>(); 

組件,其中當前光環

public class AirAura : MonoBehaviour, IAura 
{ 
    public ElementalIncreament DamageElementalIncreament { get; set; } 
    public ElementalIncreament ResistanceElementalIncreament { get; set; } 
    public ElementalIncreament EnemyElementIncreament { get; set; } 

    private void Start() 
    { 
     DamageElementalIncreament = new ElementalIncreament(ElementalIncreament.ElementalType.Air, 20); 
     ResistanceElementalIncreament = new ElementalIncreament(ElementalIncreament.ElementalType.Air, 15); 
     EnemyElementIncreament = new ElementalIncreament(ElementalIncreament.ElementalType.Earth, 35); 
    } 
} 

變量currentAura本身不爲空,但所有的屬性..我不不明白爲什麼Start函數沒有被調用並正確初始化屬性,我該如何解決這個問題?

+0

所以如果你把Debug.Log(「這裏」);在開始時,控制檯中什麼都沒有出現?腳本附加到場景中的某個gameobject上? – mgear

+0

是的,這是正確的。更新不會觸發喚醒。 – PreqlSusSpermaOhranitel

+0

如果你製作了新的空白場景,用Start()+ Debug.Log()附加默認的空腳本,然後將腳本添加到gameobject中,按下play,仍然沒有任何結果? – mgear

回答

3

爲了有一個功能,在您的類自動調用你需要像下面創建一個類構造器(該函數必須是公開的,沒有返回類型和相同名稱類):

public AirAura() 
    { 
     DamageElementalIncreament = new ElementalIncreament(ElementalIncreament.ElementalType.Air, 20); 
     ResistanceElementalIncreament = new ElementalIncreament(ElementalIncreament.ElementalType.Air, 15); 
     EnemyElementIncreament = new ElementalIncreament(ElementalIncreament.ElementalType.Earth, 35); 
    } 
+3

雖然這是**以某種方式**正確。在Unity中,如果您的腳本繼承自「MonoBehaviour」,則不要**使用構造函數。在這種情況下,它的確如此。你在「喚醒」和「啓動」功能中進行初始化。也許把'開始'改成'喚醒'可以解決這個問題。 – Programmer