質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
AdMob

AdMobは、事前に指定した条件に従ってアプリに広告を表示するGoogleのサービス。開発者の向けのサービスで、広告を掲載することにより、収益を得ることが可能です。その他、見た目や雰囲気などアプリに合う広告に変更したり、広告表示の場所を指定することもできます。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

2527閲覧

Unity アダプティブバナーについて疑問を解消したい。2

andoud0220

総合スコア8

AdMob

AdMobは、事前に指定した条件に従ってアプリに広告を表示するGoogleのサービス。開発者の向けのサービスで、広告を掲載することにより、収益を得ることが可能です。その他、見た目や雰囲気などアプリに合う広告に変更したり、広告表示の場所を指定することもできます。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2021/06/01 21:43

前提・実現したいこと

下記リンク先で質問した続きです。
前の質問 Unity アダプティブバナーについて疑問を解消したい。

以前回答頂いた方ありがとうございました。

下記のサンプルを参考にしてバナーを表示させてみましたが、エラーが解消されませんでした。
https://github.com/googleads/googleads-mobile-unity/releases/tag/v6.0.0

GameObjectにアタッチさせる必要があると言うことですが理解が及んでいません。

よろしくおねがいします。

発生している問題・エラーメッセージ

You are trying to create a MonoBehaviour using the 'new' keyword. This is not allowed. MonoBehaviours can only be added using AddComponent(). Alternatively, your script can inherit from ScriptableObject or no base class at all UnityEngine.MonoBehaviour:.ctor () ButtonBehaviour:.ctor () GoogleMobileAds.Unity.BannerClient:CreateButtonBehavior () GoogleMobileAds.Unity.BannerClient:ShowBannerView () GoogleMobileAds.Unity.BannerClient:LoadAd (GoogleMobileAds.Api.AdRequest) GoogleMobileAds.Api.BannerView:LoadAd (GoogleMobileAds.Api.AdRequest) AdaptiveBanner:RequestBanner () (at Assets/MyAssets/Scripts/AdaptiveBanner.cs:40) AdaptiveBanner:Start () (at Assets/MyAssets/Scripts/AdaptiveBanner.cs:12)

該当のソースコード

c#

1using UnityEngine; 2using System; 3using GoogleMobileAds.Api; 4 5public class AdaptiveBanner : MonoBehaviour 6{ 7 private BannerView bannerView; 8 9 // Use this for initialization 10 void Start() 11 { 12 RequestBanner(); 13 } 14 15 private void RequestBanner() 16 { 17 // These ad units are configured to always serve test ads. 18#if UNITY_EDITOR 19 string adUnitId = "unused"; 20#elif UNITY_ANDROID 21 string adUnitId = "ca-app-pub-3212738706492790/6113697308"; 22#elif UNITY_IPHONE 23 string adUnitId = "ca-app-pub-3212738706492790/5381898163"; 24#else 25 string adUnitId = "unexpected_platform"; 26#endif 27 28 // Clean up banner ad before creating a new one. 29 if (this.bannerView != null) 30 { 31 this.bannerView.Destroy(); 32 } 33 34 AdSize adaptiveSize = 35 AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(AdSize.FullWidth); 36 37 this.bannerView = new BannerView(adUnitId, adaptiveSize, AdPosition.Bottom); 38 39 // Load a banner ad. 40 this.bannerView.LoadAd(CreateAdRequest()); 41 } 42 43 private AdRequest CreateAdRequest() 44 { 45 return new AdRequest.Builder() 46 .AddKeyword("unity-admob-sample") 47 .Build(); 48 } 49 50 51 52 53}

試したこと

下記のように変数に格納して見ましたがエラーは消えませんでした。

c#

1private AdRequest adRequest; 2 3private AdRequest CreateAdRequest() 4 { 5 adRequest = new AdRequest.Builder() 6 .AddKeyword("unity-admob-sample") 7 .Build(); 8 9 return adRequest; 10 }

補足情報(FW/ツールのバージョンなど)

Unity             
2020.3.9f1

Google Mobile Ads Unity Plugin
v6.0.0

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

GitHub - googleads/googleads-mobile-unity: Official Unity Plugin for the Google Mobile Ads SDK 触ってみました。すみません、確かに前回のアドバイスは参考にならないですね。改めて回答します。

this.bannerView.LoadAd(CreateAdRequest()) が呼ばれた際に GoogleMobileAds.Unity.ButtonBehaviour がnewで生成されているのが原因のようです。

その上で解決方法を2つ示します。

① そもそも今回発生している警告文(You are trying to create a MonoBehaviour using the 'new' keyword. ...)は動作に影響を及ぼさないので、無視してこのまま使い続ける。

② 警告文は絶対に消したいので、GoogleMobileAds.Unity.ButtonBehaviour からMonoBehaviourの継承を外す(おそらく問題はず。一応動作確認済み)。

以下手順です。

  1. GoogleMobileAds-v6.0.0.unitypackage は利用しません。もし導入済みでしたら該当するフォルダは一旦削除します。

・Assets/ExternalDependencyManager
・Assets/GoogleMobileAds
・Assets/Plugins

  1. Google Mobile Ads Unity Plugin をgit clone(zipでもOK)して source/plugin/Assets 以下の3つのフォルダ(フォルダ名は1.と同様)を自分のunityプロジェクトに手動でコピーします。

  2. コピーした Assets/GoogleMobileAds/Platforms/Unity/ButtonBehaviour.cs: MonoBehaviour をコメントアウトする。

C#

1public class ButtonBehaviour /*: MonoBehaviour*/ 2{ 3 ... 4}

※ ButtonBehaviour.csのMonoBehaviourが必要だった場合はMonoBehaviourのコメントアウトを元に戻して、BannerClient.cs 62行目を buttonBehaviour = new GameObject().AddComponent<ButtonBehaviour>(); でも対応可能。


①の場合は、該当箇所がdllになっているので手を加えられません。ですが本SDKはdllのソースコードがgitで公開されています。なので②の場合は、dllを一旦削除(重複してしまうので)してソースコードに置き換えています。

個人的には①で問題ないと思います。気になるようでしたら②をお試し下さい。
公式のgitのsampleのHelloWorld(googleads-mobile-unity/samples/HelloWorld/)で動作確認済みです。

投稿2021/06/03 07:07

編集2021/06/03 07:18
u824

総合スコア112

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

andoud0220

2021/06/03 21:54

回答ありがとうございます。 自分の方でも➁の方法で警告が出なくなりました。 お手数おかけしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問