質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

1回答

5429閲覧

Unity ボタンをクリックした時に別画像を配置する方法

TakerouYasuhara

総合スコア10

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2015/11/23 06:37

編集2015/11/23 06:50
  • ボタンをクリックした時にプレハブの画像(チェックマーク)を呼び、ボタンの上に表示させたいと思っています
  • 以下のようにスクリプト組んでいるのですが、Aspectが変わるとプレハブからよんでくる画像(チェックマーク)の位置がずれてしまいます。

C#

1using UnityEngine; 2using System.Collections; 3 4public class ControllCheckMark : MonoBehaviour { 5 6 void Start () { 7 } 8 9 void Update () { 10 } 11 12 public void LoadCheckMark1(){ 13 Vector3 vec = Camera.main.ScreenToWorldPoint (Input.mousePosition); 14 Debug.Log ("x=" + vec.x + " y=" + vec.y + " z=" + vec.z); 15 16 GameObject checkmark = (GameObject)Resources.Load ("CheckMark"); 17 GameObject obj = (GameObject)Instantiate (checkmark, new Vector3 (87, 435, -10), checkmark.transform.rotation); 18 obj.transform.SetParent (GameObject.Find ("SelectedAction1").transform); 19 } 20}
  • Vector3 vecにワールド座標を代入して以下のようにスクリプトを変更しても変な位置に表示されてしまいます

C#

1GameObject obj = (GameObject)Instantiate (checkmark, new Vector3 (vec.x, vec.y, vec.z), checkmark.transform.rotation);
  • Unity、C#に詳しい方アドバイスをいただけないでしょうか?
  • 以下のような状態から、Aspectを変えても常に画像を押した時に画像の上にチェックマークがくるような状態にしたいと思っております

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

画面のAspectの変化に対応させるのならば、uGUIのCanvas Scalerを使うことで対応出来ると思います。
Canvas ScalerUI Scale ModeScale With Screen Sizeにすることで、Reference Resolutionに指定したサイズで調整してくれるようになります。

イメージ説明

ボタンの位置にチェックマークを表示させたいのでしたら、ローカル座標(0,0,0)の状態でボタンの子オブジェクトにすれば、確実にボタンの同じ位置に表示されると思います。
座標(0,0,0)の状態でチェックマークを作成し、SetParent()を用いてボタンの子オブジェクトにしてみてください。
SetParent()の第二引数にfalseを入れることで、ローカル座標が変化することなく子オブジェクトになることができます。

var checkmark = Resources.Load( "CheckMark" ); var obj = (GameObject)Instantiate( checkmark ); obj.transform.SetParent( GameObject.Find( "SelectedAction1" ).transform, false );

ご参考になればと思います。

投稿2016/06/05 21:54

urahimono

総合スコア714

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問