FC2ブログ
    06 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.» 08

    ハルシオンシステムの気ままBlog

    株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

     

    【Unity】NGUIのUISpriteで絵を変えたけど、小さいんですけど?絵のサイズで合わせちゃえYO! 

    梅雨っすねぇ~ 雨ばっかでいやになります。湿気が!!!!
    はい、坂内です。
    髪の色が落ちてきて、ただの金髪になった今日この頃。

    先週木曜日にビックサイト行ってきましたYO!なんちゃらEXPOっす。

    ユニティ・テクノロジーズ・ジャパンさんのブースお邪魔してきました!
    ユニティちゃんと写真撮ってきました!うへへへ
    あ、それと初めてOcculus触ってきました!面白いっすね!
    これはもう、くそゲーマーとしてはゲーム化が楽しみです!

    他にも色々なブースを見てきましたが、なかなか面白いもんですねー
    あんまり、ああいうイベントとか行かないもので、新鮮で良かったっす!

    本日のUnity+NGUIのお話は、UISpriteの大きさのお話。
    こんな絵を用意します。
    こいつらはAtlasにしちゃいます。

    サイズ:50x50
    ファイル名:20140707_01

    イカです。
    サイズ:200x200
    ファイル名:20140707_02

    で、UISpriteで「あ」の絵を設定しておきます。

    以下のスクリプトをSpriteのオブジェクトにつけます。
    using UnityEngine;
    using System.Collections;

    public class TestSprite : MonoBehaviour {
    const string IKA = "20140707_02";
    public void ChangeSprite(){
    gameObject.GetComponent().spriteName = IKA;
    }
    }

    UIEventTriggerのOnClick/TapでChangeSpriteを呼びます。

    で、実際にタップするとこうなります。

    小さい!元の50x50の大きさのままだよ!!

    ってことで、以下のコードにすることで、絵の大きさをそのまま反映することができるようです。
    using UnityEngine;
    using System.Collections;

    public class TestSprite : MonoBehaviour {
    const string IKA = "20140707_02";
    public void ChangeSprite(){
    gameObject.GetComponent().spriteName = IKA;
    // サイズ設定調整
    UISpriteData data = gameObject.GetComponent().GetAtlasSprite();
    UIRect rect = gameObject.GetComponent().GetComponent();

    // 位置を保存
    Vector3 tmpPosition = rect.transform.localPosition;
    // Atlasの絵の大きさに、サイズを調整
    rect.SetRect(0, 0, data.width, data.height);
    // 大きさ変更時にずれた位置を保存場所に戻す
    rect.transform.localPosition = tmpPosition;
    }
    }

    はい!これでイカも200x200になりました!

    同じ大きさで変更するには問題ないけど、異なる大きさにspriteNameで変更するときは、こんなことしないといけないんですねー
    UISpriteにこの辺、簡単にできるチェックボックス「AutoResize Sprite」とかね!でもあると素敵なんですけどね!!w

    ってことで、本日はおしまい! アデュ~!!ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0