ちゃこブログ

お絵かきとUnityとBlenderと日記

【Unity制作日記、C#】いつも悩むよC#

少しでもかっこよくコードを書きたいと思うとすぐに悩んでしまいます。
今回、久々に作成したEditorツールの中で躓いてしまったところをメモしてみようと思いました。
charcotte.hateblo.jp

  • 継承をするクラス構造
    • 失敗
    • 最終的なクラス構造
  • List<派生クラス>からList<基底クラス>へのキャスト
  • List<派生クラス>からList<基底クラス>へキャストすると参照はどうなるか
  • まとめ
続きを読む

【Unity】InspectorのHeaderに要素が追加できるようになったよ【2018.2】

Unity2018、時代に追いつけてないですが、Editor拡張スキーとしてはPackage配信されてる公式AssetのEditorスクリプトが大公開されていて、それを眺めるのが最近の日課になっております!

公式Editorスクリプトを眺めていて小ネタを発見したので紹介してみます。

InspectorのHeaderに要素を追加する

  • Editor.finishedDefaultHeaderGUI

このイベントが2018.2から追加されました。
Inspectorの一番上の領域に、自作のGUIをねじ込めることができるようです。
(GameObjectのインスペクタを弄ろうとして痛い目にあった身としてはとても嬉しいAPIです!)

適当に表示させてみたスクリプトが以下の通りです。

using UnityEngine;
using UnityEditor;

[InitializeOnLoad]
internal class HeaderTest {

    static HeaderTest()
    {
        Editor.finishedDefaultHeaderGUI += OnMyCustomHeaderGUI;
    }

    public static void OnMyCustomHeaderGUI( Editor editor )
    {
        GUILayout.Label("わーい(^^♪", GUI.skin.label);
    }
}

f:id:charcotte:20180723222216p:plain

Adressable AssetsでAssetのInspectorにどうやって要素を追加しているんだろうかと知りたくてPackageの中身を覗いてたら見つけました。
うーん素敵。

【Unity】GUIStyleAndTextureViewer

自分がEditor拡張してるときに「あのGUIStyleなんだっけ…あのTextureの名前なんだっけ…調べるのメンドクサ(-.-)」ってなるので、頻繁に利用するGUIStyleとかTextureをメモしておけるEditor拡張を作りました。
github.com
f:id:charcotte:20180722205137p:plain

要素をダブルクリックすると、コードにそのまま貼り付けられて利用できる文字列がクリップボードにコピーされます。

new GUIStyle( "hogehoge" );
EditorGUIUtility.Load( "hogehoge" ) as Texture2D;

無駄にTreeViewとかお気に入り機能とかあって便利です。これはリッチなGUIのEditor拡張制作が捗りますね。

誰得なんでしょうか。(^_-)-☆

【Blog】技術書典にいってきたよ

目的の本があるわけでもなかったのですが何かしらUnityの本が入手できたらいいなーと思って技術書典4に足を運んできました。
技術書典は行ったことなかったのでドキドキしながら向かいました。

会場時間ぴったりに到着しましたが、その時点で長蛇の列ができていて入場できたのは約40分後ぐらいでした。

会場に入ってからも大変な人混みですべてのブースを満足に見回ることが出来なかったのですが、見たことも聞いたこともない技術などの本がたくさんあって歩いているだけでとてもワクワクしました!
見本読んでください~って手渡された本をとりあえず買って回ってたら、全く知らない技術の本ばかりを入手してしまうことになりました(^O^) 
活気にあふれた空間にいるとついついお財布の紐がゆるんでしまいますね。理解できるか別として時間をかけて消化していこうとおもいます。

f:id:charcotte:20180425230710j:plain

Unityの本もちゃんとゲットできました。これはすでにじっくりと拝読させていただいたのですが、Unity力を確実にアップしてくれるような素晴らしい本ばかりでした。
飲んだら確実に背が10cm伸びる牛乳のごとし。Unity力を手っ取り早く高めたい人にはお勧めしておきます。

二次創作同人誌は何冊か出したことあるんですが、技術本もいつかチャレンジしたいなー( ^)o(^ )

【Blender制作日記】やはりテクスチャアニメーション

そういえばぽよさうるす君の3Dモデルが途中で放置されてるなーと思って、微調整フェーズだったポリゴン修正とテクスチャ作りをチマチマと再開してました。
(ちょっとプログラミングに飽きてきたっていうのは秘密だよ)
Unityに持って行って遊んでみたの図。

ぽよさうるす君ver2.0では目を球状のポリゴンで表現していたのですが、なんか違うなと。
例えばポケモン3Dモデルやどうぶつの森の3Dキャラモデルを見ていると、表情は全部テクスチャの切り替えで表現されてますよね。
大好きなピカチュウ元気でチュウのピカチュウももちろん同じです。
見よう見真似で作ってみると球体で表現していた時よりもやはり愛らしさが違いますね(断言)
これは適当にUnityのAnimationで作成したので、まばたきの間隔や速度を調節してよりいい感じにしていきたいものです。
いつかVRChatに参加したりVTuberになれたり出来そうですね!!!!!とりあえずその辺目指してちまちま頑張っていきまする(^O^)

ところで、3Dモデルといえばモーフで表情を変更する技法の記事は多くみかけるものの、テクスチャを切り替えて表現する記事はあまり多くないように思います。
なのでかなり手探りで作っているのでちょっと不安ですね…

【Unity制作日記】AssetBundleツールの途中経過をGithubにコミットしたよ

github.com

開発中にEasyAssetBundleというふざけた名前を付けたんで各方面から怒られそう(^O^)
いやまぁビルドやAssetBundle管理ファイルを作ることに関しては簡単だと思うので気になる方はちょっと見てやってください。
ツールの使い方の説明書については準備中なので、別の記事にて頑張って書こうと思いますm(__)m

f:id:charcotte:20180321222750p:plain

進捗としてはビルドツールに関してはサーバーアップロード機能以外は終了してて、あとはバグ潰しです。

ビルドできるだけじゃ使い物にならないので、AssetBundleをロードして利用できるシステム作りも始めました。
AssetBundle管理ファイルを読み込み、あたかもResourcesのようにAssetBundleを読み込めるように実装しています。こちらもGithubに途中経過(笑)がコミットされてます。
最近async/awaitが気になってたので、勉強がてらガシガシ使ってみました。別スレッドで処理できるのはいいのですが、こんなに多用して大丈夫なのかな?とか手探り状態です・・・
AssetBundleManagerのように自動で依存関係を解決するとかは考えてないですが、自分のアプリを作成する際に依存関係をどのように扱っていくか、こちらもなかなか悩ましいです。

【Unity制作日記】AssetBundleビルドツール続

 2月中は全然進捗なかったのに3月入ってからどんどん進捗してるぞい。日記もどんどん書いていきたいです。
GUIもブラッシュアップして、AssetBundleをビルドしたり、出力したAssetBundleを指定したフォルダにエクスポートする機能を実装しました。

f:id:charcotte:20180304230957p:plain
UIもいい感じになってきた

 左側のコンフィグを設定したあと右下のビルドボタンをぽちっと押すだけで、指定したAssetのビルドが開始されます。ディレクトリ指定したら以下のファイルがチェックできないようにとか細かい実装もちゃんとしてるんですよ(^_-)-☆

 AssetBundleのビルドはBuildMapで実装しようか迷いましたがよくわからなかったので、ツリービューでチェックついたAssetにAssetBundleの名前を付けてビルドしてます。そしてビルド後はAssetBundle名を無名にします。
AssetBundle名を一度付けると、BuildPipeline.BuildAssetBundlesで不必要なビルドをしてしまう可能性もあるので、こういうの大事だと思いまする。

 エクスポート機能は、例えばManifestファイル抜きで指定フォルダにコピーしたり、ディレクトリ構造無視でビルドしたファイルを指定フォルダにぶちこんだりするとかいろいろ作ってます。
BuildPipeline.BuildAssetBundlesで出力しっぱなしじゃ管理しづらいしなんか美しくない気がするので。






このツール作って学んだこと結構あるので、ちゃんと記事にできたらします。TreeViewとかね。