SilCilSystem ver1.0
要点
SilCilSystemは変数アセットとイベントアセットにより成り立つシステムです。 異なるスクリプト間で変数の値を共有したり、特定のタイミングで処理を呼び出すことができます。 変数/イベントアセットはScriptableObjectを継承したクラスで表現されているため、インスペクタ上での設定が可能です。
変数とイベントの使い方を学べば「SilCilSystem完全に理解した」と言えるでしょう。重要なのは以下の3つです。
今まで他のスクリプトに依存していた部分を変数/イベントアセットへの依存に置き換えることが可能です。 そうすることで得られるメリットは以下の通りです。
- スクリプト間の結合が弱まり、再利用可能なスクリプトが生まれやすくなります。
- 設定はScriptableObjectを介するため、機能ごとに独立したプレハブの作成が可能です。これはシーンの編集を最小限にし、共同作業が行いやすくなります。
- ScriptableObjectなので、異なるシーン間での連携が可能です。前のシーンの結果を受け取ったり、マルチシーン機能で活用したりできます。
当然ですが、デメリットもあります。
- 管理する変数やイベントの数が増えるほど、プロジェクトの複雑度が増加します。
- 再利用可能なように機能を細かく分割したスクリプトを作成すると、Editor上での作業量が増えます。
頼りすぎるとマウス操作が多くなり、ビジュアルスクリプティングのようになっていくでしょう。 デザイナーには易しいかもしれませんが、プログラマには煩わしいものになるに違いありません。 ある程度の規模の開発に使用する場合は注意しましょう。 変数/イベントアセットの利用は異なる機能間での連携にとどめて置くのが良いと思います。
機能一覧
SilCilSystemの他の要素は主に変数アセットとイベントアセットを使用した汎用的なクラスの集合です。
あなたが実装しようとしている機能はここに載っているかもしれません。 コードを書く前にチェックしてみてください。
変数関連
先ほど、重要なのは3つと言いましたが、コンポーネントを書くときはPropertyも使えると便利です。
変数のset
変数のget
イベント関連
イベントの実行
イベントの登録
- イベントでゲームオブジェクトのActiveやコンポーネントのenabledを切り替える
- DisposeメソッドをゲームオブジェクトのDestroy時に呼ぶ
- Disposeメソッドをシーンのアンロード時に呼ぶ
- 複数のIDisposableを1つにまとめる
シングルトン
グローバルな処理として利用されると思われる機能はシングルトンで用意しています。
作成したシングルトンはゲーム開始時に自動で生成されるようにEditor拡張されています。 Resources/InitialPrefabsフォルダ下に置かれている全てのPrefabが生成されるようになっています。
※生成処理はPrefabGeneratorOnLoad.csに記述してあります。
Math
変数/イベントアセットとの直接的な関係はないですが、補間曲線の取得などの数学に関するものです。 SilCilSystemのコンポーネントなどで使用されています。
ログ
Unity2019.4で動作確認
- 2020.11.14 変数/イベントアセット追加(SilCilSystemの開始)
- 2020.11.22 SceneLoader追加
- 2020.11.30 Property追加
- 2020.12.01 AudioPlayer追加
- 2020.12.13 UI関連のスクリプト追加
- 2020.12.19 拡張メソッドDisposeOnDestroy追加