ちゃこブログ

お絵かきとUnityとBlenderと日記

【Unity】【C#】MessagePackCSharpのコードジェネレーターのエラー回避方法について

※作業環境:Windows10、VisualStudio2017/2019、Unity2018.3.14f

GitHub - neuecc/MessagePack-CSharp: Extremely Fast MessagePack Serializer for C#(.NET, .NET Core, Unity, Xamarin). / msgpack.org[C#]

  • V1.7.3.6のCodeGeneratorのエラー
  • 新しいCodeGeneratorを取得する
    • コードジェネレーターの生成
      • global.json
      • Directory.Build.props
      • TypeCollector.cs
      • publish.bat
    • コードジェネレーターを使う
  • 余談
続きを読む

【Unity制作日記】EndLayoutGroup: BeginLayoutGroup must be called first.対処方法

 EasyAssetBundleツールの制作で、EditorWindow上のボタンを押してAssetBundleのビルドを走らせると必ずEndLayoutGroup: BeginLayoutGroup must be called first.というエラーが発生していました。

 これを回避するために、GUIUtility.ExitGUI()という関数を利用すると良いみたいです。実際に、ビルド処理を書いた直後にこの関数を呼び出してみたらエラーが出なくなりました。

if( GUILayout.Button( "Build" )) {
    var processor = new EasyAssetBundleBuildProcessor( SelectedData );
    processor.Build(); // ビルド処理
    GUIUtility.ExitGUI(); // 直後に記述
}

参考:
https://forum.unity.com/threads/endlayoutgroup-beginlayoutgroup-must-be-called-first.523209/

【Unity】UnitySceneMenu ver2.0.0をリリース!

UnitySceneMenu ver2.0.0をリリース

 UnitySceneMenu ver2.0.0をリリースしました。
UnitySceneMenuは私のお気に入りのアセットで、これがないと開発に困るレベルに使い込んでます。利用していて発見したバグや不便に感じたところをすべて解消したのがver2.0.0になります。とてもパワーアップしたので是非試していただきたいです!

assetstore.unity.com
github.com

  • UnitySceneMenu ver2.0.0をリリース
    • ver2.0.0のあれこれ
      • シーンをGUIDで管理
      • 基本シーンの数を設定できるように
      • メニューでビルド設定を管理
      • ReorderableListからTreeViewへの移行
      • 一度AssetStoreで審査落ちちゃったよ
続きを読む

【Unity制作日記】Preferenceウインドウ Unity2019対応

 Editor拡張でPreferenceウインドウに設定等を追加することがあると思いますが、Unity2019で実装方法が思いっきり変更になってるのでメモ。

docs.unity3d.com

Unity2019.1で[PreferenceItem]が利用できなくなったので、後継の実装となる[SettingsProvider]を使ってスクリプトを書き替えていきます。すべて上記のリファレンスに全部書いてある通りです。

従来のコード
[PreferenceItem( "UnityEditorMemo" )]
public static void PreferenceView() {
   // GUIコード
}
新しいコード
[SettingsProvider]
public static SettingsProvider PreferenceView() {
    var provider = new SettingsProvider( "Preferences/UnityEditorMemo", SettingsScope.User ) {
        label = "UnityEditorMemo", // メニュー名やタイトルで利用される
        guiHandler = ( searchText ) => {
            // ここに従来のGUIコードを転記
        },
        keywords = new HashSet<string>( new[] { "UnityEditormemo" } ) // 検索でヒットさせたいワード
    };
    return provider;
}

f:id:charcotte:20190328001659p:plain

 2018から見た目の変更はなさそうですが、コードは結構変更になってますね。SettingsProvider属性をつけた関数がSettingsProviderクラスを作成して返すような流れになっています。

 SettingsProviderの第一引数に設定ウインドウ内のメニューのパスを指定します。PreferenceウインドウであればPreferences/を先頭につけるのがマナーっぽいです。パスを掘り下げればツリービューの階層が作れるので何かに利用できそうです。ここで指定したパスはどこにも表示されず、Preference以下のメニューの並び順に使われているようです。メニューはアルファベット順に並ぶみたいなので、順番を早くしたい・遅くしたいとかがあれば適当な文字列を入れるのもアリなのかもしれません。
 第二引数はPreferencesウインドウに設定を追加するか、Projectウインドウに追加するかを指定します。Projectウインドウにメニューを追加することを考えたことがなかったので、使うかどうか微妙な感じです。

Preferences/HOGEHOGEのPreferencesのスペルを間違えると鬱陶しいことになるので、パスは必ずPreferences/の直下に入れた方がよさそうです。

f:id:charcotte:20190328001847p:plain

 Unity2018.3でもSettingsProviderは利用できるようでした。[PreferenceItem]が死ぬのは2019.1からなので今のうちにSettingsProviderに書き換えてしまうのもアリですね。

 リファレンスのEditor実装がIMGUIが利用されたものになってるので、こっちもそろそろちゃんと勉強しなきゃなと感じました。( ^)o(^ )

【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の字幕機能は使いづらさはあるものの複数言語向けに編集するのは非常に便利でした。


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

続きを読む

【Unity】CustomAssetImporter v2.0をコミットしました

CustomAssetImporter v2.0をコミットしました。
github.com

途中でデバッグが面倒になってしまってバグが大変なことになってる気がしますが、今後自分で利用していく中で修正していこうと思います。

変更点

ディレクトリ名での設定を可能に

SpritesとかTexturesなどのフォルダが点在しているときに、複数のImporterSettingsを作成しなければならなかったのが面倒なので実装しました。ReImport機能においては、ディレクトリ名でプロジェクト内を走査してからその中にあるファイルのパスを生成する作業が必要だったのでちょっと面倒でした。

GUIの大幅刷新

ナウいGUIの実装をしてみました。見ていただければわかると思いますが、Unity2018.3から変更になっているSettingsウインドウの構造をパクりました。あのGUIはシンプルでとても素敵ですよね。本当はTreeView化して終わらせようとしましたが、ちょっと趣向を凝らしてしまいました。

f:id:charcotte:20190102234441p:plain

そのほか、GUIに関する実装を思いっきり変更しました。ImportSettingsの各クラスに直接GUIの実装を行うのではなくGUI描画用のクラスを作るなどしました。以前から描画したいクラスに直接GUIの実装を書くのは美しくないと思っていたのでなんとか実現できてよかったです。

ImporterSettingsに色が付けられるように

こういう無駄機能をつけてしまうところが自分の悪いところだと思ってます。右クリックから設定が変更できます。

f:id:charcotte:20190102234240p:plain

まとめ

GUILayoutのものをTreeViewにするのはとても大変でしたが、メリットが非常に大きいと感じているのでUnityEditorMemoあたりをTreeView化できたらいいなと考えています。

【blog】C95参加を終えて

本を制作しているときは本当に作業がグダグダで自信喪失モードでした。しかし冬コミ当日は多くの方に手に取っていただき、温かいお言葉等もいただき、今後も前進していこうというモチベーションになりました! 
今回技術書(のようなもの)を作成してみて発見したことや反省したこと、冬コミ参加の際に感じたことなどを忘れないようにまとめておこうと思います。

f:id:charcotte:20181231221953j:plain

技術書の作成

原稿サイズは最初に確認せよ

マヌケにもほどがあるのですが、原稿をA4サイズで作成していました。入稿はB5で行うので色んな作業が台無しになって徹夜する羽目になりました。更に言うと表紙をA5で作成していたという事件もありました。入稿前の修正ではありましたが印刷所への注文を修正も必要だったので迷惑をかけました。何から何まで適当に作業をしていたのは本当に反省します・・・

原稿作成について

原稿作成にはWordを利用しました。今回は本文のフォントサイズは9.5で設定していましたが、少し大きめだったなと感じました。また、余白も超適当に設定していたので違和感がありました。もっと上辺に余裕を持たせるようにするべきでした。原稿提出の際に容量が大きくなりすぎないように画像系は350dpiで統一していたのですがやはり粗さを感じました。原稿自体ファイルサイズは全然大きくなかったので次回から600dpiにしたいと思います。
技術書に関しては作成経験が全くなかったため、この辺は1度本を作成してみないとわからないところだったので今後に生かします。

原稿の進捗を管理せよ

1回内容のすべてを記述してから2~3回全体を見て誤字脱字の確認・修正をすればよいと考えていましたが、複数回見ていく間に内容を追加したり削除したりして進捗が訳わからないことになってしまいました。入稿直前まで本当に本が完成しているのか分からず不安しかありませんでした。原稿の進捗はしっかりタスク管理で可視化しないとダメだなと実感しております。

冬コミの参加に関してアレコレ

申込書は無くさない

冬コミ当日に、参加登録カードと申込書の中に入っている見本誌票のシールを貼っている頒布物をスタッフに提出しなくてはなりません。参加登録カードはコミケ当選後に送付される書類に入ってあるしサークルチケットとくっ付いているため紛失することはないのですが、見本誌票はコミケ参加申込書にあります。冬コミに申し込んで受かってから申込書の所在をすっかり忘れてたのですが、参加前日にようやく見つかって危なかったです。関連書類はちゃんとまとめておこうと反省しました。(普通に受かった後の書類に一緒に入れておいてほしいナ)

とにかく寒い

寒がりなので毛布・ホッカイロ等をしっかりと用意して行きましたが、それでもかなり体が冷えました。座ってるだけで動かない分冷えてしまうのでしょう。防寒対策は絶対に怠ってはならないと実感しました。

1人サークル参加はちょっと辛い

友達がいないので1人でのサークル参加でした。会場前にはトイレを済ませておきましたがそのあとは行くことはできませんでした。お隣のサークルにも迷惑はかけられないし防犯上の理由でも無理でした。また色んなスペースを見て回ることもできませんでした。1人参加は全然無理ではないですが、複数人いた方が心にも行動にも余裕ができるというのが所感です。

購入層

正確に情報収集していたわけではありませんが男女比は9:1、年齢層はかなり幅広いという印象でした。Unityの勉強会等では若者が多めな印象があったので、幅広いというのはちょっとだけ意外でした。

人々は本の内容を見極めている

私自身は欲しいジャンルであれば内容を見ずにそのままポンと買ってしまうタイプ(単に立ち読みをあまりしたくないのもありますが)なので想定していなかったのですが、スペースに来てくださった方のほとんどが見本誌をじっくりと読んでいました。特に、「はじめに」「目次」「あとがき」をじっくり見ている方が多かったです。その章は特に雑に作成したので本当に反省してます。次回から、このような内容を扱っていますよ~とわかりやすく提示する何かを作成したほうが良いと感じました。

嬉しかったこと

作品をほめて下さった方、自分もUnityでアートをしているので参考にしたいと言っていた方、Spineを扱う本があると聞いて飛んできたという方・・・頒布物に関して感想を直接いただけるのも即売会ならではの体験だったと思います。私は本当に口下手なのでスペース主に感想を言ったら困惑させてしまいそうで怖かったのですが、頒布物に関するコメントをいただくのはとても励みになったので積極的にお声がけしたいなと思いました。

総括

一時期ナイーブになってしまったことはあったものの、本の作成も冬コミもとても楽しかったし参加してよかったです。また、文章を書くスピードが早くなってブログの更新もはかどるような気がしています。次回本を出すとしたら来年の後半にある技術書典かなとひっそり計画しております。