显示Unity广告每加载5次场景。 (Unity 3D)

时间:2015-03-18 05:54:53

标签: c# unity3d scripting ads

我想在每次加载场景的5倍时在我的2D游戏中展示广告。我试过这个:

void Update ()
{
    if(GameObject.Find ("Main Camera").transform.position.x == -23) {
        showNumber += 1;
        if(showNumber == 5) {
            if(Advertisement.isReady()){
                Advertisement.Show();
            }
        }
        if(showNumber > 5) {
            showNumber = 1;
        }
    }
}

如何使数字仅更改一次,因此只有当主摄像机的位置为-23时才会更改一次。对,不是每一帧都改变。

修改

void OnTriggerEnter(Collider other) {
    DontDestroyOnLoad (gameObject);
    if(other.name == "Main Camera") {
        showNumber +=1;
        if(showNumber == 5) {
            if(Advertisement.isReady()){
                Advertisement.Show();
            }
        }
        if(showNumber > 5) {
            showNumber = 0;
        }
    }
}

2 个答案:

答案 0 :(得分:0)

解决方案:将showNumber +=1showNumber++放入

    void Start()
    {
        showNumber +=1;
    }

我认为如果将此值写入文本文件然后从此文本文件中读取它会更容易,所有这些都在start事件中而不是更新。

启动被调用一次,每帧调用更新。

快速和脏编辑:在您想要的位置放置一个触发区。 然后调用OnTriggerEnter方法。

void OnTriggerEnter(Collider other) {
    showNumber +=1;
    if(showNumber == 5) {
        if(Advertisement.isReady()){
            Advertisement.Show();
        }

}

编辑:您的问题是,showNumber +=1;被称为30-60次,具体取决于您的计算机。 您可以添加一个bool变量来检查它是否是该点上的新条目。

bool alreadyEntered = false;
void Update ()
{
    if(GameObject.Find ("Main Camera").transform.position.x == -23 && alreadyEntered == false) {
        showNumber += 1;
        alreadyEntered = true;
        if(showNumber == 5) {
            if(Advertisement.isReady()){
                Advertisement.Show();
            }
        }
        if(showNumber > 5) {
            showNumber = 1;
        }
    }
}

答案 1 :(得分:0)

在播放器首选项中保存显示号码。

private int showNumber{
        get{

            return PlayerPrefs.GetInt("showNumber");
        }
        set{
            PlayerPrefs.SetInt("showNumber",value);

        }
    }
void OnTriggerEnter(Collider other) {
    showNumber +=1;
    if(showNumber == 5) {
        if(Advertisement.isReady()){
            Advertisement.Show();
            showNumber = 0;
        }

}