【Unity制作日記】AssetBundleビルドツール作成中
自作アプリをスムーズに運用するためにAssetBundleの管理を簡単にするツールを作成してます。
AssetBundleManager、AssetGraphなどの公式のツールを使うことも悩んでいましたが、AssetBundleの管理を徹底したい場合に不便なのかなぁと思って、自分で実装することを決意しました。
構想自体は去年の10月ぐらいからあったんですが、ベストプラクティスを考え始めるとなかなか進まなくて苦労してましたが、今月になってようやく答えが見つかり始めました。
何がしたいのかというと、AssetBundleのビルド、AssetBundleのバージョン設定、特定フォルダへのエクスポート、特定サーバーへのアップロードを管理するツールです。
ツール側は、ビルドオプションやプラットフォーム、エクスポート先など必須な情報を管理し、バージョン管理ファイルの出力などは自分で実装できるようにして汎用性を高くしています。
現時点でまだAssetBundleのビルドの実装まで到達してませんが、ビルドしたいAssetBundleをTreeViewで表示し直観的に選択できるところまで出来ました。
途中でいろいろ迷走しまくってましたが、ゴールが見えてきて良かったよかった…
ところで、UnityのTreeViewのサンプルアセットが神で、プログラムの勉強になりました。
マルチカラムのTreeViewサンプルは、去年の私の実力ではプログラムを読むことができなかったのですが、今見てみたら実は簡単に自分のツールに組み込めることに気が付いて実装してみました(^_-)-☆
やる気があったら別の記事でまとめたいと思います。
【Unity】UnitySceneMenuがAssetStoreに公開されました
UnitySceneMenuがAssetStoreで公開されました。
マルチシーンエディティングを簡単にするためのツールです。5ドルで販売してます。
とても便利だと思うので買ってみてくだしあ。
assetstore.unity.com
説明書はgithubに上がってます(英語)
github.com
ノリで提出したんですが、審査が通ってとても嬉しいです★
UnityEditorMemoは完成まで半年ぐらい時間がかかったんですが、UnitySceneMenuは制作期間が4日程度なのはナイショです。
【Unity】ReorderableListについて小ネタ ( UnitySceneMenuを作って学んだこと )
ReorderableListは怖くないよ!
検索してみるとinspectorで表示するためのサンプルばかりで、私自身もinspectorでの表示にしか使ったことがなかったのですが、EditorWindowでも簡単に表示させることが可能でした。
以下はReorderableListを使ってみて得た知見や感想です。
ReorderableListをHorizontalScope内で使ってはならない
(悲劇が起きます)
HorizontalScope内で使用する場合は、DOLayoutList()を一旦VerticalScopeで囲んであげましょう。
ReorderableListを自作ボタンで操作するときの注意点
ReorderableListはデフォルトで要素の追加・削除ボタンが付属していますが、UnitySceneMenuのように自分でボタンを作成する場合に、ReorderableListのいくつかのコールバックが呼ばれないみたいです。
デフォルトボタン以外からReorderableListの要素を追加しても、onAddCallbackやonRemoveCallbackは呼ばれませんでした。
自作する場合はコールバックに登録するのではなく、ボタンに処理したいメソッドを登録しておきましょう。
参照が良くわからない…
C#デキナイなので、ReorderableList内で表示される要素が、ReorderableList外で値を更新したときにうまく反映されなくて原因が分からず困っていました。
今回の実装の話だと、ScriptableObject内のリストからReorderableListを作成しています。BuildSettingsが更新された際に自分自身がビルドシーンかどうかのフラグを更新してシーンアイコンの表示を切り替えるのですが、ReorderableList内の要素は更新がされませんでした。
MenuのReorderableListを作成するときに、Menuが持つSceneすべてに更新かけることで対応できました。
うまく言葉がまとまらないのですが、ReorderableListは要素のindexは更新できるが、Listのクラスまで更新をかけられない・・?
うーん勉強不足感。
参考にさせて頂いたサイト
【Unity】UnitySceneMenu
マルチシーンエディティングを簡単にする便利なツール、「UnitySceneMenu」をコミットしました。2/27にAssetStoreで配信しました。
github.com
今作ってるアプリはマルチシーン方式で作ってたんですがロード・アンロードがめんどくさすぎてなかなか作業が捗らない><
AssetStoreからダウンロードしたサンプルを見ながら制作!とかやってると本当に地獄です。
そんなこんなでシーンの管理ツールを作りました。
私が長らく欲していたマルチシーン管理ツールが出来上がってしまった #unity3d pic.twitter.com/fkRJSHCSn8
— ちゃこる (@Charcolle_) 2018年1月26日
ポイントとしては、
- 自分が編集するシーン群を「メニュー」に登録する。Configウインドウからサクサク登録できる。
- メニューウインドウのシーン名をクリックすることで、シーンのロード・アンロードを簡単に切り替えられる。
- サブ機能として特定ディレクトリ以下のシーンを自動的にBuildSettingに登録する機能もあるよ。
メニューの最初シーンは「Rootシーン」となり、メニューを切り替えたときに前のシーンは破棄されて、「Rootシーン」がロードされ、その他のシーンはヒエラルキーにのみ表示されるようになってます。
そうすることで素早くシーンの切り替えができるようになってます。
ちなみに以前、SceneをいちいちProjectビューからロードするのイヤーー!ってなって作ったツールがこちらです。
これは上のメニューからシーンをロードできるようなツールです。
github.com
これが私のGithubデビューでした。シーンの管理に対してこだわりでもあるんですかねぇ( ^)o(^ )
【Blender制作日記】UV展開って難しい
Blenderは結構触っているのですがあまり記事にしてなかったです・・・書くことあんまりないですが進捗とかいろいろ書いていきたい( ^)o(^ )
ぽよさうるすモデルver3.0の制作中です。モデリング自体は去年の時点ですでに出来上がってたのですが、Unityで動かしてみて不自然なところをちまちま修正してたらすっごい時間かかってました。
今年こそぽよさうるすちゃんに命を吹き込みたいです。
UV展開って思い通りにいかなくて、つい適当になりがちです。。
憧れのMMDモデラーさんのUV展開の美しさを見て、UVを綺麗に展開する練習をしてました。
x軸で整列・y軸で整列をひたすら繰り返して整えたあと、テクスチャのゆがみを少しずつ調節していきました。
整理整頓されたUVは見ていて気持ちいいですね。
【Unity制作日記】GoogleSpreadSheetからデータをコンバートするのに便利なツール
GoogleSpreadSheetとデータをやりとりするツールってたくさん落ちてると思うけど自分で作りたかったんです。
GoogleSpreadSheetからのデータを、自分が欲しいデータ構造に変換する部分のみコーディングして、
GUIでシートの範囲とか設定したりデータを保存する部分などはツールで設定して自動的にやってくれるようなイメージ。
ScriptableObjectで保存するもよし、テキストデータとして保存するもよしで幅広い用途で使えそうです。
今作ってるアプリで使おうと思って作ったんですが、もうちょっとリファクタリングしたらGithubに公開します。
GoogleSpreadSheetのClientIdとかAccessTokenとか良くわからなかったり、SheetsAPIがうまく叩けなかったりで3日ぐらい四苦八苦してました( ^)o(^ )
【Unity】UnityEditorMemo v2.0がAssetStoreで公開されました
Unityさん仕事が早いでござる・・・( ^)o(^ )
ぜひぜひお試しください。
assetstore.unity.com
UnityEditorMemo v2.0に関する詳しい記事はこちらです。
charcotte.hateblo.jp