UMGに配置したImageに対して、任意のUVとサイズが指定された画像を表示させたいと考えております。
下記の手順を試してみたのですが、画像は変更されてもスプライトのUV座標が適用されませんでした。
-
Editor側の準備として、1枚のテクスチャから「スプライトの抽出」により複数のスプライトが出力されるような画像を用意してスプライトを生成しておくchip_[0~6]
-
C++でUWidgetを継承したクラスを生成し、そこにメンバ変数としてUImageを持たせる
-
UImageに対して、UImageのSetBrushFromTexture()を呼び出すとスプライトのテクスチャは割り当てられるがUVの切り出しは行われず、全体表示が行われてしまいます
UMGのエディタにて、ImageのBrushを変更するとスプライトの切り出し座標が適用されるのですが
プログラムで同様のことを実現するためにはどのように行えばよろしいでしょうか?
Spriteの時点でTextureではないため、SetBrushFromTextureは不適切かと思います
そもそもその関数ではSpliteを指定できないので、コードでUPaperSplite::SourceTextureを使っているのでは…?と予想してます
そうなるとSplite関係なくもとのTextureを使うこととなり、その結果は当然と言えますね
SetBrushFromAtlasInterface、あるいはSetBrushResourceObjectを使用してください
前者はUPaperSpliteが継承するInterfaceを制約に指定する方、後者は型を無視しUObjectで設定する方になります
UPaperSpliteを使う、と決めているなら前者でしょう
ご返信ありがとうございます。
下記のように呼び出すことにより、PaperSpriteの設定を反映させることができました。
Image->SetBrushFromAtlasInterface(PaperSprite, true);
system
(system)
Closed
4
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.