ItemButton スクリプトをベースにしていますので、今回追加したゲームオブジェクトに対して、
制御したいコンポーネントを考えて処理を組み立ててみてください。
宣言する変数については操作・制御を行いたいコンポーネントを指定して用意を行います。
メソッドについては OnDeselected メソッドはそのまま利用していただけますが、
他のものは手を加えたり、新しく作成を行う必要があります。
まず前提として、ItemButtonDetail ゲームオブジェクトはプレファブになっており、
このプレファブは外部のスクリプトによって生成されることになります。
その際に、ItemData クラスの情報と所持している数の情報が定義されますので、その情報を引数を通じて受け取って、
ItemButtonDetail ゲームオブジェクトの各コンポーネントに設定を行う処理が必要になります。
ItemData クラスの情報は、ItemData クラスの代入されている変数にピリオドを追加することで、内部の値の参照が可能になります。
[SerializeField]
private ItemDataSO.ItemData itemData;
// 変数を使って、ItemData クラスの内部情報を参照
itemData.itemName;
処理の全体の流れを把握した上でスクリプトの処理を考えていくと分かりやすくなります。
ItemButtonDetail.cs
<= クリックすると開きます
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ItemButtonDetail : MonoBehaviour
{
[SerializeField]
private Text txtItemName;
[SerializeField]
private Text txtItemInfo;
[SerializeField]
private Text txtItemCount;
[SerializeField]
private Image imgItem;
[SerializeField]
private Button btnItem;
[SerializeField]
private ItemDataSO.ItemData itemData;
/// <summary>
/// ItemButtonDetail の設定(外部のスクリプトから呼び出される前提のメソッド)
/// </summary>
/// <param name="itemData">アイテムのデータ</param>
/// <param name="count">アイテムの所持数</param>
public void SetUpItemButtonDetail(ItemDataSO.ItemData itemData, int count) {
this.itemData = itemData;
txtItemName.text = this.itemData.itemName.ToString();
txtItemCount.text = count.ToString();
imgItem.sprite = this.itemData.itemSprite;
}
/// <summary>
/// ボタンのアクティブ状態の切り替え
/// </summary>
/// <param name="isSwitch"></param>
public void SwithcActivateItemButtonDetail(bool isSwitch) {
imgItem.enabled = isSwitch;
btnItem.interactable = isSwitch;
}
/// <summary>
/// アイテムボタンが押された時の処理
/// </summary>
public void OnSelected() {
txtItemInfo.text = this.itemData.itemInfo;
}
/// <summary>
/// アイテムボタンから移動したときの処理
/// </summary>
public void OnDeselected() {
txtItemInfo.text = "";
}
}
スクリプトを作成したらセーブを行います。