こんにちは、シロツグです。
Unityを使ってAndroid端末向けにアプリを作っているとき、
AdMob(インタースティシャル)を導入して再生ボタンを押したらこんなエラーが出ました。
You are trying to create a MonoBehaviour using the 'new' keyword. (以下省略)
ほぁ、なんじゃこりゃ?
どれどれ調べてみよう、ほうほう、よくわからん。
結果的にどこをどうすればいいかというと
①空のオブジェクトを作成
②作った空のオブジェクトの名前を変更(例、test_obj)
③[Assets]→[GoogleMobileAds]→[Platforms]→[Unity]の中にある[ButtonBehaviour.cs]を作った空のオブジェクト(test_obj)にアタッチする。
④[Assets]→[GoogleMobileAds]→[Platforms]→[Unity]の中にある。
[InterstitialClient.cs]の中身を直します。
buttonBehaviour = new ButtonBehaviour(); って書いてあるところ。
これを、
ButtonBehaviour buttonBehaviour = GameObject.Find("test_obj").GetComponent<ButtonBehaviour>();
に変えます。
するとエラーは消えました。
さて、何が問題だったのでしょうか?
シロツグ、正直何が問題だったのかわかってません(笑)
想像ですが、おそらくUnityでは実行できないカタチで書かれ方だったのかな?と思ってます。
詳しい方、教えていただけたら幸いです。
まぁ何はともあれ、警告が解消されて動いたのでまぁ良かったのかな?と
未来のシロツグ、また同じエラーが出ることであろう。
この日記を読めば解決だ。
あ、そうそう。
AdMobを導入した時点で、JAVA_HOMEのエラーが出た方。
そのエラーは、
Unityの[編集]→[環境設定]→[外部ツール]の中の
下のほうにある
JDK Installed with Unity (recommended)
Android NDK Installed with Unity (recommended)
Gradle Installed with Unity (recommended)
終了時にGradleデーモンを停止
この4つのチェックを全部外して、もう一回全部チェックして
画面左上の[アセット]から
[External Dependency Manager]→[Android Resolver]→[Force Resolve ]
をクリックしたらエラーはなくなりました。
参考になるかわからないけど、こんな感じで解決しました。
間違ってたら詳しい方、教えてください。
では、また。