8ruK_8GZ8
(8ruK_8GZ8)
1
cppファイルのコンストラクタの部分で、アセットデータを以下のように取得していました。
static ConstructorHelpers::FObjectFinder ItemHitPointDataOneRec(TEXT(“‘/Game/Object/Item/Recovery/Datas/D_OneRecovery.D_OneRecovery’”));
UItemHitPointDataクラスはUDataAssetを継承したものです。
"‘/Game/Object/Item/Recovery/Datas/D_OneRecovery.D_OneRecovery’"はエディタ側で作ったUItemHitPointDataクラスのDataAssetです。
ですが、他の方から、AssetDataを取得するならAseetDataの特殊な取得方法があるからそれを使えと言われました。ただその本人もやり方がわからず、探している途中とのことで、その特殊な取得方法のやり方がわかりません。
わかる方いましたらお願いします。
kiruru002
(kiruru002)
2
@8ruK_8GZ8
その特殊な取得方法で何を解決しようとしているのですか?
現状の問題点は「パス文字列がソースコードに直書き」なことだと思います
もしそれをどうにかしたいのであれば、UDataAsset型(もしくはUItemHitPointData)の変数をEditAnywhere付きで公開して使用するか、TSoftObjectPtr(あるいはFSoftObjectPath)を使用して任意のデータアセットを取得する方法があります
Constructor内でデータアセットの取得をすることが重要なら、DeveloperSettingで設定ファイルに記述しておく手段もあります
文字列ベースのままが良いなら、ConstructorHelpers::FObjectFinderでも良いですし、AssetToolsモジュールを使うこともできます
8ruK_8GZ8
(8ruK_8GZ8)
3
私はきれいでわかりやすいコードにするためにリファクタリングをしている最中です。
他の方から現在の書き方よりも良い書き方があるように聞いたので、そんな方法があるのかなと…
説明がなくてすみません。
返信を読んで、パスの部分は確かに問題だなと感じました。参考にします。
ありがとうございます
system
(system)
Closed
4
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.