![見出し画像](https://assets.st-note.com/production/uploads/images/130343900/rectangle_large_type_2_ac221e389a3cbddb85d176c8f22f3182.png?width=800)
VRCQuestTools 2.2.0 あとがき
VRCQuestTools 2.2.0 をリリースしたので、前回に引き続きポイントなどをざっくりまとめたあとがきを書いていきます。
#VRCQuestTools v2.2.0
— クロツ (@kurotu) February 9, 2024
・PC/Androidビルドに合わせてGameObjectを削除する 「Platform GameObject Remover」を追加しました。(要NDMF)
・アバターのオブジェクト名の先頭・末尾に半角スペースがあると変換に失敗する問題を修正しました。https://t.co/l22vNY1Ddw pic.twitter.com/BJmw5nQGRd
Platform GameObject Remover
なんというかこう、そのまんまですね。
ついでにPlatform GameObject Removerあるとうれしい気もする……?(あるかな https://t.co/IqfRX6InJ9
— 奈良阪某 (@narazaka) January 11, 2024
確かにそういうこともあるかな、ということで作りました。作りとしても2.1.0のPlatform Component Removerとそう大して変わらないです。
奈良阪さんからは早速GitHubへフィードバックをいただいていてありがたい限りなんですが、いつやるんだこれという状態です。(完全に私事が理由なんですが、しばらくはうっかり開発に力を入れ過ぎると生活が危うい気配がしてセーブしています)
それはそれとして。
NDMFが必須のコンポーネント群が入ったということで、プロジェクトにNDMFがない場合にはインストールするように警告を表示するようになりました。VRCQuestTools自身が既に持っているアバターバリデーション機能と、前回紹介したVersion Definesの組み合わせで「NDMF必須コンポーネントがアバター内にあるがプロジェクトにNDMFがない」状態を検知しています。
![](https://assets.st-note.com/img/1707482887385-AqSb5H12bQ.png?width=800)
IconAttribute
Unity 2021.2以降では、IconAttributeを使うとMonoBehaviorやScriptableObjectにアイコンを設定してエディタ上で表示することができます。いくつもコンポーネントを付けているときに少しだけ見やすくなりますね。たぶん。
![](https://assets.st-note.com/img/1707483247762-WH83wv7GsS.png)
Unity 2019でもスクリプトにアイコンを割り当てることはできるのですが、この場合Gizmoとしてシーンにアイコンが表示されてしまい、とても邪魔という問題がありました。
![](https://assets.st-note.com/img/1707483437049-8ifVLWXkcT.png?width=800)
Modular AvatarはIconAttributeではなくスクリプトアイコンを使用しているにも関わらずシーンにアイコンが表示されないので、どういうことなのかと気になったのですが、どうやらスクリプトでGizmo表示を強制的にオフにしているようでした。非公開のAPIを呼ぶ必要があるらしく大変なので、VRCQuestToolsでのアイコン表示はUnity 2022以降専用と割り切ってIconAttributeで済ませることにしました。
![](https://assets.st-note.com/img/1707483865768-vRt8mYm4uW.png)
ちなみに、Unityのバージョンごとに処理を切り替えたい場合は #if UNITY_2022_3_OR_NEWER みたいな感じでシンボル定義を使うことができます。
NDMF - オプショナルな依存関係の解決
NDMF対応コンポーネントが入ったことで、当然ソースコードとしてはNDMFに依存しており、前回説明したVersion Definitionによってオプショナルな依存関係を実現しています。一方で、この場合package.jsonのvpmDependenciesによる依存関係の明示ができず、VCCによる互換性チェックの恩恵を受けられないという欠点もあります。
当面は問題ないんですが、たぶんいつか困るのでどうにかしたいところです。NDMF関係の実装を別パッケージに切り離した方が良かったりしますかね?
VRCQuestTools NDMF Extension
┣ VRCQuestTools
┗ NDMF
みたいな依存関係にすれば、とりあえずは明示的に依存関係を書けるなあという思いつき。実際うまくいくのかこれ?
あとがき の あとがき
今回で2回目のあとがきです。そもそもなぜこんなものを書き始めたのかというと、前提としてこれまでの経験からいくつか思うことがありました。
アップデートのお知らせ内ではあまり技術的な内容に踏み込んで話をすることができない。(してもいいけど長いし、ほとんどの人には要らない)
エディタ拡張の開発を始めるにあたって、Unityのマニュアルを読んだ内容と実際的なコードとの間にはまあまあな隔たりや落とし穴がありがちなので、そこを埋めるなにかがあると嬉しい。(「既存のエディタ拡張のコード読めばいいじゃん」というのはそれはそう)
かといって、ちゃんとした技術記事は話の組み立てであったり情報の裏どりが大変。たぶん続かない。
そんな中、ある日、ふと「あとがき」という体をとることである程度気楽に技術的な説明を書くことができるのではないかなと思ったところから「あとがき」を始めたのでした。ほとんど書き殴りに近く、実際気楽に書けています。
おわりに
さて、次は VRCQuestTools 2.3.0 に向けての作業になるわけですが、途中にもチラッと書いた通り力の入れ具合が定まっていないのでいつになることやらといった感じです。(NDMF化の検討を漠然と考えていて、アセットの処理で面倒な点に新しく気づいてしまったのもあり…)
他にも OVR Lighthouse Manager にベースステーション 1.0対応とか細かい機能改善とかを入れたかったりと、ちょっとつっかえ気味です。どうしたものかなあ。
…とかなんとかグダグダ言ってる暇があるならとにかくやればいいんですよね…はい…Just Do It.
この記事が気に入ったらサポートをしてみませんか?