質問: 初めに --- 初めまして。この度は、初めてUnity3Dを使いゲーム製作を試みているのですが、わからない事がでてしまいました。ご教授お願いします。 謎解きの迷路を作成しようと思っています。 前提 -- game画面右側に、UIのBUTTONでアイテムリストを作成しました。 Playerがアイテムに触れると、そのアイテムは消え、Button内にその消えたアイテムの画像を表示させるようにしたいと考えております。 現状 -- アイテムリスト、Player、Itemをそれぞれ作成しました。 また、PlayerがItemに触れると、そのアイテムは消えます。しかし、Button内にItemの画像が出力されません。 画像の準備はできています。 下に現在の状況を画像で説明させて頂きますが、 下のGameの右のbuttonのアイテムリストの一つに、画像を表示させたいです。 不明な点や、その他必要な資料がありましたら、送らせて頂きます。 よろしくお願いします。 現状の画像 ----- ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/8c775ca34791004f56325d7a7ec12da2.png) これが現在の状態です。 Gameの右側にbuttonでアイテムリストを作成しました。 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/533a0856f8d1cee006c028696b01d2d9.png) これがItemのスクリプトです。 現在は、playerに触れると消えるのみの設定です。 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/00d91957f6cd31c098d3654b98201d9c.png) これが準備した画像です。 今、地面にはplayerとItemとしてCubeでつくった物が一つあります。
回答: たぶん右側のボタンをインベントリみたいな感じで使いたいってことですよね。 とりあえずボタンの画像を差し替えるやり方を試してそれをゲームに反映させたらいいかと思います。 画像を差し替えるためには`GetComponent().sprite`でImageのスプライトを差し替えてあげればOKです どういう仕様で作りたいかわからなかったので、とりあえずアイテム側に画像とボタンを指定させるアナログな方法でやってみます。 ``` using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Item : MonoBehaviour { [SerializeField] Sprite myImage; // 取得したときにボタンに表示する画像 [SerializeField] Image myButtonImage; // 変更したいUI画像(ボタン自体 or ボタン小要素にImage追加してそれをアタッチ) private void OnTriggerEnter(Collider other) { if(other.tag == "Player") { myButtonImage.GetComponent().sprite = myImage; Destroy(gameObject); } } } ``` アイテム自体に「自身のアイコン画像」と「変化させたい画像(ターゲット)」をインスペクターでアタッチします あとは`GetComponent().sprite`で自身にアタッチしている画像で、ターゲットの画像を差し替えています。とりあえず`GetComponent().sprite`でImageの画像を差し替えできるというのがわかればボタンなり、UIなり、スプライトなりに応用できると思います。