teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

10

ていせい

2025/06/27 19:44

投稿

Tora_ou
Tora_ou

スコア16

title CHANGED
File without changes
body CHANGED
@@ -144,4 +144,4 @@
144
144
  これでスロットに入っている画像のタイプを見てくれて条件式分けが出来ると思っていたのですが
145
145
  この書き方では押した画像のスロットのタイプを全く参照してないようでどっちのcaseも通らないようです
146
146
  ※switchの外に書いた Debug.Log("画像が押されてます"); は動いているのでcaseの中だけ通ってない
147
- 押した画像のタイプを条件式に書く場合はどのよう書けば良いのでしょうか
147
+ 押した画像のItemType参照させてそれを条件式に書く場合はどのよう書けば良いのでしょうか

9

訂正

2025/06/27 19:41

投稿

Tora_ou
Tora_ou

スコア16

title CHANGED
File without changes
body CHANGED
@@ -123,8 +123,10 @@
123
123
  これでタイプ情報が入っているようです。
124
124
  大きな画像もこれと同じ要領で書き換えればついに目的達成できる・・・??
125
125
 
126
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2025-06-28/476d9408-e201-43ec-a5e8-a42ca7086946.jpeg)↑Typeが書き換えれてスロットに情報としてちゃんと入っています・・・
127
+ (画像の C_charm4 というのが4時間もかけてようやく入れる事の出来たItemType
126
- ↑タプは書き換えれてスロットに情報してちゃんとっています・・・が
128
+ テムが違うこの部分もちゃんと変わるようになってくれた)
127
- その画像を押した時、そのスロットに設定されている
129
+ ・・・が、しかしその画像を押した時、そのスロットに設定されている
128
130
  タイプが A_Item,ならこの画像を表示、B_Item,ならこの画像を表示、
129
131
  という事が出来ると思っていたのですが今度はその条件式の書き方がわからないです。。。
130
132
  public void PointerDown()

8

a

2025/06/27 19:32

投稿

Tora_ou
Tora_ou

スコア16

title CHANGED
File without changes
body CHANGED
@@ -127,20 +127,17 @@
127
127
  その画像を押した時、そのスロットに設定されている
128
128
  タイプが A_Item,ならこの画像を表示、B_Item,ならこの画像を表示、
129
129
  という事が出来ると思っていたのですが今度はその条件式の書き方がわからないです。。。
130
-
131
130
  public void PointerDown()
131
+ { Debug.Log("画像が押されてます");
132
+   switch (ItemType)
132
- {
133
+   {
133
- Debug.Log("画像が押されてます");
134
-  switch (ItemType)
135
-  {
136
- case Item.Type.A_Item: //アイテムタイプがA_Item の時
134
+ case Item.Type.A_Item: //アイテムタイプがA_Item の時  
137
- ItemImage01Big.SetActive(true); //アイテムAの拡大画像を表示
135
+    ItemImage01Big.SetActive(true); //アイテムAの拡大画像を表示
138
- break;
136
+ break;
139
-
140
- case Item.Type.B_Item: //アイテムタイプがB_Item の時
137
+ case Item.Type.B_Item: //アイテムタイプがB_Item の時
141
- ItemImage02Big.SetActive(true);  //アイテムBの拡大画像を表示
138
+ ItemImage02Big.SetActive(true);  //アイテムBの拡大画像を表示
142
- break;
139
+ break;
143
- }
140
+ }
144
141
  }
145
142
  これでスロットに入っている画像のタイプを見てくれて条件式分けが出来ると思っていたのですが
146
143
  この書き方では押した画像のスロットのタイプを全く参照してないようでどっちのcaseも通らないようです

7

スクリプトの表示が変なのを直した

2025/06/27 19:30

投稿

Tora_ou
Tora_ou

スコア16

title CHANGED
File without changes
body CHANGED
@@ -130,17 +130,17 @@
130
130
 
131
131
  public void PointerDown()
132
132
  {
133
- Debug.Log("画像が押されてます");
133
+ Debug.Log("画像が押されてます");
134
134
   switch (ItemType)
135
135
   {
136
- case Item.Type.A_Item: //アイテムタイプがA_Item の時
136
+ case Item.Type.A_Item: //アイテムタイプがA_Item の時
137
- ItemImage01Big.SetActive(true); //アイテムAの拡大画像を表示
137
+ ItemImage01Big.SetActive(true); //アイテムAの拡大画像を表示
138
138
  break;
139
139
 
140
140
  case Item.Type.B_Item: //アイテムタイプがB_Item の時
141
141
  ItemImage02Big.SetActive(true);  //アイテムBの拡大画像を表示
142
142
  break;
143
-  }
143
+ }
144
144
  }
145
145
  これでスロットに入っている画像のタイプを見てくれて条件式分けが出来ると思っていたのですが
146
146
  この書き方では押した画像のスロットのタイプを全く参照してないようでどっちのcaseも通らないようです

6

訂正

2025/06/27 19:28

投稿

Tora_ou
Tora_ou

スコア16

title CHANGED
File without changes
body CHANGED
@@ -121,4 +121,28 @@
121
121
  画像は void UpdateImage(Item item) を使って書き換えることが出来ているので
122
122
  それと同じタイミングでtypeの情報を書き換えれば、と思い試してみたところ、
123
123
  これでタイプ情報が入っているようです。
124
- 大きな画像もこれと同じ要領で書き換えればついに目的達成できる・・・??
124
+ 大きな画像もこれと同じ要領で書き換えればついに目的達成できる・・・??
125
+
126
+ ↑タイプは書き換えれてスロットに情報としてちゃんと入っています・・・が
127
+ その画像を押した時、そのスロットに設定されている
128
+ タイプが A_Item,ならこの画像を表示、B_Item,ならこの画像を表示、
129
+ という事が出来ると思っていたのですが今度はその条件式の書き方がわからないです。。。
130
+
131
+ public void PointerDown()
132
+ {
133
+ Debug.Log("画像が押されてます");
134
+  switch (ItemType)
135
+  {
136
+ case Item.Type.A_Item: //アイテムタイプがA_Item の時
137
+ ItemImage01Big.SetActive(true); //アイテムAの拡大画像を表示
138
+ break;
139
+
140
+ case Item.Type.B_Item: //アイテムタイプがB_Item の時
141
+ ItemImage02Big.SetActive(true);  //アイテムBの拡大画像を表示
142
+ break;
143
+  }
144
+ }
145
+ これでスロットに入っている画像のタイプを見てくれて条件式分けが出来ると思っていたのですが
146
+ この書き方では押した画像のスロットのタイプを全く参照してないようでどっちのcaseも通らないようです
147
+ ※switchの外に書いた Debug.Log("画像が押されてます"); は動いているのでcaseの中だけ通ってない
148
+ 押した画像のタイプを条件式に書く場合はどのよう書けば良いのでしょうか

5

なおし

2025/06/27 18:54

投稿

Tora_ou
Tora_ou

スコア16

title CHANGED
File without changes
body CHANGED
@@ -113,13 +113,12 @@
113
113
  image.sprite = item.sprite; //Slotのimageにアイテムのspriteを入れる
114
114
  }
115
115
 
116
-             //SlotのTypeにアイテムのTypeを入れたい。。。が書き方がよくわからない
117
116
  //public Item.Type ItemType; アイテム用の変数を宣言しておいて
118
117
  void UpdateType(Item item) //タイプを書き換える関数が無かったので追加してみた
119
118
  {
120
119
  ItemType = item.type; //これでSlotのTypeにアイテムのTypeが入った。。。のではないか?
121
120
  }
122
121
  画像は void UpdateImage(Item item) を使って書き換えることが出来ているので
123
- それと同じタイミングでtypeの情報を書き換える方法がわかればおそらく解決です
122
+ それと同じタイミングでtypeの情報を書き換えれば、と思い試してみたところ、
124
- ここで書き換えていないせいで何が出た場合でも type が A_Item のままずっと変わらず
125
- 出てきたアテムの区別と付かなままなのです
123
+ これでタプ情報るようです
124
+ 大きな画像もこれと同じ要領で書き換えればついに目的達成できる・・・??

4

修正

2025/06/27 18:36

投稿

Tora_ou
Tora_ou

スコア16

title CHANGED
File without changes
body CHANGED
@@ -113,11 +113,11 @@
113
113
  image.sprite = item.sprite; //Slotのimageにアイテムのspriteを入れる
114
114
  }
115
115
 
116
-             //SlotのTypeにアイテムのTypeを入れたい。。。が書き方がわからない
116
+             //SlotのTypeにアイテムのTypeを入れたい。。。が書き方がよくわからない
117
+ //public Item.Type ItemType; アイテム用の変数を宣言しておいて
117
118
  void UpdateType(Item item) //タイプを書き換える関数が無かったので追加してみた
118
119
  {
119
- Item type.type = item.type;  //←赤波線エラー書き方違う
120
+ ItemType = item.type; //これでSlotTypeにアイテムのType入った。。。のではないか?
120
-   type.type= item.type;  //←情報を入れる際にエラー(error CS1003: Syntax error, ',' expected)で止まってしまった
121
121
  }
122
122
  画像は void UpdateImage(Item item) を使って書き換えることが出来ているので
123
123
  それと同じタイミングでtypeの情報を書き換える方法がわかればおそらく解決です

3

改善

2025/06/27 18:14

投稿

Tora_ou
Tora_ou

スコア16

title CHANGED
File without changes
body CHANGED
@@ -92,4 +92,34 @@
92
92
  public Type type;(種類)も取得する方法がわかっていないです
93
93
  これがわかればこのtypeの場合、画像を押したらこの画像をこの部分に大きく表示、といったような
94
94
  条件式も書けると思うのですが
95
- ここまでわかっていなくて今、アイテムスロットに画像が表示されてるはどうしてなのか、自分でも不思議です
95
+ ここまでわかっていなくて今、アイテムスロットに画像が表示されてるはどうしてなのか、自分でも不思議です
96
+
97
+ 先の質問での
98
+ https://teratail.com/questions/twk0oiyg3lztpx#reply-rnuh8uqb2imsm8
99
+ コードを何度も見直していて気付いた事が有って
100
+ private void Awake()
101
+ {
102
+ image = GetComponentsInChildren<Image>().Where(c => gameObject != c.gameObject).Single();  //こう書くことで子の画像を指定できている、コードの意味はわからない
103
+ }
104
+ public void SetItem(Item item)
105
+ {
106
+ this.item = item;
107
+ UpdateImage(item); //←今まではこれしか無かった、画像しか更新されていなかった
108
+ UpdateType(item); //←なのでこれを追加してtypeを更新すれば区別できるのでは??
109
+ }
110
+
111
+ void UpdateImage(Item item) //これは先の質問の時にも有った関数、slotの画像情報を書き換え
112
+ {
113
+ image.sprite = item.sprite; //Slotのimageにアイテムのspriteを入れる
114
+ }
115
+
116
+             //SlotのTypeにアイテムのTypeを入れたい。。。が書き方がわからない
117
+ void UpdateType(Item item) //タイプを書き換える関数が無かったので追加してみた
118
+ {
119
+ Item type.type = item.type;  //←赤波線のエラー書き方が違う
120
+   type.type= item.type;  //←情報を入れる際にエラー(error CS1003: Syntax error, ',' expected)で止まってしまった
121
+ }
122
+ 画像は void UpdateImage(Item item) を使って書き換えることが出来ているので
123
+ それと同じタイミングでtypeの情報を書き換える方法がわかればおそらく解決です
124
+ ここで書き換えていないせいで何が出た場合でも type が A_Item のままずっと変わらず
125
+ 出てきたアイテムの区別がずっと付かないままなのです

2

補足追加

2025/06/27 17:40

投稿

Tora_ou
Tora_ou

スコア16

title CHANGED
File without changes
body CHANGED
@@ -56,4 +56,40 @@
56
56
  「prefab」だと [SerializeField] が全部外れてしまうのは色々な解説を読んで理由もわかりましたが、結果、とても使いにくくてわかりにくくて便利ではないです。
57
57
 
58
58
  ### 補足
59
+ Itemの情報として
60
+ [Serializable]
61
+ public class Item
62
+ {
63
+  public enum Type
64
+  {
65
+  A_Item,
66
+  B_Item,
67
+  C_Item,
68
+  D_Item,
69
+  E_Item,
70
+  F_Item,
71
+  G_Item, 
72
+  H_Item,
73
+  }
74
+ public Type type; //種類
75
+ public Sprite sprite; //アイテムスロットに表示する画像 これは正しく表示出来ている
76
+ public Sprite BigSprite; //大きく出す画像
77
+ }
78
+
79
+ 種類、スロットに表示する画像(これは正しくアイテムスロットに表示が出来ている)
80
+ そして public Sprite BigSprite; //スロットの画像を押した際に大きく出したい画像
81
+ と↑の3つの情報があって設定が出来ているのですが
59
- 特になし
82
+ 先の質問で
83
+ https://teratail.com/questions/twk0oiyg3lztpx#reply-rnuh8uqb2imsm8
84
+
85
+ image = GetComponentsInChildren<Image>().Where(c => gameObject != c.gameObject).Single();
86
+ と書いて子オブジェクトを指定する方法を教えてもらって
87
+ 子オブジェクトからスロットの画像を取得できて、アイテムスロットに画像を入れれたものの
88
+ コードの意味が何も分かっていないままコピーしただけなのでなぜこれで
89
+ 子オブジェクトの画像が入れれているのかわかっていません、つまり
90
+ public Sprite BigSprite;の中に入っている「スロットの画像を押した際に大きく出したい画像」も
91
+ もちろん指定できない、という状態です
92
+ public Type type;(種類)も取得する方法がわかっていないです
93
+ これがわかればこのtypeの場合、画像を押したらこの画像をこの部分に大きく表示、といったような
94
+ 条件式も書けると思うのですが
95
+ ここまでわかっていなくて今、アイテムスロットに画像が表示されてるはどうしてなのか、自分でも不思議です

1

修正

2025/06/27 07:16

投稿

Tora_ou
Tora_ou

スコア16

title CHANGED
File without changes
body CHANGED
@@ -53,6 +53,7 @@
53
53
  ##### 上記の詳細・結果
54
54
  この数週間で完全に「prefab」に苦手意識を持ってしまいました。
55
55
  これが出てくるだけで数時間、時には数十時間、何も進まない、という体験を連続で食らってしまっています。
56
+ 「prefab」だと [SerializeField] が全部外れてしまうのは色々な解説を読んで理由もわかりましたが、結果、とても使いにくくてわかりにくくて便利ではないです。
56
57
 
57
58
  ### 補足
58
59
  特になし