ちゃこブログ

お絵かきとUnityとBlenderと日記

【Unity】ReorderableListについて小ネタ ( UnitySceneMenuを作って学んだこと )

ReorderableListは怖くないよ!
検索してみるとinspectorで表示するためのサンプルばかりで、私自身もinspectorでの表示にしか使ったことがなかったのですが、EditorWindowでも簡単に表示させることが可能でした。

以下はReorderableListを使ってみて得た知見や感想です。

ReorderableListをHorizontalScope内で使ってはならない

(悲劇が起きます)

f:id:charcotte:20180211110839p:plain
全ての要素が横並びに!!
HorizontalScope内で使用する場合は、DOLayoutList()を一旦VerticalScopeで囲んであげましょう。

ReorderableListを自作ボタンで操作するときの注意点

ReorderableListはデフォルトで要素の追加・削除ボタンが付属していますが、UnitySceneMenuのように自分でボタンを作成する場合に、ReorderableListのいくつかのコールバックが呼ばれないみたいです。
デフォルトボタン以外からReorderableListの要素を追加しても、onAddCallbackやonRemoveCallbackは呼ばれませんでした。
自作する場合はコールバックに登録するのではなく、ボタンに処理したいメソッドを登録しておきましょう。

参照が良くわからない…

C#デキナイなので、ReorderableList内で表示される要素が、ReorderableList外で値を更新したときにうまく反映されなくて原因が分からず困っていました。
今回の実装の話だと、ScriptableObject内のリストからReorderableListを作成しています。BuildSettingsが更新された際に自分自身がビルドシーンかどうかのフラグを更新してシーンアイコンの表示を切り替えるのですが、ReorderableList内の要素は更新がされませんでした。
MenuのReorderableListを作成するときに、Menuが持つSceneすべてに更新かけることで対応できました。
うまく言葉がまとまらないのですが、ReorderableListは要素のindexは更新できるが、Listのクラスまで更新をかけられない・・?
うーん勉強不足感。

参考にさせて頂いたサイト

kan-kikuchi.hatenablog.com

【Unity】UnitySceneMenu

マルチシーンエディティングを簡単にする便利なツール、「UnitySceneMenu」をコミットしました。2/27にAssetStoreで配信しました。
github.com

今作ってるアプリはマルチシーン方式で作ってたんですがロード・アンロードがめんどくさすぎてなかなか作業が捗らない><
AssetStoreからダウンロードしたサンプルを見ながら制作!とかやってると本当に地獄です。

そんなこんなでシーンの管理ツールを作りました。

ポイントとしては、

  • 自分が編集するシーン群を「メニュー」に登録する。Configウインドウからサクサク登録できる。
  • メニューウインドウのシーン名をクリックすることで、シーンのロード・アンロードを簡単に切り替えられる。
  • サブ機能として特定ディレクトリ以下のシーンを自動的にBuildSettingに登録する機能もあるよ。

メニューの最初シーンは「Rootシーン」となり、メニューを切り替えたときに前のシーンは破棄されて、「Rootシーン」がロードされ、その他のシーンはヒエラルキーにのみ表示されるようになってます。
そうすることで素早くシーンの切り替えができるようになってます。


ちなみに以前、SceneをいちいちProjectビューからロードするのイヤーー!ってなって作ったツールがこちらです。
これは上のメニューからシーンをロードできるようなツールです。
github.com
これが私のGithubデビューでした。シーンの管理に対してこだわりでもあるんですかねぇ( ^)o(^ )

【Blender制作日記】UV展開って難しい

Blenderは結構触っているのですがあまり記事にしてなかったです・・・書くことあんまりないですが進捗とかいろいろ書いていきたい( ^)o(^ )
ぽよさうるすモデルver3.0の制作中です。モデリング自体は去年の時点ですでに出来上がってたのですが、Unityで動かしてみて不自然なところをちまちま修正してたらすっごい時間かかってました。
今年こそぽよさうるすちゃんに命を吹き込みたいです。

UV展開って思い通りにいかなくて、つい適当になりがちです。。
憧れのMMDモデラーさんのUV展開の美しさを見て、UVを綺麗に展開する練習をしてました。

f:id:charcotte:20180123001219p:plainf:id:charcotte:20180123001223p:plain
模様がゆがまないように意識・・・難しい><

f:id:charcotte:20180123001459p:plainf:id:charcotte:20180123001450p:plain
左:昔 右:今

x軸で整列・y軸で整列をひたすら繰り返して整えたあと、テクスチャのゆがみを少しずつ調節していきました。
整理整頓されたUVは見ていて気持ちいいですね。

【Unity制作日記】GoogleSpreadSheetからデータをコンバートするのに便利なツール

GoogleSpreadSheetとデータをやりとりするツールってたくさん落ちてると思うけど自分で作りたかったんです。

GoogleSpreadSheetからのデータを、自分が欲しいデータ構造に変換する部分のみコーディングして、
GUIでシートの範囲とか設定したりデータを保存する部分などはツールで設定して自動的にやってくれるようなイメージ。
ScriptableObjectで保存するもよし、テキストデータとして保存するもよしで幅広い用途で使えそうです。

今作ってるアプリで使おうと思って作ったんですが、もうちょっとリファクタリングしたらGithubに公開します。

f:id:charcotte:20180122222828g:plain
GUI

f:id:charcotte:20180122214904p:plain
GoogleSpreadSheetConverterを継承する適当なコンバータスクリプト

GoogleSpreadSheetのClientIdとかAccessTokenとか良くわからなかったり、SheetsAPIがうまく叩けなかったりで3日ぐらい四苦八苦してました( ^)o(^ )

【Unity】UnityEditorMemo v2.0がAssetStoreで公開されました

Unityさん仕事が早いでござる・・・( ^)o(^ )
ぜひぜひお試しください。
assetstore.unity.com

UnityEditorMemo v2.0に関する詳しい記事はこちらです。
charcotte.hateblo.jp

【Unity制作日記】ゲームを作る年に

「ゲームを作る年に」と打ち込もうと思ったら「ゲームを作ると死に」と変換されてとても不穏な記事になりそうでした。

昨年はエディタ拡張をひたすら極めるという目標を掲げていました。
エディタ拡張を勉強するとはいえどこがゴールなのかいまいちわかりづらかったので、AssetStoreにツールを出せたらそれがゴールや!と思ってUnityEditorMemoをAssetStoreに出してみました。
出してみたけどゴールした感じがしなかったので他にも色々作成しました。まだ作りたいツールがあるので、引き続きエディタ拡張をしていきたいと思います。

今年の目標は、自分でアプリを作ることです!
ゆきだるまにちなんだアプリが出る予定ですが、リリースは夏かもしれません。( (+_+) )
f:id:charcotte:20180101232111g:plain
Cinemachineが神すぎてやばい。
がんばるぞー!

【Unity】UnityEditorMemo v2.0公開しました

UnityEditorMemo v2.0をGithubにコミットしました。
github.com
現在AssetStoreへ申請準備をしております。
色々と機能を追加したり変更したりするので、解説していきたいと思います。(GithubのREADMEは現在作成中なのです…)

  • 新機能
    • カスタムラベル
    • UnitySceneMemo
    • メモにオブジェクトを添付する
    • カテゴリー名の編集
  • 仕様変更
    • メモの保存方法の変更
    • メモの削除ボタンを廃止
    • カテゴリーのソート変更
  • いつか実装したい
    • メモデータをテキスト出力・読み込み機能
    • チーム開発向けバージョン
    • ラベルカラーをカスタマイズ
  • あとがき
続きを読む