uGUIのImageの移動、サイズ変更などなど

Unityで毎回uGUI関連で躓くので覚え書き。説明少なめ

uGUIにアクセス

初心者が真っ先に躓く所でもあるincludeのし忘れ。
uUGIを弄るには1文追加しなきゃならない。以下C#にて

before

using UnityEngine;
using System.Collections;

after

using UnityEngine;
using UnityEngine.UI; //追加し忘れ注意
using System.Collections;

uGUIでサイズ変更

Imageなどサイズを変更する際に陥ったミス(自分だけ?)サイズ変更はScaleに値を渡すのではなくwidthとheightに値を渡さないとサイズは変わらない。

before

private RectTransform hoge;
public float x,y,z;  //変更したいサイズ
void Start(){
     hoge=GameObject.Find("取得したいuGUI").GetComponent<RectTransform>();
     
     hoge.localScale=new Vector3(x,y,z); //これだとサイズが変わらない

after

private RectTransform hoge;
public float x,y;  //変更したいサイズ
void Start(){
     hoge=GameObject.Find("取得したいuGUI").GetComponent<RectTransform>();
     
     hoge.sizeDeslta=new Vector2(x,y); //サイズが変更できる 

渡す値はVector3からVector2(widthとheight)に変わっているので注意。

uGUIのImageなどを移動させる

ImageやRawImageなど移動させたいがうまくいかない。以下動かないC#コード

private Vector3 hoge;
public float x,y,z; 
void Start(){
     hoge=GameObject.Find("取得したいImageオブジェクト").GetComponent<RectTransform>().localPosition;
     
     hoge=new Vector3(x,y,z); //これだと動かない コンパイルは通る

どうやら取得するコンポーネントの順番がいけないっぽい。以下の様に書けば動いた。

private RectTransform hoge;
public float x,y,z; 
void Start(){
     hoge=GameObject.Find("取得したいImageオブジェクト").GetComponent<RectTransform>();
     
     hoge.localPosition=new Vector3(x,y,z); //動いた!

こればかりは説明できない(自分自身が理解してない)。まぁ今はこう書けば動くということを覚えておく。

 

uGUIのImageの移動、サイズ変更などなど」への2件のフィードバック

  1. 通りすがり の発言:

    移動の 1 つ目のコードで Image などが動かないのは、コピーされた localPosition に代入しているだけだからですね。
    localPosition はただのメンバ変数ではなくプロパティになっていて、その setter で実際の移動処理が行われます。
    なので、localPosition を一旦変数に置くのではなく、直接代入している 2 つ目のコードで意図した動きになります。

    (↓でも ok です)
    GameObject.Find(“取得したいImageオブジェクト”).GetComponent().localPosition = new Vector3(x,y,z);

    いいね

    • コメントありがとうございます。まさにその通りです。
      Unityでプロパティを使う文化が自分にはまだないので気づきませんでした。ありがとうございます。

      いいね

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中