- Home /
GameManager value tracking design issue
My Game needs to know how many cars are in the world able to play. That means, cars which are upsidedown will be knockedout. When they are again on their wheels, they shouldnt be knockedOut. (is already implemented in the carScript)
public class GameManager : MonoBehaviour {
public static GameManager instance;
public List<CarMotor> carsLeft, cars;
private void Update(){
UpdateCarsLeft();
}
private void UpdateCarsLeft(){
carsLeft = cars.Where(x => !x.KnockedOut()).ToList();
}
}
This way, the list will be determined each frame, which is not good, creating also garbage. I can solve the problem by adding/removing them from their car scripts. That way, the list will be changed only when the state of the cars changed.
.
But generally, this is not a good way either to write this in the car script, since classes should have one functionality
(And the gameManager is obviously the one who needs to track something, not the cars to do the work themselves, they should only manage driving).
How can be this implemented in the right way?
Answer by mikewarren · May 16, 2018 at 12:03 PM
I think this a very thoughtful question.
If you're not familiar with them, I would look up the Events and Delegates design pattern (EventHandler) for .Net. Your cars have a state associated with them, and you recognize that some entities (your GameManager) are going to need to be notified when that state changes. The general way to do this is implement an event list in the car behavior script and have the game manager register a state changed event handler with each instance. When a car is updated and the state changes, have it call all the event handlers that requested the state change notices.
Your answer
Follow this Question
Related Questions
How to smootlhy change values in amout of time? 3 Answers
Synchronizing multiple values 1 Answer
How do I create a Key and Values Dictionary array in C# 1 Answer
Adding the values of two functions together to display the total 1 Answer
How to have Database of Dictionary elements with online images??? 0 Answers