ちゃこブログ

お絵かきとUnityとBlenderと日記

【Unity】UnityEditorMemo ver3.0.0をリリース!

UnityEditorMemo ver3.0.0リリース

 UnityEditorMemo ver3.0.0をリリースしました。AssetStoreは現在審査中なのでGithubからダウンロードができます。
GUIの変更とデータ出力機能の実装が大きな変更点となっています。ver2との互換性はあるのでそのまま上書きしても大丈夫です。詳細についてはGithubのREADMEをご覧ください。(日本語のREADMEも書きました!)利便性が飛躍的に向上しているのでぜひお試しください!

assetstore.unity.com

github.com

UnityConnect運用開始(予定!)

 AssetStoreへのリリースが完了次第、UnityConnectにUnityEditorMemoの記事を投稿予定です。記事にはコメント機能も付いているので、Forumの代わりに利用しようかなと考えています。
 登録だけして何もない私のページです。
https://connect.unity.com/u/charcolleconnect.unity.com

紹介動画作成

 ただのキャプチャ動画ですが、Aviutlを使って少し編集を頑張って作ってみました。
www.youtube.com
動画編集で説明文を追加するのがとても面倒だったので、Youtubeで英語と日本語の字幕を追加しました。Youtubeの字幕機能は使いづらさはあるものの複数言語向けに編集するのは非常に便利でした。


以下、せっかくなので今回の実装の感想的なものを書いていこうと思います。


実装のあれこれ

GUIのPreferenceウインドウ化

f:id:charcotte:20190310142953p:plain
 Unity2018.3からPrefenceウインドウのGUIが変更になっています。左側にメニュー一覧があり、メニューをクリックすると右側のコンテンツが変更される仕組みになっています。個人的にこのGUIがとっても好みでした。
 ver2のカテゴリーの追加や切り替えなどのGUIがダサかったので、このGUIをマネて良い感じにしようと思いました。その結果、カテゴリの作成・削除・編集まですべて同じ画面で行うことができるようになり、利便性が向上しました。
f:id:charcotte:20190310144245p:plain

メモのTreeView化

 ver2まではメモをGUILayout.ScrollViewで表示を行っていました。ScrollViewは中身が多くなるとスクロールが重くなる性質を持っています。なので、ver2まではScrollViewが100件を超えたら古いやつから別のビューに分割するという手法をとっていました。
 TreeView APIを使って表示を行うと、どれだけ要素数が多くても快適にスクロールが出来ます。ScrollViewからTreeViewに変更することで、100件表示機能は無事に破棄できました。デメリットとしてはGUILayoutで実装していたものをすべてRect指定式の実装に切り替える手間がかかってしまうことなのですが、過去に自分のAssetを何度もTreeViewへ移行してたのでそこまで時間はかからなかったと思います。
 カテゴリーの表示もTreeViewを利用しています。TreeViewを利用したからこそ名前の変更・カテゴリー順番の入れ替えを簡単に実現することができました。スクロールが軽い以外にも、色んな機能を提供してくれるTreeViewはとても好きです。本当はカテゴリーの親子関係まで実装したかったのですが、まだ理解か足りず表示バグばかり引き起こしたので断念しました…

Githubマークダウンの基礎

 今までたくさんREADMEを書いておいて全く知らなかったんですが、Githubのマークダウンてファイルのリンクを相対パスで利用できるそうです。(毎回画像ファイルをコミットしてからREADMEのリンクを設定していた人)
以下のように()内に自身からの相対パスを指定すればリンクが貼れます。

[日本語のREADME](README_JA.md)

Package化考察

 今回、GithubにPackageManagerアクセス用のリポジトリを作成してみました。しかしながら、本アプデではPackage向けの実装がしっかりできておりません。まだPackageManagerの仕組みもあまり理解できていないためなのですが、保存データの持ち方をどうするか悩んで結論が出なかったのです。
 UnityEditorMemoは保存データであるScriptableObjectは配布しておらず、起動時に保存データの有無をチェックし、無ければUnityEditorMemo内の規定フォルダに新規保存データを生成するという仕組みになっています。ところが、Package内でこの仕組みをそのまま利用することができません。Package内のフォルダにはScriptableObjectを生成できないのです。そのため、今回は空の保存データを同封してこのエラーを回避しました。
 ところが、この保存データは恐らくですがPackageのアップデートが入ると保存データが空の保存データに上書きされデータが消し飛びます。gitを利用したPacakgeManagerダウンロードはLibrary内に保存されるようなので万が一データが消し飛んだ場合悲しい結果になるでしょう。では最善策はUnityEditorMemoがPackageに存在する場合にAssets以下に保存データを作成することなのでしょうか…?個人的に、Package化されているAssetがプロジェクトを散らかしてくるのは印象が悪いです。
 ムムム…( ゚Д゚)

  • Assets内で保存データを生成後、Packageに移動させる
  • Assets内に保存するか、Package内に保存するかユーザーに選択させる

上記の二つについて試してみようかなと思うのですが結局なにが最善なのかよくわかりません。誰か知っている人がいたら教えて頂きたいです。