マテリアル切り替え方法に関して

アドバイスとのことなので遠慮なく

ノード確認しましたが、そもそも意味が通っているようには見えないんですよね…
まず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 になるだけですね