- Home /
not resetting the death count on reload
I have a death counter that each 3 deaths the death resets to 0 and a revmob ad is displayed. but when i reset the level the death count also resets, i tried making it static but it keeps counting after 3 and doesn't resets. I thought using PlayerPref but I'm not sure how efficient that is and I didn't test it, can somebody shed a light upon my problem?
private int death;
death ++;
Debug.Log (death);
if (death == 3) {
revmob.ShowFullscreen ();
death = 0;
Answer by raulrsd · Apr 07, 2015 at 07:35 PM
The solution is to make it static, if you say that it didn't reset when you tried it, you should force the reset in any start() method (or in your resetLevel() method, if it exists). I suggest you make a static class called GlobalVariables and inside this class put the public static int numOfDeaths. Then you could access it from any script this way:
GlobalVariables.numOfDeaths = 0;
GlobalVariables.numOfDeaths++;
or whatever
You don't need to use static for this, nor is that possible as it seems you want your attribute private(?) + as it seems you want this attribute in the same class, or am I wrong?
I'm pretty sure it is because of your ad pausing the method and or not returning to it properly.
Have you tried resetting the death before you play the advertisment?
Also, you state in your question both that the attribute DON'T reset, and that it DOES, what do you really mean and more importantly what are you trying to do? :)
PlayerPrefs is by far any inefficient way of storing attributes on phones, btw. You can definitely use it for things like this with no problem.
$$anonymous$$y game starts, play play play, character dies, death count = 1 restart the game, play play play, character die, death count = 1. its resets itself as the scene does too, i want the death count to stay 1 even after it reloaded, and be 2 when died, at 3 deaths display the ad and make the variable count from 0, endless loop.
When you say "restart the game", do you mean: "reload the scene"? If the answer is yes, the easiest way is what I said in my previous answer. If you don't like it, or you can't make it work, explain us what is happening and we'll try another way.
Answer by piacentini · Apr 08, 2015 at 09:21 AM
The problem is that the variable is private from the class. It is created again when the class is recreated, so it will always have the same value. You need something like a gamestate singleton that survives your reloads of the levels. Here is a nice article showing you how to implement it:
http://www.fizixstudios.com/labs/do/view/id/unity-game-state-manager
Answer by Arju2011 · Apr 08, 2015 at 09:23 AM
You said "it keeps counting after 3"
public int death;
death += 1;
Debug.Log (death);
if (death > 2) {
revmob.ShowFullscreen ();
death = 0;
Try this, and if it doesn't work, then I don't know.
it keeps counting after 3 if i make it static, "i tried making it static but it keeps counting after 3 and doesn't resets" I'm looking for a way it'll count to 3 show ad and reset the count, static makes it count after 3 and reloading the scene resets the variable death back to 2
yes, it is public. I thought about maybe attaching the death count to a gameobject in the scene and using DontDestroyOnLoad method, but that seems to me like a waste of resources and making things messy.
Answer by Luka-L · Mar 04, 2017 at 09:15 AM
@SirBoboHobo make death int static (You can exclude [SerializeField] and make int public)
[SerializeField]
private static int deathCount;
Are you sure you're placing code below in void Update?
void Update () {
if (deathCount == 3){
deathCount = 0;
}
}
Answer by eshedye · Jan 19, 2018 at 08:19 PM
u just need on your public int to mention its zero:
public int Deaths = 0;
void Update () { if (Deaths>=4f) { Deaths = 0; } }
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers
Renderer on object disabled after level reload 1 Answer
Admob Rewarded video and Different APK size in Alpha testing 0 Answers