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

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

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

Q&A

解決済

1回答

2164閲覧

unity2D canvas上のある一つのImageの色を変えようとすると,canvas上のすべてのImageの色が変わってしまいます。

shibashi

総合スコア10

0グッド

0クリップ

投稿2019/07/09 13:02

編集2019/07/09 13:33

前提・実現したいこと

https://cfm-art.sakura.ne.jp/sys/archives/527
上記URLサイト(【チュートリアル】uGUIとPhysics2Dでブロック崩しを作ってみる)
を参考に、ゲームを作る過程で、
球(image)が壁(image)に当たるたびに反射して、
球の色を変えようとしています。

発生している問題・エラーメッセージ

球が壁に当たると球も壁も一緒に色が変わってしまいます。

イメージ説明
イメージ説明

該当のソースコード

C#

1using UnityEngine; 2using UnityEngine.UI; 3 4public class BallScript : MonoBehaviour { 5 6 void Start () { 7 8 var body = gameObject.GetComponent<Rigidbody2D>(); 9 var canvas = GetComponentInParent<Canvas>(); 10 var direction = new Vector2(1, 1).normalized; 11 body.velocity = direction * 480 * canvas.transform.localScale.x; 12 } 13 14 // Update is called once per frame 15 void Update () { } 16 17 public void changeColor() 18 { 19 var image = GetComponent<Image>(); 20 image.material.color = Color.red; 21 } 22 23 void OnCollisionEnter2D(Collision2D collision) 24 { 25 Debug.Log("Hit" + collision.gameObject.name); // ログを表示する 26 changeColor(); 27 } 28}

試したこと

壁と球でcanvasを別にしてもダメでした。

最近unityの勉強を始めたばかりで知識不足のため、
しょうもないことをお聞きしているかもしれませんが解決策に心当たりのある方が、
いらっしゃいましたら回答のほどよろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

image.material.color = Color.red;
ここを
image.color = Color.red;
こうすれば正しく動くと思います。

Imageコンポーネントのマテリアルを変更しない場合、デフォルトの(共通の)マテリアルが使われます。
前者の書き方をするとその共通マテリアルの色を変えてしまう為、同じマテリアルを使っている他のImageの色も変わります。

※uGUIではない通常オブジェクト等の場合は前者の書き方でよくて、逆に共通マテリアルを弄りたい場合はrenderer.sharedMaterial.color = Color.red;とします。
※Imageコンポーネントのマテリアルを設定している場合にimage.material.color = Color.red;がどう動くのかは未検証です。確認してみるといいかもしれません。

投稿2019/07/10 00:34

sakura_hana

総合スコア11427

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

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

shibashi

2019/07/10 05:34

私の希望する挙動にすることができました。 マテリアルについて補足説明までして頂き 誠にありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問