Readevideo脚本能量+ 1

发布于 2025-02-10 21:14:25 字数 4228 浏览 1 评论 0原文

在看到奖励广告后,我不知道如何用更多的精力奖励玩家。 所以我想用能量奖励球员。 看来您的帖子主要是代码,请添加更多详细信息。 看来您的帖子主要是代码,请添加更多详细信息。 看来您的帖子主要是代码,请添加更多详细信息。

private BannerView bannerAd;
private InterstitialAd interstitial;
private RewardBasedVideoAd rewardBasedVideo;
bool isRewarded = false;
// Start is called before the first frame update
void Start()
{
    MobileAds.Initialize(InitializationStatus => { });
    this.rewardBasedVideo = RewardBasedVideoAd.Instance;

    this.rewardBasedVideo.OnAdRewarded += this.HandleRewardBasedVideoRewarded;
    this.rewardBasedVideo.OnAdClosed += this.HandleRewardBasedVideoClosed;
    this.RequestRewardBasedVideo();
    this.RequestBanner();
}
void Update()
{
    if (isRewarded)
    {
        isRewarded = false;
        
    }

我有一个能量栏250/250,一旦按下播放能量即可到达249/250的能量,当播放器按奖励按钮时,我该如何增加能量+1?

[SerializeField] Text energyText;
[SerializeField] Text timerText;
[SerializeField] Slider energyBar;
private int maxEnergy = 250;
private int currentEnergy;
private int restoreDuration = 250;
private DateTime nextEnergyTime;
private DateTime lastEnergyTime;
private bool isRestoring = false;
// Start is called before the first frame update
void Start()
{
    if(!PlayerPrefs.HasKey("currentEnergy"))
    {
        PlayerPrefs.SetInt("currentEnergy", 50);
        Load();
        StartCoroutine(RestoreEnergy());

    }
    else
    {
        Load();
        StartCoroutine(RestoreEnergy());
    }
}
public void UseEnergy()
{
    if(currentEnergy >= 1)
    {
        currentEnergy--;
        UpdateEnergy();
        if (isRestoring == false)
        {
            if(currentEnergy + 1 == maxEnergy)
            {
                nextEnergyTime = AddDuration(DateTime.Now, restoreDuration);
            }
            StartCoroutine(RestoreEnergy());
        }
    }
    else
    {
        Debug.Log("Isufficient Energy!!");
    }
}
private IEnumerator RestoreEnergy()
{
    UpdateEnergyTimer();
    isRestoring = true;
    
    while(currentEnergy < maxEnergy)
    {
        DateTime currentDateTime = DateTime.Now;
        DateTime nextDateTime = nextEnergyTime;
        bool isEnergyAdding = false;

        while(currentDateTime > nextDateTime)
        {
            if(currentEnergy < maxEnergy)
            {
                isEnergyAdding = true;
                currentEnergy++;
                UpdateEnergy();
                DateTime timeToAdd = lastEnergyTime > nextDateTime ? lastEnergyTime : nextDateTime;
                nextDateTime = AddDuration(timeToAdd, restoreDuration);
            }
            else
            {
                break;
            }
        }
        if (isEnergyAdding == true)
        {
            lastEnergyTime = DateTime.Now;
            nextEnergyTime = nextDateTime;
        }
        UpdateEnergyTimer();
        UpdateEnergy();
        Save();
        yield return null;
    }
    isRestoring = false;
}


private DateTime AddDuration(DateTime datetime, int duration)
{
    return datetime.AddSeconds(duration);
    //return datetime.AddMinutes(duration);
}

private void UpdateEnergyTimer()
{
    if (currentEnergy >= maxEnergy)
    {
        timerText.text = "Full";
        return;
    }
    TimeSpan time = nextEnergyTime - DateTime.Now;
    string timeValue = String.Format("{0:D2}:{1:D1}", time.Minutes, time.Seconds);
    timerText.text = timeValue;
}

private void UpdateEnergy()
{
    energyText.text = currentEnergy.ToString() + "/" + maxEnergy.ToString();

    energyBar.maxValue = maxEnergy;
    energyBar.value = currentEnergy;

}


private DateTime StringToDate(string datetime)
{
    if (String.IsNullOrEmpty(datetime))
    {
        return DateTime.Now;
    }
    else
    {
        return DateTime.Parse(datetime);
    }
}

private void Load()
{
    currentEnergy = PlayerPrefs.GetInt("currentEnergy");
    nextEnergyTime = StringToDate(PlayerPrefs.GetString("nextEnergyTime"));
    lastEnergyTime = StringToDate(PlayerPrefs.GetString("lastEnergyTime"));
}

private void Save()
{
    PlayerPrefs.SetInt("currentEnergy", currentEnergy);
    PlayerPrefs.SetString("nextEnergyTime", nextEnergyTime.ToString());
    PlayerPrefs.SetString("lastEnergyTime", lastEnergyTime.ToString());
}

}

I do not know how to Reward the player with more energy after seeing the reward ad.
So I want to reward the player with Energy.
It looks like your post is mostly code please add some more details.
It looks like your post is mostly code please add some more details.
It looks like your post is mostly code please add some more details.

private BannerView bannerAd;
private InterstitialAd interstitial;
private RewardBasedVideoAd rewardBasedVideo;
bool isRewarded = false;
// Start is called before the first frame update
void Start()
{
    MobileAds.Initialize(InitializationStatus => { });
    this.rewardBasedVideo = RewardBasedVideoAd.Instance;

    this.rewardBasedVideo.OnAdRewarded += this.HandleRewardBasedVideoRewarded;
    this.rewardBasedVideo.OnAdClosed += this.HandleRewardBasedVideoClosed;
    this.RequestRewardBasedVideo();
    this.RequestBanner();
}
void Update()
{
    if (isRewarded)
    {
        isRewarded = false;
        
    }

I have an energy bar 250/250, once press play the energy is going to 249/250 Energy, how can I script to increase the Energy +1 when player press the reward Button?

[SerializeField] Text energyText;
[SerializeField] Text timerText;
[SerializeField] Slider energyBar;
private int maxEnergy = 250;
private int currentEnergy;
private int restoreDuration = 250;
private DateTime nextEnergyTime;
private DateTime lastEnergyTime;
private bool isRestoring = false;
// Start is called before the first frame update
void Start()
{
    if(!PlayerPrefs.HasKey("currentEnergy"))
    {
        PlayerPrefs.SetInt("currentEnergy", 50);
        Load();
        StartCoroutine(RestoreEnergy());

    }
    else
    {
        Load();
        StartCoroutine(RestoreEnergy());
    }
}
public void UseEnergy()
{
    if(currentEnergy >= 1)
    {
        currentEnergy--;
        UpdateEnergy();
        if (isRestoring == false)
        {
            if(currentEnergy + 1 == maxEnergy)
            {
                nextEnergyTime = AddDuration(DateTime.Now, restoreDuration);
            }
            StartCoroutine(RestoreEnergy());
        }
    }
    else
    {
        Debug.Log("Isufficient Energy!!");
    }
}
private IEnumerator RestoreEnergy()
{
    UpdateEnergyTimer();
    isRestoring = true;
    
    while(currentEnergy < maxEnergy)
    {
        DateTime currentDateTime = DateTime.Now;
        DateTime nextDateTime = nextEnergyTime;
        bool isEnergyAdding = false;

        while(currentDateTime > nextDateTime)
        {
            if(currentEnergy < maxEnergy)
            {
                isEnergyAdding = true;
                currentEnergy++;
                UpdateEnergy();
                DateTime timeToAdd = lastEnergyTime > nextDateTime ? lastEnergyTime : nextDateTime;
                nextDateTime = AddDuration(timeToAdd, restoreDuration);
            }
            else
            {
                break;
            }
        }
        if (isEnergyAdding == true)
        {
            lastEnergyTime = DateTime.Now;
            nextEnergyTime = nextDateTime;
        }
        UpdateEnergyTimer();
        UpdateEnergy();
        Save();
        yield return null;
    }
    isRestoring = false;
}


private DateTime AddDuration(DateTime datetime, int duration)
{
    return datetime.AddSeconds(duration);
    //return datetime.AddMinutes(duration);
}

private void UpdateEnergyTimer()
{
    if (currentEnergy >= maxEnergy)
    {
        timerText.text = "Full";
        return;
    }
    TimeSpan time = nextEnergyTime - DateTime.Now;
    string timeValue = String.Format("{0:D2}:{1:D1}", time.Minutes, time.Seconds);
    timerText.text = timeValue;
}

private void UpdateEnergy()
{
    energyText.text = currentEnergy.ToString() + "/" + maxEnergy.ToString();

    energyBar.maxValue = maxEnergy;
    energyBar.value = currentEnergy;

}


private DateTime StringToDate(string datetime)
{
    if (String.IsNullOrEmpty(datetime))
    {
        return DateTime.Now;
    }
    else
    {
        return DateTime.Parse(datetime);
    }
}

private void Load()
{
    currentEnergy = PlayerPrefs.GetInt("currentEnergy");
    nextEnergyTime = StringToDate(PlayerPrefs.GetString("nextEnergyTime"));
    lastEnergyTime = StringToDate(PlayerPrefs.GetString("lastEnergyTime"));
}

private void Save()
{
    PlayerPrefs.SetInt("currentEnergy", currentEnergy);
    PlayerPrefs.SetString("nextEnergyTime", nextEnergyTime.ToString());
    PlayerPrefs.SetString("lastEnergyTime", lastEnergyTime.ToString());
}

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

各自安好 2025-02-17 21:14:25

您可以确定用户是否在ADS回调事件中获胜
添加此事件回调

// Called when the user should be rewarded for interacting with the ad.
this.rewardedAd.OnUserEarnedReward += HandleUserEarnedReward;

然后

public void HandleUserEarnedReward(object sender, Reward args)
{
        //Now it's time to reward the user
        //Use those if you want to get the amount from the ad setup
        //string type = args.Type;
        //double amount = args.Amount;
}

You can determinate if the user won at ads callback events
add this event callback

// Called when the user should be rewarded for interacting with the ad.
this.rewardedAd.OnUserEarnedReward += HandleUserEarnedReward;

then

public void HandleUserEarnedReward(object sender, Reward args)
{
        //Now it's time to reward the user
        //Use those if you want to get the amount from the ad setup
        //string type = args.Type;
        //double amount = args.Amount;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文