【Unity】プレハブのInstantiateについて初めて知ったこと!

今まで、プレハブ自体を以下のように生成していた。
[SerializeField] GameObject _prefab;
GameObject obj = Instantiate(_prefab);
しかし、プレハブにアタッチしているスクリプトをInstantiateすることでも同じように生成できることを初めて知った!
しかも、便利なのは、アタッチしているスクリプトの参照をInstantiateするときに同時に取得できるので、そのままプレパブの初期化処理とかをできるところですね。便利!!
もしかして、こんな便利なら頻繁に使うはずなので、今まで知らなかったの自分だけか?!
[SerializeField] CustomClass _prefab; // プレハブにアタッチしているCustomClassを参照
CustomClass customClass = Instantiate(_prefab); // これでプレハブがシーン上に生成される
customClass.Init(); // 「初期化処理を定義しておいて呼び出す」などができる。

デジゲー博に申し込みました!

とりあえず、次回のデジゲー博に申し込んでみました!
まだ、サークルカットをアップロードしてないので、早く描かなければ。
今回の頒布物は前回のコミケと同じで、スマホゲームの「Prison Dream」にしようと思います。
あとは、活動報告書ですね。
もし間に合えば、もう一つ試作版のゲームを出したいところだが、できるだろうか。。。
そもそも、当選するかどうかわからないので、とりあえず今は制作を頑張るのみ!!

コミケ2023夏(C102)に参加しての所感と反省

先日、久しぶりにコミケに参加してきました!
出展したのは、今年の1月ごろにリリースしたシンプルな脱出ゲーム「Prison Dream」でした。
なので、出展物は①Prison Dreamのダウンロードカード、②活動報告書の2点でした。
どちらも、無料で頒布しています。
久しぶりに参加したので、どれくらいの数量を印刷すればいいかわからなかったので、とりあえず100部ずつ印刷してみました。
結果としては、ダウンロードカードが36枚、活動報告書が35枚を持っていってもらうことができました!
なので、結構余ってしまいましたね。。。
以下、コミケに久しぶりに参加してみての所感と反省を書いておきたいと思います。 “コミケ2023夏(C102)に参加しての所感と反省” の続きを読む

今年やってみたいこと

Houdiniを使って、木箱の破壊とかが作れるらしいので、それを作ってみたいなぁ。
https://www.docswell.com/s/UnityJapan/KMG2NK-unityhoudiniunityhoudinirealtimevfx-248276251#p24 どうやら、Baking Rigid Body Dynamicsという機能を使うらしいけど、全然まだ仕組みが分かっていない!! そして、Houdiniが高い!!教育版は比較的安そうだから、教員特権で買ってみようかな。

あと、UEはそろそろ始めないといけない予感がしてきた。そして、Godot Engineも気になるところ。
結局、最近はUnityとUEがどちらもエンジニアは並行して使うのが普通っぽいので、Unityだけだとちょっと不十分になってきた感がある。

アプリにAdMobを組み込んだ場合は、GDPR対応しなくてはいけなくて大変だった!!

※以下の記事は結局Appleで申請が通りませんでした!独自のUIでGDPR対応しては駄目で、以下のようなiPhone標準の機能として、アプリ内に許可のポップアップを出さないといけないようです。

========================================

↓以下は全て参考の記事です。(この対応をしても申請が通りません。)

具体的にやらないといけないことは、以下のサイトにすべて記載されていましたので、参照ください。
https://www.karvan1230.com/entry/2019/02/19/224000

「AdMob側の対応」と「アプリ側の対応」があり、面倒だったのは「アプリ側の対応」です。

今回制作していた謎解きアプリでは、リワード広告を付けており、ヒントボタンを押すとリワード広告を見ることでヒントがもらえるという仕組みでした。
GDPR対応を気にしなければ、何も考えずにリワード広告を出してしまえばよかったのですが、GDPR対応をするためには以下のような手順を踏む必要が合出てきてしまいました。


①ヒントボタンを押して、広告を見ますか?で「OK」ボタンを押したときに、「プライバシーの合意」をしているかどうかのチェックをする。

②プライバシーの合意がされていない場合は、プライバシー合意のポップアップを表示する。

③そして、チェックボックスにチェックを付け、合意ボタンを押したら広告が表示される。

④逆に、チェックボックスにチェックを付けずに合意ボタンを押したら、合意していないということなので、広告は出ず、当然ヒントも出ないようにする。

更に厄介だったのは、「ユーザーがいつでも合意を変更または取り消しできるようにしないといけないということです。この対応として、タイトルシーンのConfigでプライバシー合意画面を出せるようにしました。

これで、いつでもユーザーが合意解除できるようにしておきました。
ちなみに、合意の有無は、jsonファイルでユーザーデータとして各端末のローカルに保存しておくようにしています。有無のbool型のフラグとその合意した日時をstring型で保持しています。(保持内容は果たしてこれでいいのかはわからない)

合意をクリックする人は4%らしいので、もはや広告実装はしないほうがいい気がしてきました。これからは、買い切り型にするか、無料アプリ内で課金要素を入れるかを検討したいと思います。

3D謎解きゲーム『Prison Dream(プリズンドリーム)』のトレーラー動画を作ってみた!!

『Prison Dream(プリズンドリーム)』のトレーラー動画

昨年の2月ごろに「Brackeys Game Jam 2022」という海外のゲームジャムで作成したゲームをスマホ用に修正して、リリースしようとしているんですが、その宣伝のためのトレーラー動画を作ってみました!今月(2023年1月)にはGoogle PlayとApp Storeでリリースしたいと思っています!!

=== ゲームの概要 ===
『プリズンドリーム』は、謎解きと探索が楽しめる3D謎解き脱出ゲームです。操作は指1本でスワイプとタップだけ。画面をスワイプすることで、視点を動かすことができ、いろんな場所に隠されたアイテムの発見を楽しめます。8つの場所を移動することができ、3D空間が、より一層謎解きに臨場感を与えてくれます。あなたはこの不思議な施設から脱出できるだろうか?

=== ゲームの要素1 ===
いろんな場所にいろんなアイテムが落ちていて、「探索する楽しさ」と「謎を解く楽しさ」を追求しました。あるアイテムが別のアイテムのヒントになっていたりして、複雑な謎解きを楽しめます。

=== ゲームの要素2 ===
単純なモノ探しゲームではなく、暗号を解読して、新たなアイテムをゲットするギミックがあります。

=== ゲームの要素3 ===
ハイクオリティな3Dグラフィックス。スマートフォンでもサクサク動くように、より臨場感を高めるリアルな表現を追求しつつも、描画負荷を低減。

=== SPEC ===
ゲームタイトル:プリズンドリーム(Prison Dream)
ジャンル:3D探索型謎解き脱出ゲームApp Store ダウンロードページ:プラットフォームごとにURLを入れてください。
Google Play ダウンロードページ:プラットフォームごとにURLを入れてください。
価格:無料
課金要素:なし
対応OS:iOS , Android

Unityアフィリエイトプログラムに申し込んでみた!!

とりあえず、以下のURLを参考に登録しておきました。
https://www.m2game.net/entry/2022/05/26/235339

そして、広告のリンクサイトでとりあえず、サイドバー用の埋め込みコードを取得して貼り付けてみました。
【リンクメーカー】
https://assetstore.unity.com/linkmaker?locale=ja-JP
一応、ブログ内でサイドバーにアセットリストが表示されることが確認できました!
しかし、まだアフィリエイトIDが無いので、リンクメーカーで埋め込みコードを生成するときにID無しのコードになっていました。なので、表示はできていますが、お金はまだ入ってこないということですね( ゚Д゚)

自分のサイトが承認されるとアフィリエイトIDがもらえるみたいなので、気長に待ちたいと思います。

UnityのAndroidビルドでTarget API Levelを31にしたらエラー出まくったときの対処法!!

基本的なGoogle Play Consoleへのアップロードの手順は以下のURLを参照させていただきました。
https://tukikusa.hatenablog.jp/entry/2022/03/24/180000

恐らく何も問題なければ上記のURLの手順通りにアップロードすればリリース完了となり、すんなり行くと思って安心していたら、最後の最後でApp Bundleをアップロードしたときにエラーが発生!何回通り超えないといけないハードルがあるのか。。。以下のようなエラーメッセージが出ます。

以下に、私が対処した方法をメモしておきたいと思います。
ちなみに、対処法は使っているUnityのバージョンなどによって変わってくるので、開発者全員に共通した方法ではないと思われます。(これがまたやっかいなところ)
また、Unityバージョンが「2021.3.14f1」の場合は何もエラーも出ずにビルドできた。比較的新しいバージョンのUnityでは以下の対策は何もしなくてもいいような気がするので、一番手っ取り早いのは、開発しているプロジェクトのUnityバージョンを上げてしまうことかもしれないが、ゲームが正常に動かなくなるリスクもあるので、バージョンを上げたくない場合は以下の処理が必要になる。

【開発環境】
Unity2020.3.4f1

【対処した方法】
①個別にGradleのダウンロード
②Custom Base Gradle Templeteを使用
③baseProjectTemplete.gradle内を編集
④keystoreを再生成
⑤CustomMainManifestを使用

【対処法の詳細】
①Gradleの公式ホームページからGradleを個別にダウンロードしてくる。
 https://gradle.org/releases/
 ここで、必要なバージョンがあるらしく、私は「6.1.1」をダウンロードしてきた。
 最新だったらいいというわけでもないようだ。
 (この必要なバージョンは各人で異なる可能性がある。)
 - 参考URL
 https://rarafy.com/blog/2021/08/24/unity-gradle-error/
 
 そして、上記の参考URLの通りに、ダウンロードしてきたGradleをUnityをインストールしているフォルダの中の指定の場所に配置して、Unity内のPreferenceでそのGradleの場所を手動で設定する。

UnityのPreferences



②以下のURL内の対応策3を参考に、Custom Base Gradle Templeteを使う設定をする。
 - 参考URL
 https://qiita.com/warapuri/items/17721b113be8c44e5369
 
③classpathのところも②の参考URL同様で「4.0.1」にする。

④keystoreを再生成する
 生成方法は、本記事の一番上で紹介したURLにやり方が書いてありますので参照ください。
 https://tukikusa.hatenablog.jp/entry/2022/03/24/180000
 そして、何故再生成するかですが、よくわからないのですが、APIレベルを上げてビルドしたときにエラーとしてkeystoreが古い?かパスワードが一致しない?みたいなエラーメッセージがUnityのログに表示されたためです。(当然エラーなのでビルド失敗)
推測ですが、keystoreの中にAPIレベルの情報なども入っていて、Target API Levelと一致しないといけないなどの制限があるのかもしれません。
とにかく、再生成したところ、このエラーは無くなりました。なお、新規作成する場合は再生成は関係なく、新規作成するだけでOK。

⑤AndroidManifest.xmlを生成してファイル内を編集する。
 以下のURLを参照し、その通りに直します。
 - 参考URL
 https://www.hanachiru-blog.com/entry/2022/02/10/120000
 実は、この対応はAPI Levelを31に変更することと関係は無いようです。
 ④まで対応すると恐らくビルドは成功し、アップロードもできるのですが、アップロードすると「’android:exported’ プロパティ セットは使用されていません。」というエラーが発生します。このエラーを解除するために⑤の対応を行います。

とりあえず、上記①から⑤の処理を行うことでビルドが通り、アップロードも成功しました。

以下、Unity内のビルド関連のもろもろの設定を貼り付けておきます。

Build Settings画面
PlayerのOther Settings その1
PlayerのOther Settings その2 これより下の項目はすべてデフォルト
PlayerのPublishing Settings
PreferencesのExternal ToolsのAndroid設定部分 Gradleだけ手動


© 2025 Husky Studios, All rights reserved.