我有兩個「敵人」精靈,當「玩家」精靈接觸時,應該會造成傷害。無法在其他統一腳本中調用公共靜態方法
PlayerStatus腳本只保存有關玩家健康的信息。 當EnemyAIController的OnTriggerEnter2D方法被觸發時,我想調用PlayerStatus腳本中的一個方法,這個方法會減少x的健康度。
我製作了TakeDamage method accessor public with a static modifier。所以我可以打電話PlayerStatus.TakeDamage(float x)
,但這不起作用。
我得到的錯誤:訪問對象引用需要非靜態成員`PlayerStatus.TakeDamage(浮動)」
我不想使用findObjectByTag
因爲我已閱讀,是緩慢而懶散的做法。
我錯過了什麼嗎?
PlayerStatus腳本:
public class PlayerStatus : MonoBehaviour {
public float health = 3.0f;
public static void TakeDamage(float damage){
health -= damage;
}
}
EnemyAIController腳本:
public class EnemyAIController : MonoBehaviour {
void OnTriggerEnter2D(Collider2D other) {
Debug.Log("Reduce Player Health");
PlayerStatus.TakeDamage (1.0f);
}
}
賈卡解釋你的問題。但請記住 - 擁有STATIC *** CLASSES ***並且只在靜態類中寫入靜態調用是非常好的主意。需要考慮的事情。 – Fattie
**你正在做的事情極其危險**不要忘記PlayerStatus是一個單身行爲。 ***附件是什麼?**如果您的遊戲中有多個PlayerStatus腳本,會發生什麼情況? – Fattie
哎呀。我可以在任何地方閱讀這篇文章? –