質問編集履歴

1

変更

2020/03/30 07:59

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- 非表示ゲームオブジェクトの子要素の画像取得してボタンのイメージとたい
1
+ List中にあるオブジェクトの画像取得して画面上のボタン画像更したい
test CHANGED
@@ -1,80 +1,34 @@
1
1
  ### 前提・実現したいこと
2
-
3
- 装備画面でセットしたの魔法の画像を取得して
4
-
5
- 魔法変更ボタン押したときに撃つ魔法に対応する画像に変えていきたい
6
2
 
7
3
 
8
4
 
9
- ### 発生している問題・エラーメッセージ
10
-
11
- セット画面閉じたとき非表示になるの取得できな
5
+ Listの中オブジェクト画像取得して画面上のボタン画像変更した
12
-
13
- 画像がnoneになってしまった
14
6
 
15
7
 
16
8
 
17
9
  ### 該当のソースコード
18
10
 
11
+ ```unity
19
12
 
20
-
21
- ```unity
13
+ コード
22
14
 
23
15
  public class Player : MonoBehaviour
24
16
 
25
17
  {
26
18
 
27
- //魔法関係
28
-
29
- public float span = 2;
30
-
31
- public float delta = 0;
32
-
33
- private GameObject Magic;
34
-
35
- private GameObject nearObj;
36
-
37
- public List<string> magic = new List<string>();
38
-
39
19
  public int i;
40
20
 
41
- public List<string> unLearnedMagic = new List<string>();
21
+ public List<GameObject> setimage = new List<GameObject>();
42
22
 
43
- int count = 3;
23
+ public GameObject change;
44
24
 
45
- int setCount;
46
-
47
- private GameObject selectmagic;
48
-
49
- private GameObject childmagic;
50
-
51
- public GameObject parentChoice;
52
-
53
- public GameObject ChoiceMagicCanvas;
54
-
55
- public Transform SetMagic;
25
+ public Image buttonimage;
56
26
 
57
27
 
58
-
59
- public void Awake()
60
-
61
- {
62
-
63
- //未習得の魔法追加
64
-
65
- unLearnedMagic.Add("FireBallUI");
66
-
67
- unLearnedMagic.Add("IceBallUI");
68
-
69
- unLearnedMagic.Add("EathBallUI");
70
-
71
- }
72
28
 
73
29
  void Start()
74
30
 
75
31
  {
76
-
77
- animator = this.gameObject.GetComponent<Animator>();
78
32
 
79
33
  magic.Add("Magic/NomalBall");//最初の魔法
80
34
 
@@ -94,195 +48,21 @@
94
48
 
95
49
 
96
50
 
97
- Menu.SetActive(false);
51
+ //////////////////////////////////////////////////////////////////
98
52
 
99
- ChoiceMagicCanvas.SetActive(false);
53
+ setimage.Add(nomalballimage);
100
54
 
101
- Controller.SetActive(true);
55
+ buttonimage = change.GetComponent<Image>();
56
+
57
+ buttonimage.sprite= setimage[i].GetComponent<Sprite>();
58
+
59
+ ///////////////////////////////////////////////////////////////////
102
60
 
103
61
  }
104
62
 
105
63
 
106
64
 
107
- void Update()
108
-
109
- {
110
-
111
- else if (velocity.magnitude < 0.1 || moveVector != new Vector3(1, 1, 1))
112
-
113
- {
114
-
115
- //動いていない場合は走らない。
116
-
117
- animator.SetBool("Run", false);
118
-
119
- EndAvoid();
120
-
121
- Aboid.fillAmount += 1.0f / avoidtime * Time.deltaTime;
122
-
123
- if (delta <= 2)
124
-
125
- {
126
-
127
- delta += Time.deltaTime;//時間経過
128
-
129
- }
65
+ }
130
-
131
- //最も近かったオブジェクトを取得
132
-
133
- nearObj = SerchTag(gameObject, "Enemy");
134
-
135
- if (magic.Count != 0)
136
-
137
- {
138
-
139
- //セットされてる魔法撃つ
140
-
141
- Magic = (GameObject)Resources.Load(magic[i]);
142
-
143
- var magicStatus = Magic.gameObject.GetComponent<MagicStatus>();
144
-
145
- if (currentMana >= magicStatus.useMana && this.delta > this.span && nearObj != null)
146
-
147
- {
148
-
149
- UseMagic();
150
-
151
- }
152
-
153
- if (this.delta < this.span)
154
-
155
- {
156
-
157
- animator.SetTrigger("EndMagic");
158
-
159
- }
160
-
161
- }
162
-
163
- }
164
-
165
- }
166
-
167
-
168
-
169
- public void OnChangeMagic()//撃つ魔法変更
170
-
171
- {
172
-
173
- if (magic.Count < 2)
174
-
175
- {
176
-
177
- return;
178
-
179
- }
180
-
181
- if (i < magic.Count-1)
182
-
183
- {
184
-
185
- i += 1;
186
-
187
- }
188
-
189
- else if (i >= magic.Count-1)
190
-
191
- {
192
-
193
- i = 0;
194
-
195
- }
196
-
197
- }
198
-
199
-
200
-
201
- // クリックした魔法名を引数で渡す
202
-
203
- public void OnRegisterMagic(string magicName)
204
-
205
- {
206
-
207
- // セット数は三つまで
208
-
209
- if (magic.Count <= 3)
210
-
211
- {
212
-
213
- magic.Add(magicName);
214
-
215
- }
216
-
217
-
218
-
219
- if (magic.Count > 3)
220
-
221
- {
222
-
223
- magic.Clear();
224
-
225
- i = 0;
226
-
227
- }
228
-
229
- }
230
-
231
-
232
-
233
- public void OnSetMagic(string magicName)//習得した魔法セットできる様にする
234
-
235
- {
236
-
237
- Button magicbutton = GameObject.Find(magicName).GetComponent<Button>();
238
-
239
- magicbutton.interactable = true;
240
-
241
- ChoiceMagicCanvas.SetActive(false);
242
-
243
- }
244
-
245
-
246
-
247
- public void SettingMagic(string setmagic)//魔法セット
248
-
249
- {
250
-
251
- //魔法セットキャンバスに魔法の画像セット
252
-
253
- GameObject magicimage= (GameObject)Resources.Load(setmagic);
254
-
255
- setchild= Instantiate(magicimage, transform.position, Quaternion.identity);
256
-
257
- setchild.transform.SetParent(SetMagic.transform);
258
-
259
- setCount = SetMagic.transform.childCount;
260
-
261
-
262
-
263
- //3つ以上なったらセットされてる魔法の画像削除
264
-
265
- if (setCount > 3)
266
-
267
- {
268
-
269
- foreach(Transform set in SetMagic.transform)
270
-
271
- {
272
-
273
- Destroy(set.gameObject);
274
-
275
- }
276
-
277
- }
278
-
279
- }
280
-
281
-
282
-
283
-
284
-
285
-
286
66
 
287
67
  ```
288
68
 
@@ -290,72 +70,20 @@
290
70
 
291
71
  ### 試したこと
292
72
 
73
+ setimage.Add(nomalballimage);
74
+
75
+ buttonimage = change.GetComponent<Image>();
76
+
293
- var childTransform = GameObject.Find("RootObject").transform;
77
+ buttonimage.sprite= setimage[i].GetComponent<Sprite>();
294
78
 
295
79
 
296
80
 
297
- foreach (Transform child in childTransform.transform)
298
81
 
299
- {
300
82
 
301
- if (null != child.GetComponent<MeshRenderer>())
302
-
303
- {
304
-
305
- if(null == child.GetComponent<BoxCollider>())
306
-
307
- {
308
-
309
- Debug.Log(child.name);
310
-
311
- child.gameObject.AddComponent<BoxCollider>();
83
+ Imageをpublicに変えてみるとchangeの画像が入っていたので最後の行がうまくいっていないと思う
312
-
313
- }
314
-
315
- }
316
-
317
- }
318
-
319
- SpriteRenderer MainSpriteRenderer;
320
-
321
- // publicで宣言し、inspectorで設定可能にする
322
-
323
- public Sprite StandbySprite;
324
-
325
- public Sprite HoldSprite;
326
-
327
- public Sprite SlashSprite;
328
84
 
329
85
 
330
86
 
331
- void Start ()
87
+ http://corevale.com/unity/7998
332
88
 
333
- {
334
-
335
- // このobjectのSpriteRendererを取得
336
-
337
- MainSpriteRenderer = gameObject.GetComponent<SpriteRenderer>();
338
-
339
- }
340
-
341
-
342
-
343
- // 何かしらのタイミングで呼ばれる
344
-
345
- void ChangeStateToHold()
346
-
347
- {
348
-
349
- // SpriteRenderのspriteを設定済みの他のspriteに変更
350
-
351
- // 例) HoldSpriteに変更
352
-
353
- MainSpriteRenderer.sprite = HoldSprite;
354
-
355
- }
356
-
357
- }
358
-
359
-
360
-
361
- 上記を参考に書いてみたが上手くいかなかった
89
+ 上記サイトを参考にてみたがうまくいかなかった