【Unity】スプライト画像を読み込む方法

unity-c#-get-sprite

2018年からプログラミング(Unity C#)もたしなみます!

業務ではまったくコードかかないので、ホント趣味になりますが。。。

※ちなみに美術系の大学だったので、プログラミングの基礎的知識はないです。業務でmayaのmelを少し覚えた程度です。なので間違っていたらすみません!

さっそくVisual Studio 2017インストールしまして、C#の本読みながらちょっとずつ勉強していきます。

スプライト画像を読み込む方法

  • 差し替える画像(ブログのprofile画像)

f:id:min0124:20180105205009p:plain

こんな感じ。

インスペクターで指定したスプライト画像に変更する場合

  • GameObject>UI>Imageを作成

  • Imageに下記のコードをアタッチ

using UnityEngine;
using UnityEngine.UI;

public class Test : MonoBehaviour
{
    Image image;

    [SerializeField]
    private Sprite sprite;

    // Use this for initialization
    void Start()
    {
        image = this.GetComponent<Image>();
        image.sprite = sprite;
    }
}
  • アタッチ後、Spriteに画像(profile)をアサイン

  • 再生を押すと、Imageの画像(profile)に変化します。

メモ

  • publicにしたくなかったので、[SerializeField]をつけてprivateでもインスペクタに表示できるように

  • imageのコンポーネントに直接アタッチ。別のゲームオブジェクトにつけて GameObject.Find("Image")みたいにして探すのは処理が重い。

ファイルパスからTexture2DやSpriteの読み込み - Qiita

Unity - スクリプトリファレンス: UI.Image.sprite

Assets/Resourcesからスプライト画像を読み込んで変更する場合

using UnityEngine;
using UnityEngine.UI;

public class Test : MonoBehaviour {

    private Image image;

    private Sprite sprite;

    // Use this for initialization
    void Start () {
        sprite = Resources.Load < Sprite > ("profile");
        image = this.GetComponent<Image>();
        image.sprite = sprite;
    }
}

メモ

  • Assets直下にResourcesフォルダを作成し、そのなかにスプライト画像(profile)を格納。Resources.Load < Sprite >()で読み込む。

docs.unity3d.com

まとめ

変数の命名はわざと似たようなのにしました。

いままでは上記のような命名だと混乱したのですが(クラスとメソッドの関係が理解してなかった)、C#の本で学んで、ようやく何を指すのかわかってきました。

英語のフレーズを丸暗記するより(いままで)、文法を理解したほうが応用が効くと思います。

参考書籍