Unityゲーム開発 Project1-③ ~スクロール、セーブデータ、マスタデータ~

2023年1月22日

infeed1

広告

はじめに

前回の続きです。
今回はゲームメインを作ろうと思ったのですが作り忘れていた機能があったのでそのお話です。
今回も地味な内容ですが開発工程として参考になればと思います。

スクロール機能

Unity標準のスクロール機能を使用してもよいのですが、
今回はFancyScrollViewというものを使用することにしました。
スクロールビューを実装するうえで無限スクロールビューは必須な機能なんですが
これを自作するよりはるかに楽でコスパがよいかなと思っています。
またFancyScrollViewを継承したスクロールのベースクラスを作成して拡張もしたので
今後はスクロール機能もたやすく用意できるようになりました。
是非皆さんも使用してみてください。
FancyScrollView

セーブデータ

ユーザー情報を記録するのに必要な機能ですね。
何も知らない時ってApplication.persitentPathを使用すると思いますが、
セキュリティ、秘匿性もしっかり考えたうえで保存するようにしましょう。
エディタ上での保存は自分しか触らないですしApplication.persitentPathでも十分です(笑)
AndroidはgetCanonicalPathを使用することでユーザーが読みだせない秘匿性の高いセーブデータを作れます。
iOSはやっぱりキーチェーンを介してセキュリティを高めたセーブデータを作るほうが無難ですね。
またデータをまま保存するのもよくないのでデータを暗号化した上で保存しましょう。
今回はAndroid/iOSが開発対象なのでAndroid/iOSしか対応してませんが、
セーブデータに関しては秘匿性やセキュリティをしっかり意識しないといけないので
皆さんも意識しましょう。

マスターデータ

マスターデータ管理に関してはNPOIとScriptableObjetを使用した管理を行いました。
Unityでは標準機能でエクセル読み込みがでできないのでライブラリを使用しました。
NPOIで読み込んだエクセルからScriptableObjectを作成してそのデータをゲーム中は使用しています。
またエディタ拡張でより手間を省くようにしました。
エクセルでエータ編集をするだけで、あとはエディタ側で自動読み込みとScriptableObjectの作成、データ設定までを一括して行えるようにしました。
やり方はシンプルでエクセルファイルをプロジェクト内に置き、OnPostProcessorで編集をハンドリングし、
ScriptableObjectの作成をする。
その後、InitializeOnLoadMethod関数内で、AssemblyReloadEvents.afterAssemblyReloadで
作成されたScriptableObjectにデータ設定するような処理を仕込んでます。
昔はエクセルからマクロでjsonを吐き出して、そのjsonをエディタ側で設定するようなこともしてたけど
やっぱり完全自動化は素晴らしいと実感しました。(笑)
NPOI
ちなみにNPOIはパーッケージ単体では動作しなくて、以下のパッケージも合わせて使用しないといけないので
少し面倒でした。
Portable.BouncyCastle
SharpZipLib
同じパッケージとして配布してくれたらよいのにな~

最後に

これで本当にゲームメインへの開発に入れるので、モチベが上がってます!
次回からはゲームメイン部分の記事がかけるはず…!
皆さんも頑張ってください。