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