アドバイスとのことなので遠慮なく
ノード確認しましたが、そもそも意味が通っているようには見えないんですよね…
まずBeginPlay時にMeshを配列に保存していますが、その保存したMeshを SampleXray01
のイベント内でForEachで回し、その配列のIndexにあたるMaterialSlotに MI_Xray
をセットしています
これの何が意味が通らないかは以下のとおりです
- Meshが複数あった場合、MaterialSlotがどんどんずれていく(1つなら0、3つあると0,1,2…のように)
- 0番目にきちんとMaterialが当たるのは1つ目だけ
テスト環境がどのようになっているかわかりませんが、上記のようなことになっていませんか?
その後、NOXRAYタグを付けたものに対して色々処理をしていますが、これ必要でしょうか?
この部分に関しては、無駄に全部つかもうとしているのが問題なのでは?と思います
あるいは、 ActorHasTag
ノードを用いて、Materialを当てる際に弾いてしまえばよいのでは?と思います
それと、
ColorNumber(Integer)の値を-1引いて、0にして元に戻すという仕組みにしています
とありますが、コメントでそう書いている箇所を見てもよくわかりませんでした
単に各Meshの全MaterialSlotにNone(Default)を当てているだけのように見えます
Material Element の番号 0と1で切り替えているので Material Elementが複数ある場合、このやり方では通用しないと気付きました
ノードの意味が通っているかは別として、全Slotに同じXrayマテリアルを当てる、というのでよいのなら、すでにそのまま使えそうな処理がありますよ
Sample_XrayRelease
でMeshの全Slotに対してNoneを当てているところがそれです
当てるのがNoneではなくMI_Xray
になるだけですね