Closed Narazaka closed 8 months ago
具体的には特定パスにAAO Merge PBをつけ、別のパスにNDMF Mantisをつけ、みたいな作業をスクリプトで書くときに障害となります
これは意図的にoffです。RuntimeモジュールにはAPIはまだ存在しないためコンポーネントの追加もAssembly Definitionを追加sしてもできません。(少なくとも想定されておらず、クラス名等が変わる可能性があります。将来的にAPIを用意する予定はあります)
また、AvatarOptimizer更新・開発中のUnityの復帰速度が遅くなってしまい、また意図せずAvatarOptimizerに依存したプログラムを作ってほしくないため、AutoReferencedをオンにする予定はありません。
自動化的なものは別の手段でやるべきであると言う感じでしょうか。
APIというのはAddComponent<Component>()
は標準的な物だと思いますがそれと別に何か用意する感じでしょうか?
現状AAOの設定の自動化の正しい方法は存在しないです。reflectionを使用する以外に存在しません。
APIというのは
AddComponent<Component>()
は標準的な物だと思いますがそれと別に何か用意する感じでしょうか?
AddComponent
後の設定がAPIになっていません。またそもそも<Component>
の部分がinternal
になっているため、AddComponent
を呼び出せないと思います。リフレクションで.AddComponent(Type.GetType("Anatawa12.AvatarOptimizer.MergePhysBone,com.anatawa12.avatar-optimizer.runtime"))
とすることはおそらくできますが、Semantic Versioningの保証外です
READMEから引用します
This project doesn't have any public stable APIs for now. The Semantic Versioning will be applied to save format of the components, but not for scripting usage for now. (略) Even if any parts of this project is exposed as public in C# code, it can be changed / removed in future release.
現状internalなのは把握していますが、
将来的にAPIを用意する予定はあります
というのがAddComponentとは別の何かなのかと思った次第です。 あくまで現状何も無いし予定は未定であるという話と理解しました。
com.anatawa12.avatar-optimizer.runtime
がAuto Referenced=OFFであるためにいちいちasmdefを作らなければならず面倒な場合があります。Avatar Optimizerのコンポーネントを付ける等を含む共通化して公開するまでもない独自の定型作業を書きたいとき(Quest対応など)に、必ずasmdefを作らねばならず、なおかつasmdefの下で逆に参照できない物もあるのでスクリプトが2つに分かれたりして冗長です。 Auto ReferencedがONだとAssetsの中にC#スクリプト1枚ぽん置きで出来てラクです。
参考までにModular AvatarはRuntimeのみAuto Referenced=ONなのでこの要件で使いやすいです。