如何在其他脚本上引用函数?

问题描述 投票:0回答:1

我正在制作游戏,但无法从其他脚本中引用函数。

我有第一个脚本,其中有碰撞功能。我还有第二个应用统计数据的地方。

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;
}
c# unity3d
1个回答
0
投票

这只是一个 常见的拼写错误 :),PlayerData 是您的班级,playerData 是您找到的对象的参考变量。

此外,如果您在调用函数时执行 int -1 操作,health 实际上会上升 因为会减去伤害。

我也会删除硬编码值并使用[SerializeField]

让它显示在检查器中

playerData 也可以是私有引用,因此它不会显示在检查器中(这可能会造成混淆),因为检查器输入将在 Start() 中被丢弃,我假设没有其他脚本正在访问它

[SerializeField] private int damage = 1; 
playerData.HPmodifiers(damage);

您也可以参观 https://learn.unity.com/ ,这是一个充满免费课程和简短教程的惊人资源。

© www.soinside.com 2019 - 2024. All rights reserved.