使用多个输入源C#递增整数

时间:2015-12-23 04:56:38

标签: c# unity3d

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




  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 ;

3 个答案:

答案 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(关注点分离)的内容。