我有两个“敌人”精灵,当“玩家”精灵接触时,应该会造成伤害。无法在其他统一脚本中调用公共静态方法
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
哎呀。我可以在任何地方阅读这篇文章? –