I am working on a FPS game. I which my first scene in Main menu scene. Which is fine. In the second scene user is selecting the gun which he want to use (There are four guns). When he press play i am loading the new scene(gamePlay). How can i keep track of the gun which the user selected? so, he can use that gun in the gamePlay? its easy when you are working in a single scene by switching your camera. But how to do it in the new scene?
This is how I have been doing and it works really well.
Implement a Singleton that derives from MonoBehaviour
to hold user choices between menus and that will not be destroyed when a new level is loaded.
public class UserChoices : MonoBehaviour
{
public static UserChoices Instance = null;
// just an example, add more as you like
public int gun;
void Awake()
{
DontDestroyOnLoad(this.gameObject);
if(Instance == null)
{
Instance = this;
} else if(Instance != this)
{
Destroy(this.gameObject);
}
}
}
Now you just need to do this once:
Now you can save and read the user choices between scenes easily:
// read chosen gun
int chosen_gun = UserChoises.Intance.gun;
//save chosen gun
UserChoises.Intance.gun = PlayerGuns.Knife;
Just a side note, I usually create properties instead of accessing simply public variables because I like to control what values are assigned (validation, extra behaviors, etc...)