0
votes

Comment mettre en œuvre une récompense différente pour les annonces REWAREDVIDEO

J'ai une roue de fortune dans mon jeu qui peut être joué à regarder une annonce vidéo. Cette roue peut donner 4 types de récompenses (4 diamants, 8 diamants, jackpot, niveau de bonus) maintenant je ne sais pas comment obtenir cela fait. Le long de cela, j'ai aussi une double pièce de monnaie dans mon niveau chaque niveau qui a également déclenché sur la lecture d'une annonce.

Voici mon script Admanager qui est lié au double bouton de la pièce à partir de laquelle j'appelle le showRewardedVideo () p>

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityStandardAssets.CrossPlatformInput;

public class SpiningManager : MonoBehaviour {

    int randVal;
    private float timeInterval;
    private bool isCoroutine;
    private int finalAngle;

    public Text winText;
    public int section;
    float totalAngle;
    public string[] PrizeName;
    // Use this for initialization
    private MenuScene g;
    private void Start () {

        isCoroutine = true;
        totalAngle = 360 / section;

        g = GameObject.FindObjectOfType<MenuScene>();

    }

    // Update is called once per frame
    private void Update () {
        float xRotate = CrossPlatformInputManager.GetAxis("Horizontal");
        if (xRotate == 1 && isCoroutine) {
            StartCoroutine (Spin ());
        }
    }

    private IEnumerator Spin(){

        isCoroutine = false;
        randVal = Random.Range (80, 150);

        timeInterval = Time.deltaTime*2;

        for (int i = 0; i < randVal; i++) {

            transform.Rotate (0, 0, (totalAngle/2)); //Start Rotate 


            //To slow Down Wheel
            if (i > Mathf.RoundToInt (randVal * .2f))//0.2f
                timeInterval = 0.5f*Time.deltaTime;
            if (i > Mathf.RoundToInt (randVal * .5f))//0.2f
                timeInterval = 1f*Time.deltaTime;
            if (i > Mathf.RoundToInt (randVal * .7f))//0.2f
                timeInterval = 1.5f*Time.deltaTime;
            if (i > Mathf.RoundToInt (randVal * .8f))//0.2f
                timeInterval = 2f*Time.deltaTime;
            if (i > Mathf.RoundToInt (randVal * .9f))
                timeInterval = 2.5f*Time.deltaTime;

            yield return new WaitForSeconds (timeInterval);

        }

        if (Mathf.RoundToInt (transform.eulerAngles.z) % totalAngle != 0) //when the indicator stop between 2 numbers,it will add aditional step 
            transform.Rotate (0, 0, totalAngle/2);
        
        finalAngle = Mathf.RoundToInt (transform.eulerAngles.z);//round off euler angle of wheel value

        print (finalAngle);

        //Prize check
        for (int i = 0; i < section; i++) {

            if (finalAngle == i * totalAngle)
            {
                winText.text = PrizeName[i];
                if(winText.text == "BONUS LEVEL")
                {
                    Debug.Log("Play Bonus Level");
                }
                else if(winText.text == "DIAMONDS X8")
                {
                    Debug.Log("Give DIAMONDS X8");

                }
                else if (winText.text == "DIAMONDS X4")
                {
                    Debug.Log("Give DIAMONDS X4");

                }
                else if (winText.text == "JACKPOT")
                {
                    Debug.Log("Give JACKPOT");                      
                }
            }
        }
        isCoroutine = true;
    }
}


1 commentaires

Utilisez plutôt Enum au lieu des chaînes, utilisez généralement commutateur


3 Réponses :


0
votes

SpiningManager.cs: xxx


0 commentaires

0
votes

admanager.cs: xxx


3 commentaires

d'où appeler la fonction showRewardedvideo (). Je l'ai essayé de différentes manières que l'annonce a joué mais je n'ai pas eu de récompense.


ad.RewwardedvideoeventHandler - = onewardedvideoevent; Cette ligne va vous désinscrire appelez l'appel lorsque la vidéo est récompensée. Vous ne devriez pas faire cela chaque fois que vous chargez une vidéo récompensée, vous pouvez vous abonner avec + = comme ci-dessus, invoquée ("Cachevideoad", 1, 5); C'est une mauvaise façon de demander des annonces vidéo récompensées, vous devez le faire après init admob, puis chargez à nouveau dans l'événement récompensé ou dans un événement proche ou vous pouvez également le charger dans l'événement de chargement de la charge.


Invoquée ("Cachevideoad", 1, 5); Cette ligne chargera la vidéo plusieurs fois, même si vous avez déjà attrapé. vous devriez faire comme Catch -> Show -> Catch à nouveau -> Si non chargé, alors attrapez



0
votes

J'ai résolu ceci en réglant la clé PlayerPrafs pour chaque récompense et vérifiant si la clé PlayerPrafs est disponible pour obtenir une récompense dans la fonction onewwarded () et après avoir réclamé, je supprime la clé.


0 commentaires