Google Playで課金実装していないのに、「アプリ内課金あり」と表示されてしまう

Google Play アプリ内課金あり

実装環境

  • Unity2021.3.14f1
  • Firebase10.3.0
  • AdMob7.20

上記のように課金機能を実装していないのに、「アプリ内課金あり」と表示されてしまいました。
※しかもなぜか、PCのブラウザでGooglePlayを見ると「アプリ内課金あり」は表示されませんでした。

FirebaseやAdMobを入れた際になんらかの原因で課金ありと認識されてしまった可能性がないか調べたところ、Unity Package Managerから、In App Purchasingを削除したところ、無事GooglePlayから「アプリ内課金あり」は消えていました。

AndroidManifest.xmlの下記パーミッションを削除すれば解消されるケースもあるようですが、自分の場合はもともとBILLINGパーミッションの記載はなかったのでこちらの方法にいきつきました。

<uses-permission android:name="com.android.vending.BILLING" />

参考になれば嬉しいです。

Unity2019 2.12f1で、Androidビルド時に「Shader compiler: Compile Hidden/CubeBlend – Pass 0, Fragment Program: Internal error, unrecognized message from the shader compiler process. Please report a bug including this shader and the editor log.」

環境

  • Unity2019 2.12f1
  • MacOS 10.15.1
  • Androidビルド

Androidでいつものようにビルドしていると、下記エラーで表示される

Shader compiler: Compile Hidden/CubeBlend - Pass 0, Fragment Program: Internal error, unrecognized message from the shader compiler process.  Please report a bug including this shader and the editor log.

ググると下記記事に参考になりました。

https://forum.unity.com/threads/unity-2019-2-7-build-ios-crashes-in-shader-compile.757754/

Unity2019 3.0(beta)から、UnityShaderCompilerファイルをコピーし、
Unity2019 2.12f1のUnityShaderCompilerファイルを上書きすれば解決するとの事。

こういうフォルダにはいっている→「/Applications/Unity/Hub/Editor/2019.2.12f1/Unity.app/Contents/Tools/UnityShaderCompiler」

実際やってみたけど。
本当にエラーがなくなりました。

また、上記フォーラムにありがたいことのUnity2019 3.0(beta)のUnityShaderCompilerだけ添付してくれている人もいる。(Unityごとダウンローづする手間が省ける)

Androidアプリのよくあるイカしたアプリのダウンロードボタンの作成方法! と、流入元分析!

クレカの有効期限切れで、、サーバー落ちてましたw。。

SEOだいぶ下がったか、、泣

というわけで、泣く子も黙るわけでもない久々の更新

アプリDLボタンのバッジ作成ツール

ここからバッジをサクッと生成できるんす!

https://play.google.com/intl/ja/badges/

UTMソース や、UTMキャンペーン を指定して、

どのブログや、SNSから流入してDLしたなどがわかるようになってます。

レポートは、Google Play Consoleの下記画面から見れるようです。

UTMタグで獲得チャネルの分析

https://developers.google.com/analytics/devguides/collection/android/v4/campaigns#google-play-url-builder

GooglePlay向けのUTMタグ生成サイトが、404になっていて、
どこで、android用のUTMタグの正しい形式を確認すればとおもっていましたが、バッジ作成ツールで生成すればよかったんですね。
先程の、バッジツールで、UTMソースや、キャンペーンを指定するとタグが反映されるので、
そちらでわかります。


<a href='https://play.google.com/store/apps/details?id=[パッケージ名]&utm_source=[UTMソース]&utm_campaign=[UTMキャンペーン]&pcampaignid=MKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1'><img alt='Google Play で手に入れよう' src='https://play.google.com/intl/ja/badges/images/generic/ja_badge_web_generic.png'/></a>

この部分。


https://play.google.com/store/apps/details?id=[パッケージ名]&utm_source=[UTMソース]&utm_campaign=[UTMキャンペーン]

他にも便利なツールが色々

こちらはiOS/Androidのバッジも作れるすぐれもの!

http://mama-hack.com/app-reach/

関係ありそうなサイト一覧

UnityAndroidで、下記エラーがSDKやなにかを入れたタイミングでエラーを履くようになった。

確認環境
* Unity2017 2.0f1
* Gradleビルド

こんなエラーや、


Build failure com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexException: Multiple dex files define Landroid/support/annotation/AnimRes; See the Console for details.

こんなエラーや、


UnityEditor.BuildPlayerWindow+BuildMethodException: 3 errors at UnityEditor.BuildPlayerWindow+DefaultBuildMethods.BuildPlayer (BuildPlayerOptions options) [0x00207] in /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPlayerWindowBuildMethods.cs:172 at UnityEditor.BuildPlayerWindow.CallBuildMethods (Boolean askForBuildLocation, BuildOptions defaultBuildOptions) [0x00050] in /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPlayerWindowBuildMethods.cs:83 UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

こんなエラーや、


CommandInvokationFailure: Gradle build failed. /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/bin/java -classpath "/Applications/Unity/PlaybackEngines/AndroidPlayer/Tools/gradle/lib/gradle-launcher-2.14.jar" org.gradle.launcher.GradleMain "assembleRelease" stderr[ FAILURE: Build failed with an exception.

なにか原因かわからないため、解決するためにやったこと。

  • Player Settings の Publishing Setting > Custom Gradle Templateにチェックをいれ、
    カスタムのgradleをいじれる、mainTemplateをさわって、また戻したり。

  • Unityを再起動したり

  • Android SDKのToolsのAPIバージョンをあげたり。
    https://answers.unity.com/questions/1435579/how-can-i-fix-this-error-unityeditorbuildplayerwin.html

  • https://issuetracker.unity3d.com/issues/android-project-with-iap-plugin-fails-to-build-with-gradle-release-mode-only-and-throws-java-dot-io-dot-ioexception

Unityのバージョンを疑ったり

で、何かのタイミングで、エラーがでなくなり、無事APKファイルが履かれました…!

Unity + NGUI の 「UI Button」のOnClickイベントをスクリプトで登録する方法

タイトルの通り、UnityのNGUIで、「UI Button」のOnClickイベントをスクリプトで登録する方法について

NGUIの便利なUIButtonですが、
スクリプトでOnClickのイベントを登録した事がなかったですが、
色々しらべたところやり方が分かったのでメモします!

下記がそのソース。

GameManager.cs


// イベントを登録したいボタンのオブジェクト GameObject btnObj; // NGUIのUI Button UIButton btn = btnObj.GetComponent<UIButton>(); // イベントデリゲートを用意 EventDelegate btnEvent = new EventDelegate(); // このクラスのOnClickというメソッド btnEvent.Set(this,"OnClick"); // 同じイベントが複数入ってしまうことを避けるため一旦イベントをクリア btn.onClick.Clear(); // イベントを追加 btn.onClick.Add(btnEvent); // NGUIのオブジェクトに子として追加 NGUITools.AddChild (nguiParentObj, btnObj);

以上です!

また、

btn.onClick.Clear();

は、Unityエディタ上で何回も実行などしていると、
イベントがどんどん増えてしまうので、念のためリセットします。
ここらへんは環境にあわせて適宜調整してください。

ググったんですが、日本語の情報がなかったので、
備忘録のためメモ。

UnityのNGUIで「ArgumentException: Input Axis Mouse ScrollWheel is not setup.〜」と出たら

Unity5.x + NGUIを使っている環境で、別でキーボードの操作ロジックを追加していたら下記のエラーに遭遇!


ArgumentException: Input Axis Mouse ScrollWheel is not setup. To change the input settings use: Edit -> Project Settings -> Input UICamera.<GetAxis>m__24 (System.String axis) (at Assets/NGUI/Scripts/UI/UICamera.cs:172) UICamera.ProcessEvents () (at Assets/NGUI/Scripts/UI/UICamera.cs:1960) UICamera.Update () (at Assets/NGUI/Scripts/UI/UICamera.cs:1907)

というエラーがNGUIのUICameraででたら、

下記Scrollの項目を空にすると消えます!

参考サイト:(http://www.tasharen.com/forum/index.php?topic=8064.0)[http://www.tasharen.com/forum/index.php?topic=8064.0]


ArgumentException: Input Axis Vertical is not setup. To change the input settings use: Edit -> Project Settings -> Input UICamera.<GetAxis>m__24 (System.String axis) (at Assets/NGUI/Scripts/UI/UICamera.cs:172) UICamera.GetDirection (System.String axis) (at Assets/NGUI/Scripts/UI/UICamera.cs:1733) UICamera.ProcessOthers () (at Assets/NGUI/Scripts/UI/UICamera.cs:2352) UICamera.ProcessEvents () (at Assets/NGUI/Scripts/UI/UICamera.cs:1955) UICamera.Update () (at Assets/NGUI/Scripts/UI/UICamera.cs:1907)

の場合も、同様に、
Verticalの項目を空にすると、消えました!

cocos2d-x(c++) で、int(整数)をstring(文字列)に変換

cocos2d-x(c++) で、intをstring(文字列)に変換

環境 cocos2d-x 3.14(c++)

StringUtils::toString()で、int型からstring型に変換できる。

int hogeInt = 123;
string hogeStr = StringUtils::toString(hogeInt);

で、下記でもできるのですが、androidでビルドするとエラーになるので、
下記を使う場合はご注意を。


string hogeStr = std::to_string(123);

cocos2d-x v3で、アニメーション終了後に指定の関数を実行する

cocos2d-x v3で、移動アニメーションのあとに、指定の関数を実行するサンプルコード

今回はアニメーション終了後に、同じクラス内の関数を呼び出す例です。
argA,argBは、指定の関数に引数を引き継ぐためのものです。

下記はcocos2d-x バージョン3系の書き方です。


// 移動アニメーション auto moveAction = MoveTo::create(1.2f,Vec2(sprite->getPositionX() + toPosX,sprite->getPositionY() + toPosY)); // ラムダ式でコールバックを設定する auto callback = CallFuncN::create([this,argA,argB](Ref *sender){ // 同じクラス内のhogeMethodをアニメーション終了後に呼ぶ this->hogeMethod(argA,argB); }); auto seq = Sequence::create(moveAction,callback, nullptr); sprite->runAction(seq); // 〜 省略 〜 void hogeMethod(int argA,int argB){ // アニメーション完了後の処理 }

味噌は、thisで、自分を渡し、同じクラスのと、argA,argBで好きな引数を持たせられる事。

Unity5(2D)でBouncinessを設定しているのに、跳ね返らない時がある

unity5_bounce

跳返したいボールがありそれのcolliderに、

  • Friction 0
  • Bounciness 1

unity5_bounce

で設定しても跳ね返らない事があり、
なんでだろうとしらべたところ。

物理挙動の環境設定の項目の
Edit > Project Setting > Physics2Dの項目の

Velocity Threshold のデフォルトの閾値が1のため、
小さすぎる速度の場合に跳ね返らないようになっていました。

unity5_bounce2
unity5_bounce

で、Velocity Thresholdを0.1等にすると解決!

ググっても情報がなかったので、下記マニュアルが大変参考になりました。!

参考

https://docs.unity3d.com/Manual/class-Physics2DManager.html

Unityのバージョンや、Physics2D や3D用のPhysicsでは項目名が違うのでご注意!