Meiryo’s blog

やってみて詰まったことを備忘録として残すブログ

【UE5】C++でつくるUnreal Engineアプリ開発のChapter8で詰まったことと解決法

書籍C++でつくるUnreal Engineアプリ開発 for Windows & macOS
〜初歩からプラグイン開発まで〜
の「Chapter8ファイル入出力・プラグイン作例」で
詰まったので解決法を残しておきます。

環境はUnreal Engine 5.0.3です。

作成したクラスをどこに格納するのかわからなかった

Chapter8でUEシステムの作法に従わないクラスを
作成しますが、これらをどこに格納すべきなのか
わかりませんでした。

そこでサンプルファイルを見てみたところ、
【プロジェクト名】\Plugins\ActorLocCSV\Source下の
privateとpublicフォルダに格納されていたのを確認したので
同じように格納しました。

ファイル移動には気をつけることがあるのですが
それはこちらをご覧ください。

ActorLocDiffクラスでエラーが発生した

ActorLocDiffクラスでVector.Xや Rotator.Pitchを
配列に格納する関数を書きますがそこでエラーが発生しました。

解決法ですがfloatを全部doubleにしたら
エラーが発生しなくなりました。
この解決法でいいのかはわかりません。

解決に至るまでのメモ

エラーの内容は

E2361 invalid narrowing conversion from "double" to "float"

でした。
なぜdoubleを変換しようとしているのかがわからなかったのですが
ドキュメントを読んで見たら どうやらUE5からFVectorがfloatではなく
doubleを返すようになったということを知りました。

このことについて、リリースノート

Large World Coordinates (LWC) の導入により、浮動小数値の精度を向上するために、広範囲に及ぶ変更をすべてのエンジン システムで実装する Unreal Engine 5 で、倍精度のデータバリアントタイプがサポートされるようになりました。

という記載と
Large World Coordinatesプロジェクトの変換ガイドライン
デフォルトが倍精度という記載からUE5からはdoubleを使うようになったようです。

わからないこと

今までfloatだった箇所を全てdoubleにしていいのかは
わかっていません。

UnrealDirective を見ると全てdoubleにしても
良さそうな感じですが・・・どうなのだろうか。

とりあえずですが「floatに書き換えたほうが良い問題」が発生しない限りは
doubleを使おうと思います。
これがだめだったりなにか新しいことがわかったら追記します。