Closed Tatamo closed 2 weeks ago
Remove Mesh in Box が付与されていないGameObject targetObject に対して以下のようにコンポーネントを生成します。
targetObject
removeMeshInBox = targetObject.AddComponent<RemoveMeshInBox>(); removeMeshInBox.Initialize(1); Debug.Log($"boxes size: {removeMeshInBox.Boxes.Length}");
上記のコードを NDMF Plugin として InPhase(BuildPhase.Generating).Run(...) のパスで実行すると、 プレイモードに入った際はBoxesのサイズが0で、VRChat SDKのBuild & Testでアバターをビルドしたり、Modular AvatarのManual Bake Avatarを実行した際はDefaultのBoxが入っていてサイズが1です。
InPhase(BuildPhase.Generating).Run(...)
プレイモードでの動作確認とビルド時で挙動が異なるので、プレイモードで動作確認してBoxesに何も入らないものと考えて実際にビルドすると、Center: (0, 0, 0), Size: (1, 1, 1) の領域のメッシュが意図せずに削除される結果を招きます。
プレイモードに入ったときとビルド時でAddComponentによって生成されたRemoveMeshInBoxが同じ値を持つ。
removeMeshInBox = targetObject.AddComponent<RemoveMeshInBox>(); removeMeshInBox.Initialize(1); if (removeMeshInBox.Boxes.Length > 0) { removeMeshInBox.Boxes = Array.Empty<RemoveMeshInBox.BoundingBox>(); } ...
Initializeで吸収するつもりの差異が残っちゃってますね。ありがとうございます。
Resetの状態=build時にが意図しているので、ボックスが一つある状態を正とします。
v1.7.13-beta.2 で修正できたと思います。確認お願いします。
確認できました!ありがとうございます。
現象・再現方法
Remove Mesh in Box が付与されていないGameObject
targetObject
に対して以下のようにコンポーネントを生成します。上記のコードを NDMF Plugin として
InPhase(BuildPhase.Generating).Run(...)
のパスで実行すると、 プレイモードに入った際はBoxesのサイズが0で、VRChat SDKのBuild & Testでアバターをビルドしたり、Modular AvatarのManual Bake Avatarを実行した際はDefaultのBoxが入っていてサイズが1です。問題点
プレイモードでの動作確認とビルド時で挙動が異なるので、プレイモードで動作確認してBoxesに何も入らないものと考えて実際にビルドすると、Center: (0, 0, 0), Size: (1, 1, 1) の領域のメッシュが意図せずに削除される結果を招きます。
望ましい動作
プレイモードに入ったときとビルド時でAddComponentによって生成されたRemoveMeshInBoxが同じ値を持つ。
ワークアラウンド