質問編集履歴
10
ていせい
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
訂正
title
CHANGED
File without changes
|
body
CHANGED
@@ -123,8 +123,10 @@
|
|
123
123
|
これでタイプ情報が入っているようです。
|
124
124
|
大きな画像もこれと同じ要領で書き換えればついに目的達成できる・・・??
|
125
125
|
|
126
|
+
↑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
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
|
-
|
134
|
+
case Item.Type.A_Item: //アイテムタイプがA_Item の時
|
137
|
-
|
135
|
+
ItemImage01Big.SetActive(true); //アイテムAの拡大画像を表示
|
138
|
-
|
136
|
+
break;
|
139
|
-
|
140
|
-
|
137
|
+
case Item.Type.B_Item: //アイテムタイプがB_Item の時
|
141
|
-
|
138
|
+
ItemImage02Big.SetActive(true); //アイテムBの拡大画像を表示
|
142
|
-
|
139
|
+
break;
|
143
|
-
|
140
|
+
}
|
144
141
|
}
|
145
142
|
これでスロットに入っている画像のタイプを見てくれて条件式分けが出来ると思っていたのですが
|
146
143
|
この書き方では押した画像のスロットのタイプを全く参照してないようでどっちのcaseも通らないようです
|
7
スクリプトの表示が変なのを直した
title
CHANGED
File without changes
|
body
CHANGED
@@ -130,17 +130,17 @@
|
|
130
130
|
|
131
131
|
public void PointerDown()
|
132
132
|
{
|
133
|
-
|
133
|
+
Debug.Log("画像が押されてます");
|
134
134
|
switch (ItemType)
|
135
135
|
{
|
136
|
-
|
136
|
+
case Item.Type.A_Item: //アイテムタイプがA_Item の時
|
137
|
-
|
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
訂正
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
なおし
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
修正
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
|
-
|
120
|
+
ItemType = item.type; //これでSlotのTypeにアイテムのTypeが入った。。。のではないか?
|
120
|
-
type.type= item.type; //←情報を入れる際にエラー(error CS1003: Syntax error, ',' expected)で止まってしまった
|
121
121
|
}
|
122
122
|
画像は void UpdateImage(Item item) を使って書き換えることが出来ているので
|
123
123
|
それと同じタイミングでtypeの情報を書き換える方法がわかればおそらく解決です
|
3
改善
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
補足追加
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
修正
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
|
特になし
|