我正在制作一个游戏,但无法从其他脚本引用该函数。
我有一个第一个脚本,其中有一个碰撞函数。我有一个第二个,其中统计应用。
当OnCollisionEnter
接近时,我如何施加伤害?
public PlayerData playerData;
void Start()
{
playerData = FindObjectOfType<PlayerData>();
}
private void OnCollisionEnter2D(Collision2D other)
{
if (other.collider.tag == "Player")
{
PlayerData.HPmodifiers(int -1);
}
}
PlayerData
脚本如下所示:
public int CurrentHealth = 10;
public int MaxHealth = 10;
public void HPmodifiers(int Damage)
{
CurrentHealth -= Damage;
}
2条答案
按热度按时间xxhby3vn1#
这只是一个常见拼写错误:),PlayerData是您的类,playerData是您对找到的对象的引用var。
同样,如果你在函数调用中使用int -1,生命值实际上会上升,因为伤害被减去了。
我还将删除硬编码值****,并使用[SerializeField]**使其显示在检查器中
****playerData也可以是私有引用,这样它就不会显示在检查器中(这可能会让人感到困惑),因为检查器输入将在Start()中被丢弃,我假设没有其他脚本正在访问它
你也可以访问https://learn.unity.com/,这是一个非常棒的资源,里面有免费的课程和简短的教程。
w8f9ii692#
您需要获取组件并通过它调用方法。