---
# System prepended metadata

title: Hano

---

# Hano

## 回答
おそらく継承という技術を使えば実装ができるのではないだろうか

## 質問
### GetComponentの<>のところに、スクリプト名を入れるのではなくて、string型の変数を入れたい。
#### <クリックしたゲームオブジェクトについてるid管理のスクリプト>という雑な指定がしたいんや…
##### まあ何言ってるかわからないと思うので下の説明を見て欲しいです。

### 共通
int clickItemId;
Image clickItemImg;
string clickItemName;

ピーチ疑問
これは何クラスにあるの？？？

回答
CraftInventoryScriptっていう、clickItemName = this.gameObject.GetComponent~とかが書いてあるところ。
Cubeじゃない。

### 現実
クリックしたものがCubeだった場合だけしか使えない萎えコード。
clickItemName = this.gameObject.GetComponent<Cube>().itemName;
clickItemId = this.gameObject.GetComponent<Cube>().id;
clickItemImg = this.gameObject.GetComponent<Cube>().itemImg;

ピーチ疑問
このキューブは自分で作ったクラス？Cubeは元からあるから別の名前が良い

回答
変えます〜


### 理想
クリックした画像の名前を取得することで、どのアイテムをクリックしてもアイテム名とidと画像が取得できる。

clickItemName = this.gameObject.GetComponent<Image>().name;
clickItemId = this.gameObject.GetComponent<clickItemName>().id;
clickItemImg = this.gameObject.GetComponent<clickItemName>().itemImg;

#### 補足説明
クリックしたオブジェクトの画像の名前(string型)を取得してclickItemNameに入れる。
クリックしたオブジェクトにはその名前のスクリプトがついてるので、clickItemNameを使ってスクリプトを取得。
そして取得したスクリプト内のidをclickItemId(int型)に入れたい。


### 願望
ほんとはこれがしたい〜〜〜〜〜！！！！！
多分無理だよなあと思って理想の方のやり方でやろうと思ってる。
理想の方でやると画像の名前ちゃんとつけなきゃいけないけど、それくらいはやれって感じだけど楽したいなあという願望。

clickItemName = this.gameObject.GetComponent<クリックしたゲームオブジェクトについてるid管理のスクリプト>().name;
clickItemId = this.gameObject.GetComponent<クリックしたゲームオブジェクトについてるid管理のスクリプト>().id;
clickItemImg = this.gameObject.GetComponent<クリックしたゲームオブジェクトについてるid管理のスクリプト>().itemImg;

ピーチ説明
これでやりましょう
クリックしたゲームオブジェクトについてるid管理のスクリプトが理想で行なっている処理をすればいいのでは？

回答
すればいいけど、clickItemId = this.gameObject.GetComponent<clickItemName>().id;っていうコードを書くと、clickItemNameはfield(変数)だから無理...type(型)じゃないと無理...って言ってくるのでもうどうしようと思って。変数入れたい...(泣)

GetComponentはあくまでコンポーネントを取得するものだからゲームオブジェクトに付いているコンポーネント(rigidbodyとかColliderとか自作のクラスとかとか)しか取得できないので，staticクラスか何かで用意するか何かしないといけない

#### 補足説明
なんかすごい力(?)でクリックしたゲームオブジェクトについてるid管理のスクリプトを的確にとってきてくれるのがあればいいなあ(思考放棄)