如何将可变信息从一个预制件传输到另一个预制件?

时间:2017-02-12 19:15:41

标签: unity3d

我有两个预制件。 1)FoodItem 2)消费者

public class ItemController{
    //Item Details
    public float price;
    public float eatingTime;
}

在连接的两个对象触发后,客户需要" eat"一段时间。一旦他们吃完,他们付钱。薪水需要更新分数。

public class CharacterControl : MonoBehaviour
{
    //CustomerDetails
    if(time == eatingTime){
    Score = Score + price;
    UpdateScore();
    }
}

public class ScoreManager : MonoBehaviour {
    public float Score;
    public Text scoreText;

    // Use this for initialization
    void Start () {
        scoreText.text = "0";
    }

    public void UpdateScore()
    {
        scoreText.text = Score.ToString("2");
    }
}

我尝试连接脚本,但是一旦创建了预制件,它就会删除脚本,因此分数不起作用。

我尝试过做一个静态变量,但是遇到了问题。我猜错了它的工作原理。

1 个答案:

答案 0 :(得分:1)

你可以做几件事,但最好的办法可能就是做这样的事情:

public class CharacterControl
{

    void Update()
    {
        GameObject.FindGameObjectByTag("Tag-of-scoremanager-").GetComponent <ScoreManager> ().Score += price;


    }
}

另一种方法是将分数管理器作为检查器属性包括在内,如下所示:

ScoreManager manager;

然后将得分管理器预制件拖放到检查器中, 然后增加它只需:

manager.Score += price;