Unityでimport small assetsが何度も出て困る問題

以前、Unityで何度もimport small assetsという窓が出て困っていました。

いろいろと削除しながらどれが原因のAssetなのか調べていったところ、GoogleMobileAds.frameworkが原因だとわかりました。

EditorからGoogleMobileAds.frameworkを右クリックしてReimportすることで上記の現象は起きなくなりました。

同様の問題が起きて困っておられる方がいたらお試しください。

UnityでFirebase Analyticsを入れた時にMach-O Linker Errorが出て困った

自分のUnityアプリにFirebase Analyticsを入れることにしました。

Firebase Analyticsの導入は、以下のリンクパッケージをダウンロードしてimportするのみ。

https://firebase.google.com/docs/unity/setup

Android版は特に問題なく導入完了。

しかしiOS版のビルドでMach-O Linker Errorというエラーが出ました。

詳細を見ると、どうも googletoolboxformac.framework というのが見つからなくてエラーを吐いているみたい。

解決方法

いったん、Unity-iPhone.xcodeprojを閉じて、Unityのプロジェクトをビルドし直し、その後できたUnity-iPhone.xcworkspaceの方を起動して、それをXCodeでビルドするようにしたらいけました。

参考:
stackoverflow.com

RenderTextureの描画順

Metasequireというゲームを作っている時に、RenderTextureの描画順を制御する必要がありました。

Metasequireではメタボール表現するためにトータル5パスぐらい使って描いてます。

ちなみに単純なメタボールだけなら2パスで良いんですが、陰影つけたりするのに描画回数が増えてしまっています^^;

さておき、そのときRenderTextureの描画順ってどうやって制御するんや!ってなりました。

答えとしては、ヒエラルキーからカメラを選択し、Inspectorの上のDepthの項目をいじればOKです。

f:id:wkpn:20180601121815p:plain

小さい数値ほど先に描画されるようです。



Metasequire - メタセコイア -
Metasequire - メタセコイア -
開発元:Ken Watanabe
無料
posted withアプリーチ

AdMob周りで疑問に思っていたことをGoogle Japanの担当者さんに聞いてみた。

AdMobの収益で Invalid Traffic というので見積もり収益より金額が引かれていたのですがどういうことですか?

いろいろな理由により Invalid Traffic と判定されることがあるらしいです。

例えばゲーム中にいきなり広告が出るなど、不適切なタイミングで出る広告があったりとか、ゲームの進行に不可欠なボタンの近くにバナーが設置されているとか。

そういう広告があるとAdMobから、「[重要]収益の低下を防ぐため、アプリ設定の調整が必要です」というご連絡が来ます。

そして、私のアプリもそういうメールが来ていました^^;

しかし具体的にどの部分が駄目なのかが分からなかったのでGoogleの担当者さんに問い合わせ中です。分からないときは問い合わせると良いと思います。

自分の場合は、問い合わせたものの、問い合わせたときには何故か既に意図しないクリックがシグナルとして検出されなくなっていたそうでほどなく解消しました。

あと、まったく違うケースとして、たまに競合他社を攻撃するためのクリックっていうのがあってそれを弾いていることもあるらしいです。

競合他社に広告費をいっぱい払わせるためにそういうことをするツール?かなんかがあるらしく、そういうのを検知して収益から取り除くことがあるとのこと。

対象年齢が高いゲームの広告を除去できますか?

AdMobでは現在対象年齢のカテゴリでブロックすることは、2018年6月現在はできないそうです。個別のアプリごとにブロックすることになるとのこと。
個別のアプリごとのブロックの仕方は、以下から確認できます。
support.google.com

Unityでネイティブ広告って使えますか?

2018年6月現在、Unity用にはβ版があるらしいです。使用したい場合は担当者に問い合わせが必要とのこと。

Mediation時に、Adapterを未実装だったらどうなる?

エラーになって止ったりしたら嫌だなと思っていたのですが、AdapterがなかったらAdMob側の広告が代わりに呼ばれるだけみたいです。

Mediationしているアドネットワークが、Requestに対してImpressionが少なすぎる

設定しているeCPMが低いと、そういうこともあるみたいです。

リワード広告のプリロードってどうするのがベストプラクティス?

別記事にまとめました↓
waken.hatenablog.com

Android端末にapkをインストールする

Unityで開発しているとたいていBuild And RunでAndroid端末にapkを流し込むと思うのですが、たまに既にできあがったapkを端末にインストールしたいことがあります。

そういうときはコマンドラインから、

adb install 〜.apk

とすることでインストールできます。

しかし、既にインストールしているapkだと、

INSTALL_FAILED_ALREADY_EXISTS

と言われてインストールに失敗してしまいます。

そういうときは、-r をつけて

adb install -r 〜.apk

とすると古いバージョンを上書きしてインストールしてくれます。

AdMobのpluginをバージョンアップしたらAndroid版がビルドできなくなったときの対応

AdMobのプラグインバージョンをアップデートした時に、

CommandInvokationFailure: Unable to convert classes into dex format.
C:\Program Files\Java\jdk1.8.0_92\bin\java.exe -Xmx2048M -Dcom.android.sdkmanager.toolsdir="C:/Users/MyUserName/AppData/Local/Android/sdk\tools" -Dfile.encoding=UTF8 -jar "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\sdktools.jar" -

stderr[
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/internal/zzut;
...

などと言われてAndroid版がビルドできないことがありました。

Assets -> Play Services Resolver -> Android Resolver -> Force Resolve

することでビルドできるようになりました。

f:id:wkpn:20180601115738p:plain

参考
github.com

Resolving Android Dependencies... が何度も発生する問題

AdMobを組み込んでいるアプリで、他の人と作業していて微妙に環境が違うと、

Resolving Android Dependencies...

っていうのが何度も発生するときがあります。
これがうざいときは、一度ResolveしたあとにResolveを自動でしないように設定すると良いみたいです。

Assets -> Play Serveces Resolver -> Android Resolver -> Settings

にある"Enable Auto-Resolution"をOFFに設定できますので、お試しあれ。

f:id:wkpn:20180531173445p:plainf:id:wkpn:20180531173451p:plain