Unity
Unity で UXML を動的に生成したいことってありますよね?わたしはあります。 例えば、 UXML で記述できる HTML もどきは仕様が古すぎて、 HTML Living Standard っぽく記述した物をトランスパイルするとか......。 ということで、その方法のメモ。 とはいっ…
比較的最近の Unity では、 Timeline 関連の API も公開されていて、ある程度自由にカスタマイズすることが出来ます。 今回はそのうち、 TrackAsset についてのお話です。 TrackAsset を継承したクラスを作ることで、 Timeline に任意のトラックを追加するこ…
Prefab Variant 、便利ですよね。 今回はそれをスクリプト経由で作成する方法の紹介です。 といってもそれ専用のメソッドがあるわけでも無く、以下の処理で自動的に作成されます。 var go = (GameObject) PrefabUtility.InstantiatePrefab(_prefabPath); // …
Unity で Ctrl + D によるコピーを検出したい場合のやり方です。 といってもカンタンで、 hierarchyWindowItemOnGUI でヒエラルキーの OnGUI を受け取ってそこで処理してあげるだけ。 あとは、 delayCall で処理を遅延させないと activeGameObject がコピー…
ちゃんとした Unity アプリケーションを作っていると、 Json でアプリケーションデータを永続化したくなることがあると思います。 ただ、 PlayerPrefs はゴミらしいのと、 Unity 標準の JsonUtility だと物足りない......!となると、やはり Json.NET が選択…
今回は、 OpenVR SDK にてコントローラーや各トラッカーなどのデバイスのアイコンの場所を取得してみようと思います。 といっても、やり方はカンタンで、ランタイムパスと GetStringTrackedDeviceProperty で取得できるパスを組み合わせれば OK です。 とい…
DLL Injection の記事はどうした!と言われそうですが、この後に書く予定です。許してください。 ということで、この記事では、 OpenVR SDK で SetOverlayTransformTrackedDeviceRelative あと適用した座標についての絶対値をとる方法についてメモです。 と…
前回は UXML で独自のコントロールを作成しましたが、今回は子要素を取得していろいろやってみようと思います! 渡し方は Unity 公式ドキュメントで触れられている slot ではなく、単純に以下のような子要素 (ここでいう TabContent )となります。 <controls:Tab> <controls:TabContent title="全体設定"> </controls:TabContent> </controls:Tab> とい…
前回はコールバックを作成しましたが、今回は独自のコントロールを作ってみましょう! ということで、早速 UXML と C# スクリプトを書きます。 たとえば、こんな感じのメッセージボックスを作りたい場合は、 以下のような UXML になると思います。
C# + UXML でエディター拡張を書いている際、 Binding 中の変数に対して、値が代入されるタイミングである処理を呼びたい、みたいなことはあると思うんですが、その方法の紹介です。 といっても Unity 2019 と 2020 では微妙にやり方が変わっているので、今…
みなさん Unity 2019 辺りから搭載されてる UXML と USS 使っていますか? Web で調べてもほぼほぼ情報が出てこないこいつ、 Web 界隈であり WPF 界隈でもあったわたしからすれば天国のような開発環境なんですが、 CSS の弱めのサブセットということでしかな…
昨日は仕事でも趣味でもひたすら GitHub Actions と戦っていましたが、その成果! ということで、 Unity なしで UnityPackage を作成できる GitHub Actions を作りました。 使い方は簡単で、こんな感じにするだけで、 UnityPackage を作れます。 name: "Auto…
BOOTH とかで商品を配布していて、共通の部分とかを配布するときに、 UPM 経由で依存を入れたいときとかの方法。 UnityPackage に含めると他のと被った場合、古いものをインポートされると困る!的な場合、 (個人的には) UPM 経由でインストールさせるのがよ…
UPM 経由でパッケージ入れたり、再構成したりするとタイトル通りのエラーが出て、 まともにインポートされなくなってしまいました。 修正は簡単で、とりあえずディレクトリのロックを取っているプロセスが何処かにあるので、 競合するものを閉じてあげれば動…
なんやかんやあって Unity のパッケージで、1 レポジトリで複数のパッケージを管理しているのですが、 もろもろ自動化したかったので、 Node.js 界隈でよく見る monorepo 風に管理してみました。 誰か正しい方法知ってたら教えてください。 ~だって package.…
最近は Toon Shader の勉強をしている私です。 Unity のシェーダーでは C# コードで GUI を自分で組めるのですが、 Tiling と Offset に対応していると、邪魔だと感じるときがあるので、良い感じに表示するための方法。 普通に作るとこんな感じになるとおも…
なんでそんな必要があるのかって? Canvas 使いまくったものが送ってこられて Vket 入稿できなかったからです。 そういう需要があるにはあるので、放流します。 以下ソースコード全文 /*------------------------------------------------------------------…
Prefab からのセットアップ自動化みたいな想定で、 UdonBehaviour (U#) の中身をいじりたい。 そんなときのいじりかた。 といっても、基本は Unity で Component 変更するのと変わらない。 private static void AttachUSharpComponent(GameObject gameObject…
そんなことをする必要があるかどうかはさておき、やりたくなったので。 ということでいつもの前提環境 Unity 2018.4.20f1 UdonSharp 0.18.6 といっても、実装は簡単で、こんな感じ。 もしかしたらこんなことしなくても良いカモだけど。 [SerializeField] [Ud…
最近シェーダーを書くことが増えてきた私です。 ということで今回は「近づくと消える」シェーダーを書きました。 Vertex Shader は変わりないので、 Fragment Shader のみ float4 fs(v2f i) : SV_TARGET { const float d = abs(length(i.worldPos - _WorldSp…
危うく今月の学びがなくなるところでした。 ということで、 Blender などを使わずに任意のメッシュを作成して保存する方法。 やり方は簡単で、以下のコードで 1 tris なメッシュが作成・保存されます。 // see: https://www.wikiwand.com/ja/%E6%AD%A3%E4%B8…
まあ普通にやっていてそんなケースは無いと思うのですが、以下の場合。 Unity のシーンファイルを解析中 YAML のタグ情報は使えない みたいな場合、 GetComponentsInChildren<T> からがんばって探すことになります。 そういったときのやり方。 まずは、以下のプ</t>…
前回、 Animation を動的に生成しましたが、 Controller の方はテンプレートでした。 今回はそこも C# Script から生成してみました。 ちなみに動機は同じですが仕様上不可能だと分かったので供養としておいておきます。 Animator Controller の生成自体も、…
配列を出すためのメソッドが標準で用意されていなかったので、メモしておきます。 例えばこういう配列があったとして。 [SerializeField] private VRCAvatarDescriptor[] _avatars; これをカスタムエディター上で良い感じに表示して欲しいとき、 下のように …
元は VRChat 関連だけど、アバターの GameObject のツリー構造に依存せず、 自由にギミックを仕込む為の仕組みを作りたかった。 ただ、そのまま anim を配布しただけだと対応できないので、動的に生成してみました。 Animation を動的に生成するには、以下の…
VRChat の Avatars 3.0 なるものがでるようなので、早速入れて触ってみました。 が、既存のプロジェクトをアップグレードすると動かない、なぜ。 原因は Define Symbols にありました。 Unity の Player Settings から、 Configuration セクションにある以下…
VRChat とかで、意図的に Humanoid だったものを Generic にする場合など、 Humanoid で作った Animation を Generic に適用したい場面があります。 そういうときの解決方法。 解決方法は簡単で、 Animation を変換してあげれば良い。 そして、そういうアセ…
ここでいう外部の参照っていうのは、 NuGet ライブラリだったり、 .NET Framework には含まれてるけど追加参照が必要なものを指します。 NuGet ライブラリを使う場合 公式ドキュメントでは nuget.org から DL する方法が紹介されていましたが、 いちいち落と…
VRChat で Particle System を当たり判定として使っているときに見つけた仕様。 知らないとハマりがちなので、メモしておきます。 いつも通りの前提条件はこちら: Unity 2018.4.20f1 Personal 実験を行ったリポジトリはこちらにあります。 GitHub - mika-sa…
暫く前に、Texture2DArray を作成する記事を書いたのですが、その続きです。 Texture2DArray を元に、テクスチャを切り替えられるシェーダーを作ってみます。 といっても実装は簡単。 まずは Texture2DArray を宣言しておきます。 あとは、テクスチャを切り…