Notifications
bg
Ryosuke
Designer
Japan
0
Likes
1
Follower
0
Connections
All
Articles0
Games0
Showcases0
Column0
Jobs0
質問させてください。
スクリプトで、インポート済みの画像ファイルをSprite型として取得したいです。

検索でいくつか近い回答を見つけたのですが、求めている処理と多少異なりました。
https://forum.unity.com/threads/generating-sprites-dynamically-from-png-or-jpeg-files-in-c.343735/
https://qiita.com/consolesoup/items/5faf1b48c8db2e08f393
上記は、パスからTexture2Dを取得→Sprite.CreateでSprite型を得ているようですが、
これで得られたSpriteを GetComponent<SpriteRenderer> ().sprite に入れても、
画像をUnityにインポートしたときの設定(pivotやFilter Modeなど)が反映されません。
Texture2D、Spriteのメンバー変数でそれらは変更可能ですが、インポート済みの画像の設定と同期されません。

GetComponent<SpriteRenderer> ().spriteに対して、
「手動」でアタッチした場合と、上記の「スクリプト」でアタッチした場合の説明画像を添付させていただきました。
この「手動」でアタッチしたときのような挙動をスクリプトでも行いたいのですが、どのような方法があるでしょうか。
よろしくお願いいたします。

Ryosuke
3 months ago
@tamtam @ゆに丸1号 お二人とも、回答や参考サイトありがとうございます! インポート時に何か処理するというのは考えにありませんでした。解に近づいたような気がします! とはいえ、頂いた内容はすぐに理解できる内容で無さそうでしたので、少しずつ読み解いていきたいと思います。 うまく行きそうでしたら報告させてください。 (エディタ拡張、奥深く難しいですね。。。)
ゆに丸1号
3 months ago
@Ryosuke tamtam先生も書いているように、エディタ拡張の話になるかなと思います。インポート時に何かする、というのは AssetPostprocessor で記述することができます。 https://anchan828.github.io/editor-manual/web/assetpostprocessor.html ちょっとうろ覚えですが、 OnPostprocessTexture() などはインポート時しか反応しなかったはずで、インポート後テクスチャを消さず さらに移動させたフォルダ先によって処理内容を分けたい場合などは OnPostprocessAllAssets() を使う必要があったはずです。 https://docs.unity3d.com/ja/current/ScriptReference/AssetPostprocessor.OnPostprocessAllAssets.html …というのはちょっと前の話で、今だと AssetGraph で処理できそうな内容な気がします!その後 ScriptableObject に登録するのは少し敷居が高いかもしれませんが、 AssetGraph の拡張で対応できそうです。 http://baba-s.hatenablog.com/entry/2017/12/26/100000 https://www.slideshare.net/UnityTechnologiesJapan/unityassetgraph-unity と、ここまで書いてなんなのですが、実はほぼ AssetGraph 使ったことないので上手くいくか自信ありません…。ぜひ上手くいったか後日にでも教えてくださいー!
tamtam
3 months ago
@Ryosuke なるほど。とすると、エディター拡張の範疇かもしれませんね。私もそこまで詳しくないですが、この辺の記事とかは参考になるでしょうか? http://kidooom.hatenadiary.jp/entry/2015/12/18/161445
Ryosuke
3 months ago
@tamtam 回答ありがとうございます! またパスから取得するスクリプトについてもありがとうございます。 > 呼び出しているのはプロパティなので変更はできない pivotの値が変更できないとのこと、確認不足でした。。。 最終的にやりたいことは「多数の画像ファイルを、あるディレクトリにインポート。そのディレクトリを指定して、画像を一括でScriptableObjectにSpriteとして登録したい」です。 参考スクリプトを用いて、ディレクトリパス → 画像パス → Texture2D → Sprite に変換。それをScriptableObjectに格納していました。が、まだ画像の仕様が固まっておらず、様子を見ながら開発中(非ランタイム)にpivot位置などを変更したいなと考えていました。 このpivot位置などの変更は画像ファイルのインスペクター Import Settings で行っていく予定ですが、その変更が既に格納済みの ScriptableObject内 の Sprite には反映されないので困ったな、という状況でした。 これを最初の投稿で説明するべきでしたね。説明不足、大変申し訳ないです。
About Me
No description
See more
Skills
Certifications (0)
Import
See all
Ryosuke's liked projects (0)
No likes yet
Following (0)
Not following anyone yet
Follower (1)
Following Companies (0)
Not following anyone yet