我的参数方法中的变量未在另一个类中调用。
我试图告诉它我们正在从playerlivesdisplayed类获取PlayerdmgAmount。我收到一条错误消息,指出PlayerLivesDisplay无法转换为int。
因此,我将其注释掉并再次写入int值。该代码运行,但是没有按照我想要的去做。
public class PlayerLivesDisplay : MonoBehaviour
{
public void takeLives(int PlayerdmgAmount)
{
playerLives -= PlayerdmgAmount;
displayUpdate();
if (playerLives <= 0)
{
//TODO load mainMenu
}
}
}//playerLives
public class DamgePlayer : MonoBehaviour
{
private void OnTriggerEnter2D(Collider2D othercollision)
{
//PlayerLivesDisplay PlayerdmgAmount = GetComponent<PlayerLivesDisplay>()
int PlayerdmgAmount = 1;
FindObjectOfType<PlayerLivesDisplay>().takeLives(PlayerdmgAmount);
}
}
public class Attacker : MonoBehaviour
{
[Range(0f, 10f)] [SerializeField] float walkSpeed = 1f;
[SerializeField] int PlayerdmgAmount = 1;
GameObject currentTarget;
public void hurtplayer(int PlayerdmgAmount)
{
FindObjectOfType<PlayerLivesDisplay>().takeLives(PlayerdmgAmount);
}
}
我要实现的目标:
Golem1 =夺走5条生命
Fox:夺走2条生命
将这些变量(发生冲突时)传递给玩家健康伤害(DamagePlayer脚本)
然后转到播放器生命显示类takeLives方法,并将伤害变量输入到从攻击者脚本启动的参数中。
答案 0 :(得分:1)
如果您的takeLives
方法使用一个int
变量作为参数,则无法传递PlayerLivesDisplay
对象,则需要传递一个int
(这就是错误所在关于)。 PlayerLivesDisplay
可能包含PlayerdmgAmount
(因此int
),但本身并不包含PlayerdmgAmount
。
根据您要完成的工作,您可以执行以下操作:
在您的PlayerLivesDisplay
中添加一个属性,并使用它存储以后需要获取的值:
public class PlayerLivesDisplay : MonoBehaviour
{
...
public int PlayerdmgAmount { get; set; }
...
public void takeLives(int playerdmgAmount)
{
...
this.PlayerdmgAmount = playerdmgAmount;
}
}
现在您可以访问其他类中的值:
public class DamgePlayer : MonoBehaviour
{
private void OnTriggerEnter2D(Collider2D othercollision)
{
int playerdmgAmount = GetComponent<PlayerLivesDisplay>().PlayerdmgAmount;
...
}
}