Unity研究所<Unityによるゲーム開発、映像開発>

Unity初心者おやじが綴るゲームで小遣い稼ぎできるようになるまでのブログ

プライバシーポリシー

①個人情報の利用目的

「Unity研究所<Unityによるゲーム開発、映像開発>」(以下当ブログ)では、メールでのお問い合わせ、メールマガジンへの登録などの際に、名前(ハンドルネーム)、メールアドレス等の個人情報をご登録いただく場合がございます。

これらの個人情報は質問に対する回答や必要な情報を電子メールなどをでご連絡する場合に利用させていただくものであり、個人情報をご提供いただく際の目的以外では利用いたしません。

②個人情報の第三者への開示

当サイトでは、個人情報は適切に管理し、以下に該当する場合を除いて第三者に開示することはありません。

・本人のご了解がある場合

・法令等への協力のため、開示が必要となる場合

個人情報の開示、訂正、追加、削除、利用停止

ご本人からの個人データの開示、訂正、追加、削除、利用停止のご希望の場合には、ご本人であることを確認させていただいた上、速やかに対応させていただきます。

③広告の配信について

当サイトは第三者配信の広告サービス「Google Adsense グーグルアドセンス」を利用しています。

広告配信事業者は、ユーザーの興味に応じた広告を表示するためにCookie(クッキー)を使用することがあります。

Cookie(クッキー)を無効にする設定およびGoogleアドセンスに関する詳細は「広告 – ポリシーと規約 – Google」をご覧ください。

三者がコンテンツおよび宣伝を提供し、訪問者から直接情報を収集し、訪問者のブラウザにCookie(クッキー)を設定したりこれを認識したりする場合があります。

アクセス解析ツールについて

当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。

このGoogleアナリティクスはトラフィックデータの収集のためにCookieを使用しています。このトラフィックデータは匿名で収集されており、個人を特定するものではありません。この機能はCookieを無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。この規約に関して、詳しくはここをクリックしてください。

⑤当サイトへのコメントについて

当サイトでは、スパム・荒らしへの対応として、コメントの際に使用されたIPアドレスを記録しています。

これはブログの標準機能としてサポートされている機能で、スパム・荒らしへの対応以外にこのIPアドレスを使用することはありません。また、メールアドレスとURLの入力に関しては、任意となっております。全てのコメントは管理人が事前にその内容を確認し、承認した上での掲載となりますことをあらかじめご了承下さい。加えて、次の各号に掲げる内容を含むコメントは管理人の裁量によって承認せず、削除する事があります。

・特定の自然人または法人を誹謗し、中傷するもの。

・極度にわいせつな内容を含むもの。

・禁制品の取引に関するものや、他者を害する行為の依頼など、法律によって禁止されている物品、行為の依頼や斡旋などに関するもの。

・その他、公序良俗に反し、または管理人によって承認すべきでないと認められるもの。

⑥免責事項

当サイトで掲載している画像の著作権・肖像権等は各権利所有者に帰属致します。権利を侵害する目的ではございません。記事の内容や掲載画像等に問題がございましたら、各権利所有者様本人が直接メールでご連絡下さい。確認後、対応させて頂きます。

当サイトからリンクやバナーなどによって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任を負いません。

当サイトのコンテンツ・情報につきまして、可能な限り正確な情報を掲載するよう努めておりますが、誤情報が入り込んだり、情報が古くなっていることもございます。

当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。

Google Admob 広告プレースメントを使ってみた!! Reward編

Google Admob 広告プレースメントを使ってみた!! Reward編

 

今回は広告プレースメントのベータ版を使ったリワード広告の実装方法を解説する

 

リワード広告とは、ゲームのライフの回復など、動画広告を見る見返りとして何かを付与するタイプの広告となっている

 

なので、ゲームが終了したタイミングとかに挟み込むのはインタースティシャル広告と似ているが、ゲームをリトライしたいが再プレイするコインがないので獲得したいとか、プレイヤーの欲求によるボタン操作時に表示するなどとなるので、表示タイミングの仕様、動画を見た後に渡す報酬の仕様検討、スクリプト制御が必要になってくる

 

developers.google.com

 

◆実装方法

以下では、下記のような仕様でリワード広告を表示する場合の例について解説する

 

〇仕様例

・ゲームをプレイするにあたりポイントが必要だがポイントがない

・ポイントがない状態でゲームをプレイしようとすると下記のようなメッセージが表示

f:id:Harukichi:20210214135825p:plain

 

・「はい」を押すとリワード広告が表示される

【テスト広告 イメージ】実際は動画が一定時間再生される

f:id:Harukichi:20210214140222p:plain

 

・広告を見た見返りとしてポイントを付与

f:id:Harukichi:20210214140457p:plain

 

〇実装方法の例

◆概要

①広告オブジェクトをHierarchyに追加

スクリプトで広告オブジェクトの初期化とプレイヤーの操作によるメッセージ表示、広告表示および動画広告の再生が終了した場合の報酬の付与の処理を追加

③リワード広告オブジェクトのコールバック関数をInspectorにて設定

 

 

①まずは下記のように広告オブジェクトをHierarchyに追加

f:id:Harukichi:20210214140612p:plain

 

スクリプト

using GoogleMobileAds.Api;
using GoogleMobileAds.Placement;

 

//広告オブジェクトの定義
RewardedAdGameObject RewardAd;

 

ア 初期化

シーンのStart関数内で下記を実行する
void InitAds()
{
  RewardAd = MobileAds.Instance.GetAd<RewardedAdGameObject>("Rewarded Ad");

  MobileAds.Initialize((initStatus) => { });

}

 

イ プレイヤーによるゲームスタート操作 

この場合はスタートボタンを押したとき

public void OnStartButtonClick()
{

   //現在所持しているポイントは0以下?

   if (StartSceneManager.CurrentPoints <= 0)
   {

    //リワード広告をロード

    RewardAd.LoadAd();

   }
   else

    Invoke("LoadSpecSelectScene", 0.2f);

   } 
}

 

実際の動作としては、上記の操作により、下記のウインドウを表示したい

上記のリワード広告のロード後に、広告がロードされたことを確認して下記を表示するスクリプトを追加してもよいが、このあたりの処理はリワード広告の読み込み時のコールバック関数に下記を表示する関数を追加して表示している(SetActive(true)関数にて表示)

詳細は下の方のInspectorでの設定を参照

f:id:Harukichi:20210214135825p:plain

 

ウ プレイヤーによる動画広告表示操作

上記のメッセージ表示後、「はい」が押された場合に下記を呼び出して、広告を表示している

public void ShowRewardAds()
{

 RewardAd.ShowIfLoaded();
}

「はい」ボタン押したときの関数呼び出しはInspectorにて割り付け

f:id:Harukichi:20210214144111p:plain

 

 

エ 動画広告が最後まで再生され、報酬を付与する条件が成立した場合

条件がそろった場合に下記を実行

public void EarnReward()
{

 //所持ポイントを回復

 StartSceneManager.CurrentPoints = 15000;

 //所持ポイントの表示を更新

 Sm.GetComponent<StartSceneManager>().UpdateMessage();

}

 

 

③リワード広告オブジェクトのコールバック関数をInspectorにて設定

スクリプトで追加した処理については、プレイヤーの動画広告を見るための操作時と、動画広告を見終わったタイミングにて呼び出される必要があるため、Inspectorにてコールバック関数の設定を行う必要がある

 

今回は二つのコールバック関数を使用している

・On Ad Loaded()  

 広告が読み込まれたタイミングで何か処理したい場合に処理を追加

・On User Earned Reward(REWARD) 

 動画広告の再生が終わり報酬を付与するタイミングで何か処理したい場合に処理を追加 

 こちらは今回の広告の性質上処理の追加は必須(何もないと詐欺呼ばわりされるかも)

f:id:Harukichi:20210214141540p:plain

今回の例で追加している処理

・On Ad Loaded()  

 下記のウインドウをアクティブ(表示)にする処理を割り付け

 このようにすることで、広告が読み込まれたかどうかを確認する処理の追加が不要になる(Google Admobから推奨)

 だが、広告が正常に読み込まれなければ、下記のウインドウが表示されないので、その場合の対処も必要になってくるよね・・・

 f:id:Harukichi:20210214135825p:plain

 

・On User Earned Reward(REWARD)

 動画広告の表示が終了して報酬を付与する条件がそろったタイミングで、下記を呼び出し、ポイントを付与している

 EarnReward()

 

 

◆感想

 広告プレースメントを使用しない以前のスタイルだと、広告オブジェクトのコールバック関数もスクリプトで用意したり、呼び出したりする必要があり、それをInspectorで割り付ける形になったのは整理されていてわかりやすくなったように感じる

 

以上、今回はここまで

 

Google Admob 広告プレースメントを使ってみた!! Interstitial編

Google Admob 広告プレースメントを使ってみた!! Interstitial編

 

今回はInterstitial広告の実装の仕方を解説する

 

インタースティシャル広告とは、ゲームオーバーとなってタイトル画面に戻るようなときに表示される全面広告である

 

イメージ 下記はテスト時に表示されるもの

f:id:Harukichi:20210213213555p:plain

 

〇やり方

1 Hierarchyの上部の+を押して、メニューからInterstitial adを選択して、広告オブジェクトを追加

2 スクリプトで、広告オブジェクトの初期化と表示したいタイミングで表示させるメゾットを使用して表示

 

1 Hierarchyの上部の+を押して、メニューからInterstitial adを選択して、広告オブジェクトを追加

 

f:id:Harukichi:20210213214307p:plain

 

2 スクリプトで、広告オブジェクトの初期化と表示したいタイミングで表示させるメゾットを使用して表示

 

using GoogleMobileAds.Api;
using GoogleMobileAds.Placement;

 

//オブジェクト変数の定義

InterstitialAdGameObject interstitialAd;

 

//初期化 Start関数内で下記を実行

void InitAds()
{
   interstitialAd = MobileAds.Instance.GetAd<InterstitialAdGameObject>("Interstitial Ad");

   MobileAds.Initialize((initStatus) => { });

}

 

//広告を表示

 下記の例ではゲームのリザルト画面内に配置された「タイトルに戻る」ボタンを押したときに広告を表示するメゾットを実行している

public void OnReturnButtonClick()
{

 // 広告を表示
  interstitialAd.ShowIfLoaded();

 

 //
  Invoke("ReturnTitleScene",0.2f);

}

 

説明は以上

 

Hierarchyに追加した広告オブジェクトをスクリプトで定義した変数とリンクさせているわけではないので、Hierarchyに追加する必要ないんじゃないかとオブジェクトを削除して実行してみたらアクセスエラーになったのでどうやり必要な様子

 

余談

 今まで、バナー、インタースティシャル広告、リワード広告と実装してみたが、正直バナーは収益的な効果は低い印象

 とりあえず、ストレスにならない程度にインタースティシャル広告を挟み込むのが有効に感じる

 リワード広告は広告をみてもらう引き換えにライフを回復とかする感じなので、ゲーム自体のはまり度に左右される印象

 

 

今回は以上

 

 

 

 

 

Google Admob 広告プレースメントを使ってみた!! Banner編

Google Mobile Ads Unity プラグインの新しいタイプのベータ版が公開されていたので使ってみた

 

これはUnityで作成したスマホアプリにGoogle広告を実装するためのものだが、実装にあたっての作業が簡単になるらしい?!ので、以下では使い方の概略と感想を記載する

 

なお、通常のGoogle広告の実装に関する手順等は触れていませんのであしからず

 

developers.google.com

 

1 パッケージのダウンロード

2 Unityのプロジェクトへインポート

3 広告の実装

 

1 パッケージのダウンロード

 上記のページの「ダウンロード」からGoogleMobileAds-Ad-Placements .unitypackageをダウンロード

f:id:Harukichi:20210207212347p:plain

2 Unityのプロジェクトへインポート

先ほどダウンロードしたPackageファイルをプロジェクトにインポート

※なお、すでに従来の広告プラグインをインストールしている場合は、先にパッケージのファイルをすべて削除しておく必要あり

上書きしようとしてもうまくいかず

 

f:id:Harukichi:20210207212749p:plain


プラグインがうまくインポートされたら、下記のように各広告のテンプレート的なものの表示が可能になる

 

 

そして、シーンに広告をGameObjectのように配置できるようになる

f:id:Harukichi:20210207213401p:plain

 

3 広告の実装

上記の要領でシーンに表示したい広告オブジェクトを配置

 

◆Banner広告の設定

〇Ad Placement

Ad Placementsのメニューをクリックすると下記のような広告の初期設定ができる画面が表示される

 

f:id:Harukichi:20210207215448p:plain

Placement Name わかりやすい名前を付ける

Ad Format           広告の種類を選択

ID                        Google Admobにて発行されたIDを入力

Persistent            こいつをチェックしておくとシーンをまたいでも削除されずに表示

        されるとのこと

Auto Load Enable これにチェックしておくと、スクリプトを書かなくても自動に配置される

 

 

〇配置した広告オブジェクトをInspectorにて初期設定

f:id:Harukichi:20210207215142p:plain

Ad Placement  先に広告IDとかを設定しておいたテンプレート的なものを選択

       テスト用と、製品用を作っておけば、コード上でコピペしなくても、選択を変更すればよいので便利

 

Banner confguration  サイズと表示位置の設定

CallBacks   広告が読み込まれたとき、閉じられた時など各イベント発生時に処理を行いたいときに設定

 

◆コード

ライブラリを使えるように下記を追加

using GoogleMobileAds.Api;
using GoogleMobileAds.Placement;

 

シーンのStart関数内に下記を入力

MobileAds.Initialize((initStatus) => {  });

 

Ad Placementの方でAuto Load Enableをオンにしておいたので、初期化だけすれば広告が読み込まれる

 

広告のリクエストとか、サイズとかをコードで記載することがなくなったので、かなり簡単!!

かずはサイズをSmartBannerにして、配置はBottomにした時のもの

f:id:Harukichi:20210207220910p:plain

なお、Persistentをオンにしたら、シーンはまたいでもBannerのオブジェクトは削除されないのに表示がされなかった

 

なので、シーンごとに上記と同じことをしてとりあえずしのいだ

 

今回は以上

 

【93%Rushチャレンジ!! その連荘どこまで続く?!】プライバシーポリシー

【93%Rushチャレンジ!! その連荘どこまで続く?!】プライバシーポリシー

 

Y’Mfc(以下「当方」という)は、当方の提供する【93%Rushチャレンジ!! その連荘どこまで続く?!】の利用者(以下「ユーザー」という)に関する個人情報を含んだ情報(以下「ユーザー情報」という)の取扱いについて、以下のとおりプライバシーポリシー(以下「本ポリシー」という)を定めます。

 

1.情報を取得するアプリ提供者

Y’Mfc

 

2.取得するユーザー情報と目的

本アプリケーションで取得するユーザー情報と目的は以下のとおりです。

取得するユーザー情報

利用目的

 

端末に関する情報

なし

・なし

 
 

位置情報

なし

・ユーザーに最適化された広告の提供

・位置情報に基づく広告の提供

・パフォーマンス分析

・アプリケーションの改善

・ユーザーへのサポート

 

 
 

広告に関する情報

・表示場所

・クリックの有無

・閲覧回数

・広告の製品またはサービスの利用状況

 

 

3.取得方法

当方は、情報収集モジュールを内蔵した本アプリケーションにより、ユーザー情報を自動取得します。

 

4.通知・公表または同意取得の方法・利用者関与の方法

(1)通知・公表

当方は、本ポリシーに関する通知・公表は本アプリケーションまたは当方のホームページに掲載する方法で行います。

 

(2)同意取得の方法

同意の取得は、本アプリケーションの初回起動時に取得する方法で行います。

 

(3)利用者関与の方法

ユーザー情報の取得は、本アプリケーションをアンインストールすることで中止することができます。

 

5.お問い合わせ

当方のプライバシーポリシーに関する、ご意見、ご質問、苦情の申出その他ユーザー情報の取扱いに関するお問い合わせは、以下の窓口にご連絡ください。

 

ys.mfc.sp@gmail.com

 

6.改定

当方は、当方の裁量に基づいて、本ポリシーを変更します。但し、取得するユーザー情報、利用目的、第三者提供に変更が発生した場合、本アプリケーションまたは当社のホームページで通知するとともに、本ポリシー変更後、本アプリケーションの初回起動時に改めてユーザーから同意を取得します。

 

7.Y’s MFCプライバシーポリシー

本ポリシーに定めのない事項については、Y’s MFCプライバシーポリシーが適用されます。

 

 

8.制定日・改定日

制定:2021年2月7日

Unity ゲームパーツづくり 回転する的に矢を当てる

現在作成中のスマホアプリのあるシーン用に、回転する的に矢を当てる、いわゆるダーツのようなシーンを作ったので、作り方を簡単に書き残しておく

 

◆作ったもの

f:id:Harukichi:20210104230503g:plain

ダーツもどき

◆機能、ポイント

1 的が回転

 Rotate関数で回転

 コルーチンの中で、徐々に回転スピードを上げ下げ

 

2 ダーツの矢を投げる

 AddForceで投げている

 

3 ダーツの矢が的に刺さる

 ダーツの矢を、矢が当たったエリアのオブジェクトの子にして、刺さったように見せている

 

4 刺さったエリアに対応したポイントがマイナスされる

 刺さったエリアの情報をSendMessgeで管理用のオブジェクトに送信

 

◆各機能の実装方法

必要なもの

 ・的 blenderで自作

 ・矢 こちらもblenderで自作

 ・文字 UnityのUI Text

 

1 的が回転

f:id:Harukichi:20210104231712p:plain

コルーチンの中で

6,7行目

 徐々に加速するために一定のスピードになるまでは、スピードを毎フレーム1.005倍している

 

12行目

 上記とは逆にゆっくり止めるために、一定のスピードになるまでスピードに0.997倍している

 

22行目

 上記で設定した回転速度で回転させる

 

23行目

 高速回転状態になったら、矢を投げられるようにフラグを更新

 

2 ダーツの矢を投げる

f:id:Harukichi:20210104232409p:plain

矢が投げられる状態になり、的がクリックされたら、矢を生成(7行目)

AddForce関数を使って投げている(20行目)

矢のゲームオブジェクトは、prefab化されており、Rigedbodyがアタッチされている

 

3 ダーツの矢が的に刺さる

f:id:Harukichi:20210104233128p:plain

ダーツの的

ダーツの的は、上記のようにエリアごとにオブジェクトが分かれており、それぞれにMeshColliderをアタッチしている

さらにそれぞれに下記のコードをアタッチしてある

f:id:Harukichi:20210104232957p:plain

的の中の各エリアのコライダーに矢が侵入してきた場合に、

Rigidbodyの作用を停止(18行目)

矢の親オブジェクトを、的の中の矢が当たったエリア(オブジェクト)に設定(19行目)

 

矢が刺さったこと及び当たったエリアの名前をゲームの管理をしているオブジェクトに通知(21行目)

 

ルーレットの回転を止めるために、ルーレットの管理オブジェクトに通知(22行目)

 

4 刺さったエリアに対応したポイントがマイナスされる

f:id:Harukichi:20210104234206p:plain

送られてきた的の中のエリア情報を照合して、的のエリア分のポイントデータが格納された変数のインデックスを設定して、ポイントを決定している

 

今回は以上

 

なお、ダーツの的の矢が刺さった個所の判定方法については、的の色情報で判定するとかもっと負荷の軽い方法がよいかもしれない

Unity 小ネタ Unityで作ったアプリを関連付けられたファイルから起動

以前VideoPlayerコンポーネントを使用して、簡易的な動画再生アプリを作ったが、それを使ってくれている大変珍しいユーザーから、「mp4のファイルをダブルクリックしたらこのアプリで再生されるようにしてほしい」との依頼を受ける(-_-メ)

 

そんなんUnityで作ったアプリでは無理やろ・・

 

というか、そんなことするアプリをそもそもUnityで作る????

 

とかただめんどくさそうだからやらないで済めば・・・・

 

 

いや貴重な私のアプリのユーザーのサポートをしないのは、アプリ製作者として恥だ!!

 

 

無駄な前置きはここまでにして

 

 

 

めちゃくちゃ簡単だった

 

C#で用意されている関数により、アプリ起動時にデータ(文字列)を取得できるようでそいつから抜き出せばいいだけ

 

Start関数に下記のコードを入力

string args=System.Environment.GetCommandLineArgs();

 

 

 

試しにどんな文字列が取得できるのか一行ずつ取得してみる

void Start()
{

   string args = System.Environment.GetCommandLineArgs();
   for (int i = 0; i < args.Length;i++)
       pathtext.text += args[i] + "\n";

}

 

上記を実行した結果が下記の通り

f:id:Harukichi:20201210225056p:plain

 

中身はよくわからないが、おそらくは二番目のパラメーターだろうと予測して

 

string[] args = System.Environment.GetCommandLineArgs();
pathtext.text = args[1];

 

に書き換えてアプリをビルド

 

 

拡張子をtxeという存在しなそうなファイルを作成し

そのファイルを右クリックしてメニューの「プログラムから開く」を選択

f:id:Harukichi:20201210225106p:plain

 

 

 

このファイルを開くアプリを先ほどビルドしたアプリに設定

f:id:Harukichi:20201210225100p:plain

 

 

 

で、このtest.txeというファイルをダブルクリックするとすると・・・・

 

f:id:Harukichi:20201210225113p:plain

いつものMade with Unity画面の表示後

上記のようにダブルクリックしたファイルのパスを取得することができた!!!!

 

この要領で、VideoPlayerのSourceのURLに上記のパスを指定して、再生すれば

ファイルをダブルクリックして作ったアプリを通して動画を再生することが可能となる

 

 

はずだ!!!

 

まだ試してないけど(-_-メ)

 

今日はここまで