お世話になっております。
ナイアガラシステムで使用されているナイアガラモジュールスクリプトを、別のナイアガラモジュールスクリプトに一括で置き換える方法はありますでしょうか?
エンジン側で用意されているGravityForceモジュールに対して、プロジェクト固有の拡張を入れたいと考えております。
可能であればエンジン側のモジュールを直接変更せずプロジェクト独自のモジュールを作りそちらを使うようにしたいのですが、
GravityForceモジュールはすでに大量のアセットで使われている状況のため、手動で1つずつ置き換えるののではなく一括で置き換えられないかと考えております。
何か良い方法はありますでしょうか?
お手数おかけしますが、ご確認のほどよろしくお願いいたします。
お世話になっております。
お問い合わせありがとうございます。
残念ながら、Niagaraシステムのエミッタモジュールの抜き差しは、Editor Utility WidgetやPythonなどを利用したバッチ処理では行えないようです。
そのため、エディタのリファレンス置換機能をお使いいただくのがよさそうです。ただし、この機能はアセットの削除と密接に紐づいており、使用すると置き換え元のアセットが削除されるという問題があります。
そこで、削除されたアセットや、一括変更の対象とすべきではなかったアセットを、バージョン管理システムのRevertなどでうまく復元する手順をご案内できればと思います。エンジン/プロジェクトのアセットがPerforceなどのバージョン管理システム下にあることを確認の上、次の手順をお試しください。
まず、コンテンツブラウザのオプションで、「エンジンコンテンツのコンテンツを表示」できるようにし、オリジナルのGravityForceモジュールと、新しいGravityForceモジュールを両方選択状態にします。次にアセットを右クリック>アセットアクション>リファレンスを置換を選択します。[Image Removed]これを行うと、GravityForceモジュールが削除される旨が表示されますので、受け入れます。
お使いのバージョン管理システムを利用し、エンジン側の変更をすべてRevertします。これにより削除されたGravityForceモジュールが復元され、エンジンコンテンツのNiagaraアセットの変更もすべて元に戻り、プロジェクト側のNiagaraアセットのみが新しいGravityForceモジュールへの参照を持つようになるはずです。
リスクのある操作ですので、ランチャー版のヴァニラ環境で動作確認をとるなど、十分注意の上ご利用ください。
以上、よろしくお願いいたします。
お世話になっております。
ご確認いただきありがとうございます。
リファレンスの置換を使用して、その後エンジン側の変更はリバートしてしまえばよいというのは思いつきませんでした、ありがとうございます。
教えていただいたリファレンス置換の方法を試してみたところ、想定通りモジュールを置き換えることができました。
パラメータも正しく引き継がれており、今のところ問題は起きていません。
なお、リファレンスの置換した状態だと、エンジン側のGravityForceはリダイレクタとしてプロジェクト側のGravityForceを参照している状態になっていましたので、追加でリダイレクタの修正を行うことで完全に置き換わった状態になりました。
ご対応いただきありがとうございました。
また何かありましたらよろしくお願いいたします。
お世話になっております。
ご確認ありがとうございます。
うまくいったと聞いて安心いたしました。
リダイレクタの修正の件は、当方の思慮から抜けておりました。ご指摘およびご対応、誠にありがとうございます。
それでは本件は解決済みとしてCloseさせていただきます。
また何かあればお気軽にご相談ください。
以上、よろしくお願いいたします。