ディスパッチャーを使ったら、Faild import for functionエラーが出た時の対処法(仮)
「ちゃんと動作はしてるんだけど、プロジェクトを開いた時の謎のエラーが気になる……」
妹「何やったの?」
「いや普通にディスパッチャーを作って、イベントをバインドして、UMGのアニメーションが終わったタイミングで色々やろうとしただけなんだけど。色々するところを全部消しても駄目で、バインドした段階でエラーメッセージが出る」
「こういう感じのやつ。イベントの名前とかは違うけど。名前が原因かもしれんと思って変えたけど駄目だったというか」
Blueprint compile error: failed import for function - UE4 AnswerHub
「古い投稿だけど同じようなトラブルを見かけて、シグネチャがどうのこうのと書いてあったから、それらしいところを探してみた」
「ディスパッチャー変数の詳細画面には、ディスパッチャーが受け取る変数を指定するとこがあるんだけど、その下にシグネチャというのがあった」
妹「シグネチャって何?」
「英語としては署名だけど、ここのはたぶん、どういう種類のパラメータを受け取るかっていう、そのパターンのことじゃないかと思う。この一覧に出て来るのはカスタムイベントとか関数とかで、それを選ぶと同じパラメータの組み合わせが設定される。例えば1つ目が整数で、2つ目が文字列とか」
妹「あんまり署名感ないけど」
「同じ組み合わせのディスパッチャーは互換性があるけど、違うと完全に別物扱いになるから、重要なところではある。とりあえず今回はパラメータは無しなんで、同じようにパラメータなしのやつを設定してみたり、パラメータありのを設定した後にパラメータ消したりした。そしたらなんか直った」
妹「直ったんだ」
「具体的に何をした時に直ったのかわからないけど、とにかくディスパッチャーのシグネチャのところを色々やると直るかもしれないと」
スタティックメッシュにくっつけた、マテリアルのテクスチャを傾ける方法
妹「マテリアルっていうのは、こう、傾かないもんなのかな?」
「と、いいますと」
妹「スタティックメッシュにマテリアルつけて、そしたらこう木目が思ってたのと違う方法だったんだよ」
「スタティックメッシュごと回転させるというのが一番無難な方法だけど」
妹「正方形ならそうするんだけど、長方形っぽいやつだし、作りなおすのも大変だなあと」
「いっかい縮めて正方形にして、それから別方向に伸ばし直すとか。あとはマテリアルを使う方法もそんなに難しくはない」
「まず、今使ってるマテリアルをコンテンツブラウザに出して、それを複製する。まあそれにしか使ってないマテリアルだったら、直接書き換えてもいいんだけど」
↓
マテリアルのテクスチャっぽいところに、こういう風にノードを追加する
↓
「普通はポリゴンに元々設定されてるUV値を元に、テクスチャをピクセルを読みだすんだけど、この縦と横を入れ替えることで、90度傾いた状態にすることができる」
妹「テクスチャっぽいところというのは?」
「それはマテリアルによって違うんだけど、サンプルのやつだとTexutureSampleがいくつかあるから、その中で模様がはっきりしてるやつ。不規則に汚しをいれてるやつはほっといていい。TexutureSampleじゃない場合は、またちょっと別の方法になるかも」
「そうするとこうなる、ちゃんと木目が変わる」
妹「マテリアルの一覧表示でも向きが違うのわかるね。じゃあこれ45度傾けたりもできたりするの?」
「できたりする。ただそうなるともう少し計算が必要だけど。要するにTexCoude[0]に元々の縦と横の数字が入ってるから、それを何らかの計算式で変化させれば、傾けたり拡大したり、色々できるよ」
カメラ用のSpringArmに変な物がぶつかってしまう問題
妹「ところで兄はSpringArmに詳しいとかってある?」
「いやべつに詳しくないけど。キャラクターにカメラをつけるのに使われてたような」
妹「詳しくなかったら困るんじゃよ。これ壁にあたった時に縮んでくれるのはいいんだけど、そのへんにある物体にまで当たっちゃうみたいで、カメラがめちゃくちゃになってしまう。最悪のばあい壁を撤去するしか……」
「あー、SpringArmって壁にあたると伸び縮みするんだ」
妹「そこから」
「単に距離を設定するだけのやつなのかと思ってた」
妹「それだったらArmじゃん! Spring要らないじゃん!」
妹「そういう設定するとこが、ないわけないだろと思って、色々探してみたら、こういう欄が見つかった。だけどProbeとかECC_Cameraとかって言われても何かわかんないし、変えても特にどうということもなく」
「そういうことなら設定方法わかったかもしれない」
「プロジェクト設定のコリジョンプリセットに設定する画面、この画面のCameraって項目がECC_Cameraのことだと思う。試しにBlackAllの中でCameraを無視すると、壁を突き抜けるようになった」
妹「いや壁の方は突き抜けちゃ駄目なんだけど……」
「その場合は、当たったら困る物体のプリセットをBlockAll以外の何かに変えて、そのプリセットの設定でCameraを無視すればOK。PawnとかPhysicsActorとか、もしくは自作プリセットか」
妹「じゃあSpringArmの方の設定は変えなくていいの? ECC_Cameraってやつから」
「変えてもいいけど、今回の場合Camera用のアームだからわかりやすいし、Cameraのままにして調節する方が変更箇所も少なくてすむと思う」