Keeping Score out of Update Function
Hi, I am building a game and I am trying to keep as much out of the Update function as I can as it overheats the phone. How can I keep the score of an item I am collecting if I don't call it in the update? What is another method? If I remove the line of code from the update and I put it on a specific function, it does not work and the score does not update once the player is in trigger with the object. It works only if I keep track of the score in the update. Any way around this? Thank you!
Here are the 2 simple scripts:
Showing the collected items number:
public static int goldCount; public Text goldCountText;
void Start()
{
goldCount = PlayerPrefs.GetInt("GoldCount");
goldCountText.text = goldCount.ToString();
}
public void Update()
{
goldCountText.text = goldCount.ToString();
if (goldCount <= 0)
{
goldCount = 0;
}
}
}
Collecting the item on the trigger:
void OnTriggerEnter2D(Collider2D other)
{
if (other.CompareTag("Player"))
{
GoldCount.goldCount += 1;
PlayerPrefs.SetInt("GoldCount", GoldCount.goldCount);
Destroy(gameObject);
}
}
Answer by unity_o8UcpI1VmWU1qw · Jan 29, 2021 at 06:15 AM
Hey! You could write a function inside GoldCount
which updates the text. This function would get called inside OnTriggerEnter2d
.
Like this:
public static updateGoldCount(int addCount) {
goldCount += addCount;
PlayerPrefs.SetInt("GoldCount", GoldCount.goldCount);
if (goldCount <= 0) {
goldCount = 0;
}
goldCountText.text = goldCount.ToString();
}
Hence, OnTriggerEnter2d
would look like that:
void OnTriggerEnter2D(Collider2D other) {
if (other.CompareTag("Player")) {
GoldCount.updateGoldCount(1);
Destroy(gameObject);
}
}
By creating a new function your code gets more flexible and you can update the coldCount from anywhere.
Afterwards you don't need the update function at all :)
Your answer
Follow this Question
Related Questions
HELP! How to make Update function start after delay? C# 2 Answers
Why won't my model rotate up on X axis? 1 Answer
OnTriggerExit does not work 0 Answers
Help with Script 0 Answers