- Home /
Keep score after restart & limit ads/hour
Hi guys! I`ve just integrated Unity Ads in my first game and currently I am facing two problems: limiting the no. of ads per hour(1) and keeping the score after the user watched the ad(2).
void ShowRewardedVideo()
{
DateTime currentTime = DateTime.Now;
DateTime resetTime = DateTime.Parse(PlayerPrefs.GetString("ADResetTime", currentTime.ToString()));
TimeSpan travelTime = currentTime - resetTime;
if (travelTime.TotalMinutes > 60f)
{
adCounter = 0;
PlayerPrefs.SetString("ADResetTime", currentTime.ToString());
}
if (Advertisement.IsReady() && travelTime.TotalMinutes<2f)
{
Advertisement.Show(myPlacementId);
if (adCounter <= 2)
{
adCounter++;
}
}
}
public class LengthScore : MonoBehaviour
{
public Transform playerTransform;
public Text LengthText;
public Text HighScoreDistance;
public float distance;
public float lastdistance;
private void Start()
{
HighScoreDistance.text = PlayerPrefs.GetFloat("HighScoreDistance", 0).ToString("F0");
}
void Update()
{
if (RewardedAdsButton.adCounter > 1)
{
distance = playerTransform.position.z + lastdistance;
lastdistance = 0;
}
else { distance = playerTransform.position.z; }
LengthText.text = distance.ToString("0");
if (distance > PlayerPrefs.GetFloat("HighScoreDistance", 0))
{
PlayerPrefs.SetFloat("HighScoreDistance", distance);
HighScoreDistance.text = distance.ToString("F0");
}
lastdistance = distance;
}
}
I have searched multiple solutions, but nothing worked so far. Please let me know where should I change the script. Thanks!
Answer by TinnedKitten · May 14, 2020 at 08:43 PM
Managed to fix problem no.2
public class LengthScore : MonoBehaviour
{
public Transform playerTransform;
public Text LengthText;
public Text HighScoreDistance;
public float distance;
public static float lastdistance;
void Start()
{
if (gameManager.didWatchAd)
{
lastdistance = PlayerPrefs.GetFloat("Score", distance);
}
else
{
lastdistance = 0;
}
HighScoreDistance.text = PlayerPrefs.GetFloat("HighScoreDistance", 0).ToString("F0");
}
private void Update()
{
distance = lastdistance + playerTransform.position.z;
LengthText.text = distance.ToString("0");
if (distance > PlayerPrefs.GetFloat("HighScoreDistance", 0))
{
PlayerPrefs.SetFloat("HighScoreDistance", distance);
HighScoreDistance.text = distance.ToString("F0");
}
PlayerPrefs.SetFloat("Score", distance);
}
}
For those who will use this script, make sure to set didWatchAd to true in the method that restart the scene if the user saw the ad and to false in the other method.
Your answer
Follow this Question
Related Questions
Code to Set 3 ADS per day limit 1 Answer
Calculating player distance meter? C# Unity2D 1 Answer
Set limit to 60 seconds 2 Answers
Scored based on time. 0 Answers
C#: Q about creating Score system using GUItext and Time 1 Answer