質問編集履歴

5

簡略化

2020/05/29 01:04

投稿

MOTOMUR
MOTOMUR

スコア195

test CHANGED
File without changes
test CHANGED
@@ -1,230 +1,10 @@
1
- 一番下だけ読んでください。
1
+ scriptableObjectにarreyやdictionaryを設定するには?
2
2
 
3
3
  ---
4
4
 
5
- 経緯を書いていら混乱しましたので、一番下の見出しだけ見てください
5
+ string[]の入っscriptableObjectは作成できました。
6
6
 
7
-
8
-
9
-
10
-
11
- ~~C#でFor文などで動的に処理するときに、下記のようなクラスのa0.a1の中身を取ってきたい。~~
12
-
13
- ~~(「arreyでできるからいいじゃん。」という例だけど、動的にFor文の中でaの後ろに数字をつけることで取得できるようにしたい。)~~
14
-
15
-
16
-
17
- ```C#
18
-
19
- public class hoge{
20
-
21
- public int a0 = 1;
22
-
23
- public int a1 = 21;
24
-
25
- }
26
-
27
- ```
28
-
29
-
30
-
31
-
32
-
33
- 試したこと。
34
-
35
- ---
36
-
37
- ```C#
38
-
39
- for(i=0;i<=1;i++){
40
-
41
- string path = "a"+i;
42
-
43
- Debug.Log(hoge.path);
44
-
45
- }
46
-
47
- ```
48
-
49
-
50
-
51
- ~~参照できない。。。~~
52
-
53
- ~~こういう時、どういう改善案がありますか?~~
54
-
55
-
56
-
57
-
58
-
59
- 以下追記
60
-
61
- ---
62
-
63
- 上記は困っている内容を簡略化したもので、実際の困っていることへの答えにたどり着かないので追記します。
64
-
65
-
66
-
67
- ~~経緯~~
68
-
69
- ---
70
-
71
-
72
-
73
- ```C#
74
-
75
- public class Status : ScriptableObject{
76
-
77
- public string name = "hoge";
78
-
79
- public string id = "hoge0123";
80
-
81
- public int HP = 100;
82
-
83
-  ・・・・・・・//以下略
84
-
85
- }
86
-
87
- ```
88
-
89
-
90
-
91
- ~~上記ステータスScriptableObjectを継承したファイル(?)を作成して、バトルシーンで引っ張ってきたい。
92
-
93
- そのファイルの名前あれば情報は呼び出せる!
94
-
95
- メンバー選出の情報をScriptableObject化して保存しておこうと思ったんだけど、ScriptableObjectにint arrayをうまく入れられなかった。(本当はstring入れたかった。配列調べたけどintの例のみ。)
96
-
97
- 仕方がないので登場最大人数は大したことないので、ださいけどint hoge1~5(下では名前違う。)を作って、中身が0なら登場しないという実装に。(しかもファイルの名前1,2,3になってる。。。)
98
-
99
- ~~
100
-
101
- ```C#
102
-
103
- public class AllyMember : ScriptableObject
104
-
105
- {
106
-
107
- //味方のメンバーリスト
108
-
109
- [SerializeField]
110
-
111
- private int allyMember_1 = 1;
112
-
113
- //略
114
-
115
-
116
-
117
-
118
-
119
- public void SetAllyMember_1(int allyMember_1)
120
-
121
- {
122
-
123
- this.allyMember_1 = allyMember_1;
124
-
125
- }
126
-
127
- public int GetAllyMember_1()
128
-
129
- {
130
-
131
- return allyMember_1;
132
-
133
- }
134
-
135
-   //略
136
-
137
- ```
138
-
139
-
140
-
141
- ~~GetAllyMember_1これがやっかいで、この1の部分を変えるためにさっきの質問が飛び出てきました。~~
142
-
143
-
144
-
145
- ~~string array(dictionaryかな)でメンバー選出用のstring IDを保持できていればこうならなかった。。~~
146
-
147
- ```C#
148
-
149
- Status status1 = resources.Load("1"/*←ファイルのパス*/);
150
-
151
- Status status2 = resources.Load("2");
152
-
153
- ・・・・・・
154
-
155
- //以下略。
156
-
157
- ```
158
-
159
- ~~ファイルのパス名前もくそダサい。
160
-
161
- このscriptableObjectのStatusを継承したstatus5個を格納する配列を作ろうと思ったときに、どうしたらいいかわからなくなりました。
162
-
163
- Dictionary?  格納できるscriptableObject作っといて継承して保存。。。?
164
-
165
- 自分的には手詰まりなので、上記の発想で「1~5はfor文で持ってきたらいいや。」てなって困ったのが経緯です。
166
-
167
- 自分の行動を遡ると根本的に、scriptableObjectにarreyやdictionaryを入れられれば、一番最初の変な質問には至らなかった。。。。
168
-
169
- 一番最初のa0,a1を作成できないのは理解できましたので、以下の質問に代えさせてください。
170
-
171
- ~~
172
-
173
- ~~scriptableObjectにarreyやdictionaryを設定するには?~~
174
-
175
- ---
176
-
177
- ```C#
178
-
179
- public class AllyStatus : CharactorsStatus
180
-
181
- {
182
-
183
- [SerializeField]
184
-
185
- private int earnedExperience = 0;
186
-
187
-
188
-
189
-
190
-
191
- public void SetEarnedExperience(int earnedExperience)
192
-
193
- {
194
-
195
- this.earnedExperience = earnedExperience;
196
-
197
- }
198
-
199
- public int GetEarnedExperience()
200
-
201
- {
202
-
203
- return earnedExperience;
204
-
205
- }
206
-
207
- }
208
-
209
- ```
210
-
211
- ~~上記コードのようにintの時みたいに使えれば、理解できそうです。(int string bool enamは使い方の例があったのでわかった。)
212
-
213
- 今やりたいことは["hoge1","hoge2"]のようなscriptableObjectを作成できれば解決します。
214
-
215
- 後学のためにdictionaryも作れるのか知っておきたい。。
216
-
217
- 以上です。敬語おろそかですが、よろしくお願いします。~~
218
-
219
-
220
-
221
- ~~scriptableObjectにarreyやdictionaryを設定するには?(再)~~
222
-
223
- ---
224
-
225
- ~~string[]の入ったscriptableObjectは作成できました。
226
-
227
- しかし下記のように、string[]とint[]をいれたものは作成できず。(コンパイルは通るが、int[]がなかったことに。)~~
7
+ しかし下記のように、string[]とint[]をいれたものは作成できず。(コンパイルは通るが、int[]がなかったことに。)
228
8
 
229
9
  ```C#
230
10
 
@@ -279,55 +59,3 @@
279
59
  }
280
60
 
281
61
  ```
282
-
283
-
284
-
285
- 追加質問 scriptableObjectで作ったステータスをまとめる親を作るには。?
286
-
287
- ---
288
-
289
- ほげ1~5のステータス(scriptableObject)をまとめる親を作りたいのですが(下記イメージ)、どのようにscriptableObjectを扱っていいかわかりません。
290
-
291
-
292
-
293
- ```
294
-
295
- ScriptableObjects[]
296
-
297
- |
298
-
299
- |____status1(scriptableObject)_____HP
300
-
301
- | |__ID
302
-
303
- |
304
-
305
- |____status2(scriptableObject)
306
-
307
- ```
308
-
309
- ScriptableObject配列ってあるんですかね。(ScriptableObjects[])自作したらできるんですかね。。。。
310
-
311
-
312
-
313
- 追加質問 scriptableObjectで作ったステータスをまとめる親を作るには。?(再)
314
-
315
- ---
316
-
317
- scriptableObject[]は作成できます。
318
-
319
- 追加がうまくできません。
320
-
321
- ```C#
322
-
323
- allyStatuses[i] = allyStatus_1;//これもできない
324
-
325
- ```
326
-
327
- Resizeして代入しても
328
-
329
- NullReferenceException: Object reference not set to an instance of an object
330
-
331
- BattleManeger.Start ()
332
-
333
- と表示されてしまいます。

4

追記

2020/05/29 01:04

投稿

MOTOMUR
MOTOMUR

スコア195

test CHANGED
File without changes
test CHANGED
@@ -218,13 +218,13 @@
218
218
 
219
219
 
220
220
 
221
- scriptableObjectにarreyやdictionaryを設定するには?(再)
221
+ ~~scriptableObjectにarreyやdictionaryを設定するには?(再)~~
222
-
222
+
223
- ---
223
+ ---
224
-
224
+
225
- string[]の入ったscriptableObjectは作成できました。
225
+ ~~string[]の入ったscriptableObjectは作成できました。
226
-
226
+
227
- しかし下記のように、string[]とint[]をいれたものは作成できず。(コンパイルは通るが、int[]がなかったことに。)
227
+ しかし下記のように、string[]とint[]をいれたものは作成できず。(コンパイルは通るが、int[]がなかったことに。)~~
228
228
 
229
229
  ```C#
230
230
 
@@ -307,3 +307,27 @@
307
307
  ```
308
308
 
309
309
  ScriptableObject配列ってあるんですかね。(ScriptableObjects[])自作したらできるんですかね。。。。
310
+
311
+
312
+
313
+ 追加質問 scriptableObjectで作ったステータスをまとめる親を作るには。?(再)
314
+
315
+ ---
316
+
317
+ scriptableObject[]は作成できます。
318
+
319
+ 追加がうまくできません。
320
+
321
+ ```C#
322
+
323
+ allyStatuses[i] = allyStatus_1;//これもできない
324
+
325
+ ```
326
+
327
+ Resizeして代入しても
328
+
329
+ NullReferenceException: Object reference not set to an instance of an object
330
+
331
+ BattleManeger.Start ()
332
+
333
+ と表示されてしまいます。

3

見やすく改良。

2020/05/28 15:39

投稿

MOTOMUR
MOTOMUR

スコア195

test CHANGED
File without changes
test CHANGED
@@ -170,7 +170,7 @@
170
170
 
171
171
  ~~
172
172
 
173
- scriptableObjectにarreyやdictionaryを設定するには?
173
+ ~~scriptableObjectにarreyやdictionaryを設定するには?~~
174
174
 
175
175
  ---
176
176
 
@@ -218,6 +218,10 @@
218
218
 
219
219
 
220
220
 
221
+ scriptableObjectにarreyやdictionaryを設定するには?(再)
222
+
223
+ ---
224
+
221
225
  string[]の入ったscriptableObjectは作成できました。
222
226
 
223
227
  しかし下記のように、string[]とint[]をいれたものは作成できず。(コンパイルは通るが、int[]がなかったことに。)

2

不能点記載。

2020/05/28 13:01

投稿

MOTOMUR
MOTOMUR

スコア195

test CHANGED
File without changes
test CHANGED
@@ -64,7 +64,7 @@
64
64
 
65
65
 
66
66
 
67
- 経緯
67
+ ~~経緯~~
68
68
 
69
69
  ---
70
70
 
@@ -88,7 +88,7 @@
88
88
 
89
89
 
90
90
 
91
- 上記ステータスScriptableObjectを継承したファイル(?)を作成して、バトルシーンで引っ張ってきたい。
91
+ ~~上記ステータスScriptableObjectを継承したファイル(?)を作成して、バトルシーンで引っ張ってきたい。
92
92
 
93
93
  そのファイルの名前あれば情報は呼び出せる!
94
94
 
@@ -96,7 +96,7 @@
96
96
 
97
97
  仕方がないので登場最大人数は大したことないので、ださいけどint hoge1~5(下では名前違う。)を作って、中身が0なら登場しないという実装に。(しかもファイルの名前1,2,3になってる。。。)
98
98
 
99
-
99
+ ~~
100
100
 
101
101
  ```C#
102
102
 
@@ -138,15 +138,11 @@
138
138
 
139
139
 
140
140
 
141
- GetAllyMember_1これがやっかいで、この1の部分を変えるためにさっきの質問が飛び出てきました。
141
+ ~~GetAllyMember_1これがやっかいで、この1の部分を変えるためにさっきの質問が飛び出てきました。~~
142
-
143
-
144
-
145
-
146
-
147
-
148
-
142
+
143
+
144
+
149
- string array(dictionaryかな)でメンバー選出用のstring IDを保持できていればこうならなかった。。
145
+ ~~string array(dictionaryかな)でメンバー選出用のstring IDを保持できていればこうならなかった。。~~
150
146
 
151
147
  ```C#
152
148
 
@@ -160,9 +156,7 @@
160
156
 
161
157
  ```
162
158
 
163
- ファイルのパス名前もくそダサい。
159
+ ~~ファイルのパス名前もくそダサい。
164
-
165
-
166
160
 
167
161
  このscriptableObjectのStatusを継承したstatus5個を格納する配列を作ろうと思ったときに、どうしたらいいかわからなくなりました。
168
162
 
@@ -170,25 +164,11 @@
170
164
 
171
165
  自分的には手詰まりなので、上記の発想で「1~5はfor文で持ってきたらいいや。」てなって困ったのが経緯です。
172
166
 
173
-
174
-
175
-
176
-
177
-
178
-
179
-
180
-
181
167
  自分の行動を遡ると根本的に、scriptableObjectにarreyやdictionaryを入れられれば、一番最初の変な質問には至らなかった。。。。
182
168
 
183
-
184
-
185
-
186
-
187
-
188
-
189
169
  一番最初のa0,a1を作成できないのは理解できましたので、以下の質問に代えさせてください。
190
170
 
191
-
171
+ ~~
192
172
 
193
173
  scriptableObjectにarreyやdictionaryを設定するには?
194
174
 
@@ -228,12 +208,98 @@
228
208
 
229
209
  ```
230
210
 
231
- 上記コードのようにintの時みたいに使えれば、理解できそうです。(int string bool enamは使い方の例があったのでわかった。)
211
+ ~~上記コードのようにintの時みたいに使えれば、理解できそうです。(int string bool enamは使い方の例があったのでわかった。)
232
212
 
233
213
  今やりたいことは["hoge1","hoge2"]のようなscriptableObjectを作成できれば解決します。
234
214
 
235
215
  後学のためにdictionaryも作れるのか知っておきたい。。
236
216
 
237
-
238
-
239
- 以上です。敬語おろそかですが、よろしくお願いします。
217
+ 以上です。敬語おろそかですが、よろしくお願いします。~~
218
+
219
+
220
+
221
+ string[]の入ったscriptableObjectは作成できました。
222
+
223
+ しかし下記のように、string[]とint[]をいれたものは作成できず。(コンパイルは通るが、int[]がなかったことに。)
224
+
225
+ ```C#
226
+
227
+ public class AllyMemberID : ScriptableObject
228
+
229
+ {
230
+
231
+ //味方のメンバーリスト
232
+
233
+ [SerializeField]
234
+
235
+ private string[] allyMemberIDs = { "hoge1", "hoge2", "hoge3"};
236
+
237
+ private int[] allyNum = new int[3] { 1, 2, 3};
238
+
239
+
240
+
241
+ public void SetAllyMemberID(string[] allyMemberIDs)
242
+
243
+ {
244
+
245
+ this.allyMemberIDs = allyMemberIDs;
246
+
247
+ }
248
+
249
+ public string[] GetAllyMemberID()
250
+
251
+ {
252
+
253
+ return allyMemberIDs;
254
+
255
+ }
256
+
257
+ public void SetAllyNum(int[] allyNum)
258
+
259
+ {
260
+
261
+ this.allyNum = allyNum;
262
+
263
+ }
264
+
265
+ public int[] GetAllyNum()
266
+
267
+ {
268
+
269
+ return allyNum;
270
+
271
+ }
272
+
273
+
274
+
275
+ }
276
+
277
+ ```
278
+
279
+
280
+
281
+ 追加質問 scriptableObjectで作ったステータスをまとめる親を作るには。?
282
+
283
+ ---
284
+
285
+ ほげ1~5のステータス(scriptableObject)をまとめる親を作りたいのですが(下記イメージ)、どのようにscriptableObjectを扱っていいかわかりません。
286
+
287
+
288
+
289
+ ```
290
+
291
+ ScriptableObjects[]
292
+
293
+ |
294
+
295
+ |____status1(scriptableObject)_____HP
296
+
297
+ | |__ID
298
+
299
+ |
300
+
301
+ |____status2(scriptableObject)
302
+
303
+ ```
304
+
305
+ ScriptableObject配列ってあるんですかね。(ScriptableObjects[])自作したらできるんですかね。。。。

1

経緯の追加

2020/05/28 12:59

投稿

MOTOMUR
MOTOMUR

スコア195

test CHANGED
@@ -1 +1 @@
1
- 【C# Unity】 取得したい変数名動的に変化させるには
1
+ 【C# Unity】 scriptableObjectにarreyやdictionary設定するには
test CHANGED
@@ -1,6 +1,16 @@
1
+ 一番下だけ読んでください。
2
+
3
+ ---
4
+
5
+ 経緯を書いていたら混乱しましたので、一番下の見出しだけ見てください。。
6
+
7
+
8
+
9
+
10
+
1
- C#でFor文などで動的に処理するときに、下記のようなクラスのa0.a1の中身を取ってきたい。
11
+ ~~C#でFor文などで動的に処理するときに、下記のようなクラスのa0.a1の中身を取ってきたい。~~
2
-
12
+
3
- (「arreyでできるからいいじゃん。」という例だけど、動的にFor文の中でaの後ろに数字をつけることで取得できるようにしたい。)
13
+ ~~(「arreyでできるからいいじゃん。」という例だけど、動的にFor文の中でaの後ろに数字をつけることで取得できるようにしたい。)~~
4
14
 
5
15
 
6
16
 
@@ -8,9 +18,9 @@
8
18
 
9
19
  public class hoge{
10
20
 
11
- int a0 = 1;
21
+ public int a0 = 1;
12
-
22
+
13
- int a1 = 21;
23
+ public int a1 = 21;
14
24
 
15
25
  }
16
26
 
@@ -38,8 +48,192 @@
38
48
 
39
49
 
40
50
 
41
- 参照できない。。。
51
+ ~~参照できない。。。~~
42
-
43
-
44
-
52
+
45
- こういう時、どういう改善案がありますか?
53
+ ~~こういう時、どういう改善案がありますか?~~
54
+
55
+
56
+
57
+
58
+
59
+ 以下追記
60
+
61
+ ---
62
+
63
+ 上記は困っている内容を簡略化したもので、実際の困っていることへの答えにたどり着かないので追記します。
64
+
65
+
66
+
67
+ 経緯
68
+
69
+ ---
70
+
71
+
72
+
73
+ ```C#
74
+
75
+ public class Status : ScriptableObject{
76
+
77
+ public string name = "hoge";
78
+
79
+ public string id = "hoge0123";
80
+
81
+ public int HP = 100;
82
+
83
+  ・・・・・・・//以下略
84
+
85
+ }
86
+
87
+ ```
88
+
89
+
90
+
91
+ 上記ステータスScriptableObjectを継承したファイル(?)を作成して、バトルシーンで引っ張ってきたい。
92
+
93
+ そのファイルの名前あれば情報は呼び出せる!
94
+
95
+ メンバー選出の情報をScriptableObject化して保存しておこうと思ったんだけど、ScriptableObjectにint arrayをうまく入れられなかった。(本当はstring入れたかった。配列調べたけどintの例のみ。)
96
+
97
+ 仕方がないので登場最大人数は大したことないので、ださいけどint hoge1~5(下では名前違う。)を作って、中身が0なら登場しないという実装に。(しかもファイルの名前1,2,3になってる。。。)
98
+
99
+
100
+
101
+ ```C#
102
+
103
+ public class AllyMember : ScriptableObject
104
+
105
+ {
106
+
107
+ //味方のメンバーリスト
108
+
109
+ [SerializeField]
110
+
111
+ private int allyMember_1 = 1;
112
+
113
+ //略
114
+
115
+
116
+
117
+
118
+
119
+ public void SetAllyMember_1(int allyMember_1)
120
+
121
+ {
122
+
123
+ this.allyMember_1 = allyMember_1;
124
+
125
+ }
126
+
127
+ public int GetAllyMember_1()
128
+
129
+ {
130
+
131
+ return allyMember_1;
132
+
133
+ }
134
+
135
+   //略
136
+
137
+ ```
138
+
139
+
140
+
141
+ GetAllyMember_1これがやっかいで、この1の部分を変えるためにさっきの質問が飛び出てきました。
142
+
143
+
144
+
145
+
146
+
147
+
148
+
149
+ string array(dictionaryかな)でメンバー選出用のstring IDを保持できていればこうならなかった。。
150
+
151
+ ```C#
152
+
153
+ Status status1 = resources.Load("1"/*←ファイルのパス*/);
154
+
155
+ Status status2 = resources.Load("2");
156
+
157
+ ・・・・・・
158
+
159
+ //以下略。
160
+
161
+ ```
162
+
163
+ ファイルのパス名前もくそダサい。
164
+
165
+
166
+
167
+ このscriptableObjectのStatusを継承したstatus5個を格納する配列を作ろうと思ったときに、どうしたらいいかわからなくなりました。
168
+
169
+ Dictionary?  格納できるscriptableObject作っといて継承して保存。。。?
170
+
171
+ 自分的には手詰まりなので、上記の発想で「1~5はfor文で持ってきたらいいや。」てなって困ったのが経緯です。
172
+
173
+
174
+
175
+
176
+
177
+
178
+
179
+
180
+
181
+ 自分の行動を遡ると根本的に、scriptableObjectにarreyやdictionaryを入れられれば、一番最初の変な質問には至らなかった。。。。
182
+
183
+
184
+
185
+
186
+
187
+
188
+
189
+ 一番最初のa0,a1を作成できないのは理解できましたので、以下の質問に代えさせてください。
190
+
191
+
192
+
193
+ scriptableObjectにarreyやdictionaryを設定するには?
194
+
195
+ ---
196
+
197
+ ```C#
198
+
199
+ public class AllyStatus : CharactorsStatus
200
+
201
+ {
202
+
203
+ [SerializeField]
204
+
205
+ private int earnedExperience = 0;
206
+
207
+
208
+
209
+
210
+
211
+ public void SetEarnedExperience(int earnedExperience)
212
+
213
+ {
214
+
215
+ this.earnedExperience = earnedExperience;
216
+
217
+ }
218
+
219
+ public int GetEarnedExperience()
220
+
221
+ {
222
+
223
+ return earnedExperience;
224
+
225
+ }
226
+
227
+ }
228
+
229
+ ```
230
+
231
+ 上記コードのようにintの時みたいに使えれば、理解できそうです。(int string bool enamは使い方の例があったのでわかった。)
232
+
233
+ 今やりたいことは["hoge1","hoge2"]のようなscriptableObjectを作成できれば解決します。
234
+
235
+ 後学のためにdictionaryも作れるのか知っておきたい。。
236
+
237
+
238
+
239
+ 以上です。敬語おろそかですが、よろしくお願いします。