ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
-----------------------------------------------------------------------------------
課金機能は前々から実装してみたいと思っていたのですが、なんか難しそうなので敬遠していました。でもUnity IAPというのを使うと拍子抜けするくらい簡単でしたよ。初心者の人にも分かりやすいように解説したいと思いまーす。
インスペクターの横のサービスというタブをクリック。サインインしろ言われるのでサインインする。
プロジェクトID作れとか言われる。知らんけどcreate押したら次へ進んだ。
In-App-Purchasing のOFFをクリックしてONにする。
Enableをクリック。
13歳以下をターゲットにしとるのか?してるならチェック。Continue
なんか色々エラーを吐かれる。おかしい。私の見ているサイトではこんなの出なかったのに。1つ目のエラー
「IAPパッケージ3.0以降を実行している場合は、インポートボタンをクリックしないでください。プロジェクトが破損する可能性があります。インストールされているIAPパッケージが2.2.2以下の場合にのみ、インポートボタンをクリックしてください。パッケージマネージャーを参照してください。」
window-->Package Manager 見てみると2.2.1やった。2.2.2以下やからOKってことやんな?
----------------------------------------------2022.1.17 追記
Unityのバージョン上げると、IAPパッケージも上がります。上のエラー文でプロジェクトが破損するって警告してるけど、警告通りぶっ壊れました。ここのパッケージ番号を見て、2.2.2以上なら▶をクリックして、IPAパッケージを2.2.2以下にダウングレードすればOK。
----------------------------------------------2022.1.17 追記
2つ目のエラー
「収益データはUnityアナリティクスに送信されます。 」
「既存のキーのサーバーでエラーチェックが行われました。 もう一度やり直してください。このアプリケーションのGoogle公開鍵を入力して、収益数がGoogleの確認済み支払いを反映していることを確認してください。 」
調べたところ、
--------------------------------------------------------------------
googleにapk登録して公開鍵を取る。
Unity Dashboardの「Analytics Settins」のGoogle License Keyを登録する所にコピペ。(ここのEnterKeyの所に入れてもダメらしいよ。)
--------------------------------------------------------------------
公開鍵なんぞ知らん。そもそもunity analyticsって何なのさってことやけど、なんかプレイヤーの動向を把握したり分析したりするやつだそうです。別にそんなんしないのでもう放置。とにかくimportをクリック。行け
import終わるとpluginsにunityPurchasing いうのができる。
windowからunity IAP --> Android --> でTarget Google Play にチェック。元から入ってたけど。
Create IAP Buttonで課金ボタンを作るよ。これを押すと課金されて私の私腹が肥えるのですね!
「出題パターンを増やす」という課金ボタンを配置。このアプリは学習アプリで無料で使えるけれど、もっといろんな問題を勉強したい人は課金ボタン押してね!っていうことなのです。
IPA Catalogをクリックして色々設定します。
プロダクトIDは適当でええのかな?スリーセブンにしてやろう。
薬草みたいに何度も購入するようなアイテムだとConsumable。
広告消すみたいに1回購入したらずっと効果が続くみたいなのはNon Consumable。
subscriptionはまあ月額課金みたいなのかな。
Locale はJapanese。
Title はアプリストアに表示される製品の名前。
Description はこのアイテムの説明。
Priceは価格。
Automatically initialize UnityPurchasingはよく分からんけど自動的に初期化するそうです。recommendedでお勧めされてるのでチェックを入れておく。window閉じる。
Product ID にさっきのカタログ(777)がいるので選択。
この課金ボタンを押した時の処理を書く。
public class Mains : MonoBehaviour { //課金しているかどうか判別 int KakinFLG = 0; //UIを見せたり隠したりするのに使う。スケール0にさせて隠す GameObject ActPanel; void Start() { //課金状況データを読み込む KakinFLG = PlayerPrefs.GetInt("KakinData", 0); //課金されてるなら課金ボタンを消しとく if (KakinFLG == 2) { ActPanel = GameObject.Find("BuyButton"); ActPanel.transform.localScale = Vector3.zero; //見えなくしておく } } //-------------------------------------------------------------課金ボタン押した時の処理 public void PushKakin() { //課金フラグ立てる KakinFLG = 2; //課金データに課金されたことを記録 PlayerPrefs.SetInt("KakinData", KakinFLG); //課金ボタンさんさようなら ActPanel = GameObject.Find("BuyButton"); ActPanel.transform.localScale = Vector3.zero; //見えなくしておく } //-------------------------------------------------------------課金ボタン押した時の処理 }
あとは課金フラグが立ってるかどうかで処理を判別すればOK。
if(KakinFLG==0){広告表示とか}
if(KakinFLG==2){広告非表示とか}
スクリプト書いたらそれをボタンに反映させましょう。
On Purchase Complete の+クリック。
Noneって所にさっきのスクリプトをアタッチしてるオブジェクトD&D。
Functionのところにさっき書いたPushKakin()って関数があるのでそれ選択したらOK。
これで課金ボタン押したらこんなのが出てきてBuyを押したらPushKakin()関数が実行され、計画通り。ニヤリ。
でもこれで終わりではありません。
google developers consoleのほうで色々やることがあるそうです。
次の記事へ続きます。
------------------------------------------------------------------------------------