在我的游戏中有一个分数。当对象发生碰撞时,会在分数中添加一组设定的增量。有一个记分牌。我的游戏中发生的事情是,当一个物体碰撞时,它会劫持记分牌,只显示其自己的人物分数历史。当下一个对象发生碰撞时,它会接管记分板并显示其自己的个人历史记录。我试图展示所有放在一起的物体的合并得分,每个物体都贡献了一大笔。


 void OnCollisionEnter(Collision col)
 {
 if(col.gameObject.name ==“Plane”)
 {
得分+ = 50;
 textMeshComponent = GameObject.Find(“Score”)。GetComponent< TextMesh> ();
 textMeshComponent.text = score.ToString();

 }
}



 有10个(col.gameObject.name),并且有一个“平面”,它们都是与。。。相互作用。


如何才能将得分视为我所描述的集团?我真的不知道如何操纵该等式的(col.gameObject.name)方面。


感谢您的建议。
&#xA ;答案 0 :(得分:0)
让score
成为Plane
的成员,而不是this
,并将其设为public
,以便所有其他游戏对象都能获得它。
您还可以将乐谱创建为自己的游戏对象,或创建包含所有全局变量的游戏对象。
答案 1 :(得分:0)
让我建议另一种方法虽然不推荐textMeshComponent.text =(score +(int.Parse(textMeshComponent.text)))。toString(); 现在这将添加点作为一个整体,无论每个游戏对象都将其自己的值添加到主值
答案 2 :(得分:0)
考虑在场景中有一个对象,其唯一关注点是计算(并可能显示)得分。让我们把它命名为ScoreController。
每当您想要为玩家奖励分数的事件发生时,负责的代码只会调用您的ScoreController并告诉他们要奖励多少分数。
您的ScoreController GameObject可能有这样的脚本:
public class ScoreController : MonoBehaviour
{
public TextMesh scoreDisplay;
public int Score { get; private set; }
void Start()
{
UpdateView();
}
public void AwardScore(int amount)
{
Score += amount;
UpdateView();
}
private void UpdateView()
{
scoreDisplay.text = Score.ToString();
}
}
现在,其他代码可以通过调用
来奖励分数GameObject.FindObjectOfType<ScoreController>().AwardScore(123);
如果您想阅读相关主题,请考虑阅读有关模型 - 视图 - 控制设计模式以及SoC(关注点分离)的内容。