RiderFlowでGameObjectをグループ化したり、ブックマークしたり、メモ残したり！！！

「RiderFlow for Unity」は、IntelliJ IDEAやRiderなどIDEを開発しているJetBrains社が開発した、ゲームエンジンUnity向けの無料プラグインです。

Unityで開発をする上で、「こんな機能が欲しかった」という機能が無料で使えます（2022年11月30日時点）。RiderFlowにより、Scene内の素早い移動と検索、Scene内のGameObjectの関係把握、効率的なSceneやAssetの管理が可能になります。

この投稿ではそんなRiderFlow for Unityの「[Manage the GameObjects Hierarchy view](https://www.jetbrains.com/help/riderflow/manage-gameobjects-hierarchy-view.html)」で紹介されている、Hierarchy ViewにおいてGameObjectを効率的に管理できる次の機能

* Section
* Bookmark
* Note

を紹介します。


---

動作確認環境

* Unity 2021.3.6f1
* JetBrains RiderFlow 2022.1.5.248

# Section

`Section`はHierarchy ViewのGameObject群の階層構造をビジュアル的に管理しやすくする機能です。

![スクリーンショット 2022-11-30 1.18.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4125/0594fc8b-4b3b-1c02-3472-8d9b80d61fa4.png)

「背景を指定カラーでハイライトしたGameObject」で、Hierarchy ViewにおけるGameObjectの階層構造をグループ化できます。上の画像では

* Floors
* Props
* Enemies

という3個の`Section`を作っています。

「Hierarchy View」を右クリックして「Create Section」を選択することで、`Section`の作成を行えます。

![スクリーンショット 2022-11-30 1.19.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4125/eeda296a-f358-1707-2498-186fb896cac4.png)


`Section`にカーソルを当て右クリックを行うことで、次の`Section`関連の処理が実行できます。

* 「Remove Section」 : Sectionの削除。SectionであるGameObject自体も削除。Sectionの子GameObject群は削除されず、Sectionの親GameObjectを親とする。
* 「Unmark Section」 : Sectionを通常のGameObjectにする。Hierarchyの階層構造はそのまま。

![スクリーンショット 2022-03-29 22.56.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4125/7d6d8182-f24f-15ea-2284-4a1868f78b46.png)

普通のGameObjectをRiderFlow for Unityの`Section`に変換できる機能があります。
「Hierarchy View」を右クリックして「Scan for Sections」を選択することで、「=====ここにセクション名=====」という命名のGameObjectなら、`Section`に変換できます。
なお、「=====ここにセクション名=====」という命名規約は、PrefrerenceのRiderFlowのWindowから変更ができます。

![スクリーンショット 2022-11-30 1.20.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4125/e7f5e451-b9fa-d9b9-1756-d8c0a4cfa64b.png)

`Section`の実態はEditor拡張によりHierarchy Viewにおいて背景がカラーリングされただけの「ただのGameObject」です。そのため、Transformの親子関係関連のメソッドの呼び出しで、思わぬ不具合が発生しないように注意して下さい。

`Section`は「ただのGameObject」ですが、ゲームの種類によっては、無駄なGameObjectの階層構造が問題になる場合があります。その問題を回避するために、RiderFlowは実行時や最終成果物作成時に、SectionのGameObjectを削除する機能を持っています。まず、RiderFlowのPreferenceで、「Remove section in play mode (experimental)」や「Remove section in final build (experimental)」にチェックを入れます。そして、Hierarchy Viewにおいて対象のSectionのペンマークをクリックし、表示されるSection編集Windowの「Build Settings > Remove Section」にチェックを入れます。

![スクリーンショット 2022-11-30 1.22.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4125/c2d512a5-a37e-8860-96b6-c1b3c16b2f01.png)

これにより、実行時や最終成果物作成時に、対象のSectionのGameObjectをSceneから削除できます。


# Bookmark

`Bookmark`は、特定のGameObjectをお気に入りできる機能です。

`Hierarchy View`において、GameObjectにカーソルを合わせると星マークが表示されるので、その星マークをタップするとBookmarkできます。
この機能は、Hierarchy View中に星マークがつくだけではなく、非常に有用です。

![スクリーンショット 2022-03-29 23.28.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4125/07647d5d-0ae6-0f06-cf0f-3befb8125b5f.png)

`Bookmark`したGameObjectは「Scene View management toolbar」から、`Bookmark`したオブジェクトに素早くアクセスできます。

![スクリーンショット 2022-03-29 23.23.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4125/532fa453-a175-40ee-03de-778148703087.png)

また、メニューの「RiderFlow > Bookmarks」から開ける「Bookmarks View」で、Bookmarkしたオブジェクトの一覧や、ブックマークしたオブジェクトだけの階層構造を確認できます。

![スクリーンショット 2022-03-29 23.22.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4125/e2da4aba-001d-3cdb-39ed-0bcb3360b09c.png)

![スクリーンショット 2022-03-29 23.22.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4125/b2f8c9ac-d76f-b9e1-cf64-1431ae02f729.png)

# Notes

NotesはGameObjectごとにメモ書きを残せる機能です。

Hierarchy Viewにおいて、GameObjectにカーソルを合わせるとペンマークが表示されるので、そのペンマークをタップすると、メモ書き入力・閲覧ができます。

単純ですが、非常に強力な機能です！

以前のバージョンだと、日本語などの入力に不具合がありましたが[RiderFlow 2022.1.4](https://blog.jetbrains.com/dotnet/2022/10/20/riderflow-2022-1-4-bug-fix-update/)で修正されました。

![スクリーンショット 2022-11-30 1.31.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4125/163d3102-1639-3e64-80c9-47c42b81c7eb.png)

# どこにデータが保存されるのか？

Section、Bookmark、Notesのデータはどこに保存されるか気になった人もいるのではないでしょうか。
これらのデータは、プロジェクト内の`Assets/RiderFlow.UserData`というパスに保存されます。
そのためバージョン管理して、チームと共有することもできます！

![スクリーンショット 2022-03-29 23.44.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4125/bb20a72e-29f9-e742-a7fa-cbb4f331b85b.png)

# まとめ

この投稿では、Rider for Unityの「[Manage the GameObjects Hierarchy view](https://www.jetbrains.com/help/riderflow/manage-gameobjects-hierarchy-view.html)」で紹介されている機能を紹介しました！

# リンク

* [公式ページ](https://www.jetbrains.com/riderflow/)
* [動画](https://www.youtube.com/watch?v=YxasogqhzHA&feature=youtu.be)
* [ドキュメント](https://www.jetbrains.com/help/riderflow/getting-started.html)