具有多个输入C#源的递增整数

本文关键字:整数 输入 | 更新日期: 2023-09-27 18:27:46

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

void OnCollisionEnter (Collision col)
{
    if(col.gameObject.name == "Plane")
    {
        score += 50;
        textMeshComponent = GameObject.Find ("Score").GetComponent<TextMesh> ();
        textMeshComponent.text = score.ToString ();
    }
}

(col.gameObject.name)有10个,它们都与一个"平面"交互。

我怎样才能使分数像我描述的那样成为一个综合性的分数?我真的不知道如何操作这个等式的(col.gameObject.name)端。

谢谢你的建议。

具有多个输入C#源的递增整数

使score成为Plane的成员,而不是this,并使其成为public,以便所有其他游戏对象都可以获得它。

你也可以创建分数作为自己的gameObject,或者创建一个包含所有全局的gameObject。

让我建议另一种方法,尽管不建议使用textMeshComponent.text=(score+(int.Parse(textMeshComponent.text)).toString();现在,这将作为一个整体添加点,而不管每个游戏对象将自己的点添加到主值

考虑在场景中放置一个对象,该对象唯一关心的是计算(可能显示)分数。让我们把它命名为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(关注点分离)的内容。