需要Unity2D Android的C#脚本的帮助或建议,关于广告。Unity表明我的代码已经过时了

需要Unity2D Android的C#脚本的帮助或建议,关于广告。Unity表明我的代码已经过时了,c#,android,unity3d,C#,Android,Unity3d,这是我在项目中用于广告的代码“模板”。虽然广告在起作用(测试时有点慢)。Unity告诉我:“ShowOptions.resultCallback”已经过时:“ImplementIUnityadListener并调用advision.AddListener()。我试图使用一个侦听器做广告,但失败了……有什么建议吗 using System.Collections; using System.Collections.Generic; using UnityEngine.Advertisements;

这是我在项目中用于广告的代码“模板”。虽然广告在起作用(测试时有点慢)。Unity告诉我:“ShowOptions.resultCallback”已经过时:“Implement
IUnityadListener
并调用
advision.AddListener()
。我试图使用一个侦听器做广告,但失败了……有什么建议吗

using System.Collections;
using System.Collections.Generic;
using UnityEngine.Advertisements;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;

public class PlayerController : MonoBehaviour
{
    string gameId;
    bool testMode;
    string placementId;

    void Start()
    {
        gameId = "<my id here>";
        testMode = false;
        placementId = "<placement id here>";
        Advertisement.Initialize(gameId, true);
    }

    void ShowAd()
    {
        if (Application.internetReachability == NetworkReachability.NotReachable)
        {
            //Give internet connectivity feedback here
        }
        else
        {
            ShowOptions options = new ShowOptions();
            options.resultCallback = HandleShowResult;
            Advertisement.Show(placementId, options);
        }
    }

    void HandleShowResult(ShowResult result)
    {
        switch (result)
        {
            case ShowResult.Finished:
               //Advert completed
            break;

            case ShowResult.Skipped:
               //Advert skipped
            break;

            case ShowResult.Failed:
               //Advert failed
            break;
        }
    }
}
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine。广告;
使用UnityEngine;
使用UnityEngine.UI;
使用UnityEngine.EventSystems;
公共类玩家控制器:单行为
{
串配子体;
布尔测试模式;
字符串placementId;
void Start()
{
配子体=”;
testMode=false;
placementId=“”;
advision.Initialize(gameId,true);
}
void ShowAd()
{
if(Application.internetReachability==NetworkReachability.NotReachable)
{
//在此处提供internet连接反馈
}
其他的
{
ShowOptions=新的ShowOptions();
options.resultCallback=HandleShowResult;
广告。展示(placementId,选项);
}
}
void HandleShowResult(显示结果结果)
{
开关(结果)
{
案例展示结果。已完成:
//广告完成
打破
案例显示结果。已跳过:
//跳过广告
打破
案例显示结果。失败:
//广告失败
打破
}
}
}

错误基本上会准确地告诉您该做什么:

ShowOptions.resultCallback”已过时:“实现IUnityAdsListener和调用播发.AddListener()”

在中,您的代码采用了一个完整的示例:

public class PlayerController : MonoBehaviour, IUnityAdsListener
{
    private string gameId;
    private bool testMode;
    private string placementId;

    private bool adsAreReady;

    private void Start()
    {
        gameId = "<my id here>";
        testMode = false;
        placementId = "<placement id here>";

        // WAIT FOR ADS
        Advertisment.AddListener(this);

        Advertisement.Initialize(gameId, true);
    }

    public void ShowAd()
    {
        if (Application.internetReachability == NetworkReachability.NotReachable)
        {
            //Give internet connectivity feedback here

            return;
        }

        if(!adsAreReady)
        {
            // Give not ready yet feedback

            return;
        }

        ShowOptions options = new ShowOptions();
        Advertisement.Show(placementId, options);
    }

    // Implement IUnityAdsListener interface methods:
    public void OnUnityAdsDidFinish (string placementId, ShowResult showResult) 
    {
        // Define conditional logic for each ad completion status:
        switch(showResult)
        {
            case ShowResult.Finished:
                // Reward the user for watching the ad to completion.
                break;

            case ShowResult.Skipped:
                // Do not reward the user for skipping the ad.
                break;

            case ShowResult.Failed:
                Debug.LogWarning (“The ad did not finish due to an error.);
                break;
        }
    }

    public void OnUnityAdsReady (string placementId) 
    {
        if (placementId != myPlacementId) return;

        adsAreReady = true;
    }

    public void OnUnityAdsDidError (string message) 
    {
        // Log the error.
    }

    public void OnUnityAdsDidStart (string placementId) 
    {
        // Optional actions to take when the end-users triggers an ad.
    } 
}
公共类PlayerController:MonoBehavior,IUnityadListener
{
私有字符串配子ID;
私有布尔测试模式;
私有字符串placementId;
私人bool adsAreReady;
私有void Start()
{
配子体=”;
testMode=false;
placementId=“”;
//等待广告
Advertisment.AddListener(这个);
advision.Initialize(gameId,true);
}
公开无效ShowAd()
{
if(Application.internetReachability==NetworkReachability.NotReachable)
{
//在此处提供internet连接反馈
返回;
}
如果(!adsAreReady)
{
//给出尚未准备好的反馈
返回;
}
ShowOptions=新的ShowOptions();
广告。展示(placementId,选项);
}
//实现IUnityadListener接口方法:
UNITYADSDIDFinish上的公共void(字符串placementId,ShowResult ShowResult)
{
//为每个ad完成状态定义条件逻辑:
开关(显示结果)
{
案例展示结果。已完成:
//奖励观看广告直至完成的用户。
打破
案例显示结果。已跳过:
//不要奖励跳过广告的用户。
打破
案例显示结果。失败:
Debug.LogWarning(“由于错误,ad未完成”);
打破
}
}
公共void onUnityadReady(字符串placementId)
{
如果(placementId!=myPlacementId)返回;
adsAreReady=true;
}
public void OnUnityAdsDidError(字符串消息)
{
//记录错误。
}
公共void OnUnityAdsDidStart(字符串placementId)
{
//最终用户触发广告时要采取的可选操作。
} 
}

请注意在您的代码中,您从未调用过
ShowAdd
。它可能应该是
public
,并从其他地方调用。

谢谢!是的,我确实尝试过在代码中实现API建议,但这对我来说是全新的(它没有显示任何广告)…我可以从您的解决方案中看出,我可能对它的解释有点错误。谢谢。此部分:“Advertisent.AddListener(This);”。返回一个错误:“参数1:无法从'NewAdvertestest'转换为'UnityEngine.Advertises.IUnityAdsListener'“我遗漏了什么吗?可能该类的
IUnityAdsListener
实现应该是
公共类NewAdvertsTest:monobhavior,IUnityAdsListener