AdMob と Nifty Cloud のプッシュ通知を共存させる [Unity]

下記の条件でNifty Cloudのプッシュ通知を使おうとしてドハマりしてしまったので、対策した方法をメモに残しておきます。

環境:
・Unity 5.4.3f1
・Google Mobile Ads Unity Plugin 3.0.5

上記環境で mobile backend のUnity用SDK「NCMB.2.2.0」をインストールして、Android用にビルドしたところ、

Uncaught translation error: java.lang.IllegalArgumentException: already added: ~~

という内容のエラーが出てビルドで出来ませんでした。
調べてみると、クラスファイルが重複しているらしく、いろいろ調べつつ試してみました。

結果としては、下記の方法でビルドが成功し、AdMobとPush通知も動作確認できました。
※いろいろ試している内に偶然できたその場しのぎな方法なので、もしこの問題でお困りの方は参考までにということで。。

まず「NCMB.2.2.0」でインポートした下記ファイルを削除します。
 ・Assets/Plugins/Android/android-support-v4.jar
 ・Assets/Plugins/Android/google-play-services.jar
 ・Assets/Plugins/Android/res/values/version.xml

次に
・Assets/PlayServicesResolver/Editor/AdMobDependencies.cs
のAdMobDependencies関数内に下記のコードを追加します。

svcSupport.DependOn("com.google.android.gms", "play-services-gcm", "LATEST");

次に、Unityのメニューから下記を実行します。
Assets > Google Play Services > Resolve Client Jars

すると下記画像のように「play-services-gcm-10.0.1.aar」が出来ます。

この状態でUnityからAndroid用にビルドすると成功して、AdMobもPush通知も動作しました。

【補足】
もし、「play-services-gcm-10.0.1.aar」はやっぱりいらないということになると、aarファイルを削除してもすぐに同ファイルが復活してしまいますので、復活させないようにするには下記の手順が必要です。

 ・「play-services-gcm-10.0.1.aar」を削除する。
 ・「Assets/PlayServicesResolver/Editor/AdMobDependencies.cs」で先ほど追加したコードを削除
 ・「ProjectSettings/GoogleDependencyAdMobUnity.xml」のそれらしい箇所を削除

SanDisk の USBメモリを試す

Windows の Unity で開発しているプロジェクトを iPhone で実機チェックする場合、毎回ビルドしたデータを Windows から USBメモリ経由で Mac に転送しているのですが、この Mac へのデータ転送の時間をちょっとでも短縮させようと思い、USB3.0用のUSBメモリを買って転送時間を比べたところ、なんと今まで使っていたUSB2.0用のUSBメモリよりも少し遅くなってしまいました。

ハンカチを噛みしめて泣きながら調べたところ、USBメモリは種類によって速さはピンキリということが分かったので、高速タイプのUSBを探して購入してみました。

SanDisk Extreme USB3.0 フラッシュメモリー 16GB
SanDisk Extreme USB3.0 フラッシュメモリー 16GB

新しく買ったのは上記のUSBメモリです。

試してみると新しく買ったSanDiskのUSBメモリの方が圧倒的に早くなっており、こんなに違うのかとびっくりしたので記念にここに記しておきます。

【転送にかかった時間】

Win → USBメモリ   USBメモリ → Mac
USB 2.0(メーカー不明) 83 秒 29 秒
USB 3.0 E社の安いやつ 106 秒 13 秒
USB 3.0 SanDisk Extreme 17 秒 16 秒

仕事でもよくUSBメモリを使うので、これはいい買い物でした!

GoKit で Time.timeScale を無視させてトゥイーン [Unity]

Unity のトゥイーンライブラリ GoKit で「Time.timeScale」に依存することなくトゥイーンアニメーションできる方法にたどり着くまでにちょっと時間がかかったので、メモしておきます。

Go.to(transform, 1f, new GoTweenConfig()
     .position(new Vector3(0, 0, 0))
     .setUpdateType(GoUpdateType.TimeScaleIndependentUpdate)
);

上記コードの赤字の部分をいれることで、「Time.timeScale」に影響されることなく、アニメーションしてくれます。

「TimeScaleIndependentUpdate」って名前がかっこいいなあ。

新作アプリ「サッカーピープル」 予約受付開始!

現在制作中のサッカーゲームアプリ「サッカーピープル」が「予約トップ10」で予約できるようになりました!

下記ページでゲームのスクリーンショット等も公開しておりますので興味のある方はどうぞ!

[予約ページ]
 ・サッカーピープル iOS
 ・サッカーピープル Android

予約ページ用に作った映像はこちらです。

最近は、App Store や Google Play でサッカーのゲームアプリがでる度にドキドキしながら内容を確認しているんですが、
今のところ「サッカーピープル」のように選手を引っ張って動かせたり、選手を2人以上同時に動かせたりするようなゲームは見つかってないので、少しホッとしております。

このゲームでは、11人の選手をいつでも好きな位置に移動できるように、あと好きな方向に好きな強さでパスが出せるようにすることを最優先で考えていたら、結果的に選手が豆粒のように小さくなってしまいましたw

見た目の楽しさ(感情移入しやすさ)と操作性を天秤にかけて、僕は「こんな操作感のサッカーゲームがやりたかったんだ!」ということで、今回は操作性の方に全力で振り切っております!

操作になれれば流れるようなパスワークからゴールが決めれたりして楽しいので、こういうのが好きな(マニアックな)人が楽しいと思ってやりこんでくれれば理想的だと思いつつも、どれくらいの人がこの豆粒を受け入れてくれるのかドキドキしながら開発を進めているところでございます。

パーティクルの色をスクリプトで変える [Unity]

Unityでパーティクルの色を変える場合、ちょっとてこずったのでポイントをまとめました。

下図の赤線部のように Shader が Particles/Alpha Blended Premultiply になっている場合は下記のコードで色指定できます。

この場合は赤になります。
※コードの gameObject のインスペクタに ParticleSystemコンポーネント が Add されています。

gameObject.GetComponent<ParticleSystem>().startColor = Color.red;

次に、3Dオブジェクトをパーティクルさせる場合は、下図の赤線部のようにShaderを Standard 等に変更することが多いと思いますが、その色をスクリプトで変えるにはマテリアルの色を変更することになる為、下記のコードで色指定できます。

gameObject.GetComponent<Renderer>().material.SetColor("_Color", Color.red);

Shader の種類によっては "_Color" が使えない場合があります。
※詳しくは下記の記事に書かれていました。

 ・マテリアルのプロパティをスクリプトから変更【Unity】

ABOUT

GAMES

サッカーピープル
スライムパズルストーリー

倉庫番ライクパズルと
冒険のゲームです
※制作中

止まるなコロッコ2
止まるなコロッコ2

止まるなコロッコの
続編です
iOS版 / Android版

止まるなコロッコ
止まるなコロッコ

石ころのコロッコが転がるように
セッティングする脱出ゲームです
iOS版 / Android版

コロッコトロッコ
コロッコトロッコ

石ころのコロッコを転がしながら
サラリーマンを会社へ運ぶゲームです
iPhone版 / Android版

TAGS

SNS

FEEDS