いぬおさんのおもしろ数学実験室

おいしい紅茶でも飲みながら数学、物理、工学、プログラミング、そして読書を楽しみましょう

画像ファイル名を指定してスクリプトから読み、画像を表示する方法

 またしてもハマったので記録しておきます。スクリプトから画像ファイル名を指定して、Imageに表示する方法です。
 Canvasの下に「Image100」が配置されているとします。このImage100に画像ファイル「Inuosann.png」を表示するとします。この画像ファイルは、Assetフォルダ内のResourcesフォルダの中に置いておいてください。もしResourcesフォルダがなければ作っておきます。以下のコードでうまく表示されます。

        Sprite sprite = Resources.Load<Sprite>("Inuosann") as Sprite;
        GameObject goImage = GameObject.Find("Image100");
        Image im = goImage.GetComponent<Image>();
        im.sprite = sprite;

 コード中のファイル名を見ると分かりますが、「Inuosann.png」でなく、「Inuosann」です。前者ではエラーが出ます!! そういう仕様なんでしょうが、「どうして……??」という感じです……。


 この流れで、Windowsではよく見る、スマホで使えるファイル選択ダイアログみたいなものがないかと探したんですが、すぐ使えるようなものはなさそうです(Windowsプログラミングでは楽に使えます)。あるにはあるけれど、Unityのエディタで動かしている間は使えますが、スマホ用にビルドすると使えなくなるとのこと。他にもそういうの、ありましたよね。yes/no のダイアログボックスとか。
 でもファイル選択ダイアログに関しては無料のアセットが。これを導入してみました。
assetstore.unity.com
まだスマホでは試していませんが、PCではうまくいっています。
 なんでスマホではこういう基本的と思えるものがすぐ使えるようになっていないんでしょうか……。

追記:
今回記事にした方法では、プログラミングの時にResourcesフォルダに入れておいた画像しか表示できなさそうです。他の、例えばネット上の画像などを表示したいときはImageでなくRawImageを使うのだそう。近いうちに実験して結果を書きます。