質問編集履歴

1

申し訳ございません。コードなどの追記をいたします。

2021/01/29 14:52

投稿

uran_
uran_

スコア0

test CHANGED
File without changes
test CHANGED
@@ -8,4 +8,246 @@
8
8
 
9
9
 
10
10
 
11
- 是非知恵を貸してください。
11
+ 是非知恵を貸してください。```ここに言語を入力
12
+
13
+
14
+
15
+ カードのデータを反映させるために、iconやTextの設定されたCARDをprefab化したものにCardControllerとCardViewをアタッチしました。そのあと最初に設定したCardのTextやiconをCardViewのスクリプトのicon、Text欄にドラッグしました。
16
+
17
+
18
+
19
+ CardController↓
20
+
21
+ ```using System.Collections;
22
+
23
+ using System.Collections.Generic;
24
+
25
+ using UnityEngine;
26
+
27
+
28
+
29
+ public class CardController : MonoBehaviour
30
+
31
+ {
32
+
33
+ public CardView view; // カードの見た目の処理
34
+
35
+ public CardModel model; // カードのデータを処理
36
+
37
+
38
+
39
+ private void Awake()
40
+
41
+ {
42
+
43
+ view = GetComponent<CardView>();
44
+
45
+ }
46
+
47
+
48
+
49
+ public void Init(int cardID) // カードを生成した時に呼ばれる関数
50
+
51
+ {
52
+
53
+ model = new CardModel(cardID); // カードデータを生成
54
+
55
+ view.Show(model); // 表示
56
+
57
+ }
58
+
59
+ }
60
+
61
+ コード
62
+
63
+ ```
64
+
65
+ CardView↓
66
+
67
+ ```using System.Collections;
68
+
69
+ using System.Collections.Generic;
70
+
71
+ using UnityEngine;
72
+
73
+ using UnityEngine.UI;
74
+
75
+
76
+
77
+ public class CardView : MonoBehaviour
78
+
79
+ {
80
+
81
+ [SerializeField] Text nameText, powerText, costText;
82
+
83
+ [SerializeField] Image iconImage;
84
+
85
+
86
+
87
+ public void Show(CardModel cardModel) // cardModelのデータ取得と反映
88
+
89
+ {
90
+
91
+ nameText.text = cardModel.name;
92
+
93
+ powerText.text = cardModel.power.ToString();
94
+
95
+ costText.text = cardModel.cost.ToString();
96
+
97
+ iconImage.sprite = cardModel.icon;
98
+
99
+ }
100
+
101
+ }
102
+
103
+ コード
104
+
105
+ ```
106
+
107
+ カードデータはCardEntityというスクリプトでCardEntityListというフォルダで管理しています。
108
+
109
+ CardEntity↓
110
+
111
+ ```dEntityC#
112
+
113
+ using System.Collections;
114
+
115
+ using System.Collections.Generic;
116
+
117
+ using UnityEngine;
118
+
119
+
120
+
121
+ [CreateAssetMenu(fileName = "CardEntity", menuName = "Create CardEntity")]
122
+
123
+
124
+
125
+ public class CardEntity : ScriptableObject
126
+
127
+ {
128
+
129
+ public int cardID;
130
+
131
+ public new string name;
132
+
133
+ public int cost;
134
+
135
+ public int power;
136
+
137
+ public Sprite icon;
138
+
139
+ コード
140
+
141
+ ```
142
+
143
+ そしてGameManagerというスクリプトにカード2を反映させるためのコードとして以下のコードを打ちました
144
+
145
+ ```meManagerC#
146
+
147
+
148
+
149
+ using System.Collections;
150
+
151
+ using System.Collections.Generic;
152
+
153
+ using UnityEngine;
154
+
155
+
156
+
157
+ public class GameManager : MonoBehaviour
158
+
159
+ {
160
+
161
+ [SerializeField] CardController cardPrefab;
162
+
163
+ [SerializeField] Transform playerHand, playerField, enemyField;
164
+
165
+
166
+
167
+ void Start()
168
+
169
+ {
170
+
171
+ StartGame();
172
+
173
+ }
174
+
175
+
176
+
177
+ void StartGame()
178
+
179
+ {
180
+
181
+ CardController card = Instantiate(cardPrefab, playerHand);
182
+
183
+ card.Init(2);
184
+
185
+ }
186
+
187
+ }
188
+
189
+ コード
190
+
191
+ ```
192
+
193
+ しかしCardをPrefab化する前に設定していたiconなどしか反映されずカードの種類が増えません。
194
+
195
+ もう一つてCardModelというスクリプトも作りました
196
+
197
+ ```
198
+
199
+
200
+
201
+ using System.Collections;
202
+
203
+ using System.Collections.Generic;
204
+
205
+ using UnityEngine;
206
+
207
+ using System;
208
+
209
+
210
+
211
+ public class CardModel
212
+
213
+ {
214
+
215
+ public int cardID;
216
+
217
+ public string name;
218
+
219
+ public int cost;
220
+
221
+ public int power;
222
+
223
+ public Sprite icon;
224
+
225
+
226
+
227
+ public CardModel(int cardID) // データを受け取り、その処理
228
+
229
+ {
230
+
231
+ CardEntity cardEntity = Resources.Load<CardEntity>("CardEntityList/Card" + cardID); // CardEntityのパス
232
+
233
+
234
+
235
+ cardID = cardEntity.cardID;
236
+
237
+ name = cardEntity.name;
238
+
239
+ cost = cardEntity.cost;
240
+
241
+ power = cardEntity.power;
242
+
243
+ icon = cardEntity.icon;
244
+
245
+ }
246
+
247
+ }
248
+
249
+ コード
250
+
251
+ ```
252
+
253
+ 問題解決に至る情報を提供できているか自分でもわからないので不足している情報があればお手数ですが教えて下さい。