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

質問編集履歴

5

簡略化

2020/05/29 01:04

投稿

MOTOMUR
MOTOMUR

スコア195

title CHANGED
File without changes
body CHANGED
@@ -1,118 +1,8 @@
1
- 一番下だけ読んでください。
1
+ scriptableObjectにarreyやdictionaryを設定するには?
2
2
  ---
3
- 経緯を書いていら混乱しましたので、一番下の見出しだけ見てください
3
+ string[]の入っscriptableObjectは作成できました。
4
-
5
-
6
- ~~C#でFor文などで動的に処理するときに、下記のようなクラスのa0.a1の中身を取ってきたい。~~
7
- ~~(「arreyでできるらいいじゃん。」とい例だけど、動的For文aの後ろに数字をつけることで取得できるようしたい。)~~
4
+ し下記のように、string[]とint[]をいれたもは作成きず。(コンパイルは通が、int[]がなかったことに。)
8
-
9
5
  ```C#
10
- public class hoge{
11
- public int a0 = 1;
12
- public int a1 = 21;
13
- }
14
- ```
15
-
16
-
17
- 試したこと。
18
- ---
19
- ```C#
20
- for(i=0;i<=1;i++){
21
- string path = "a"+i;
22
- Debug.Log(hoge.path);
23
- }
24
- ```
25
-
26
- ~~参照できない。。。~~
27
- ~~こういう時、どういう改善案がありますか?~~
28
-
29
-
30
- 以下追記
31
- ---
32
- 上記は困っている内容を簡略化したもので、実際の困っていることへの答えにたどり着かないので追記します。
33
-
34
- ~~経緯~~
35
- ---
36
-
37
- ```C#
38
- public class Status : ScriptableObject{
39
- public string name = "hoge";
40
- public string id = "hoge0123";
41
- public int HP = 100;
42
-  ・・・・・・・//以下略
43
- }
44
- ```
45
-
46
- ~~上記ステータスScriptableObjectを継承したファイル(?)を作成して、バトルシーンで引っ張ってきたい。
47
- そのファイルの名前あれば情報は呼び出せる!
48
- メンバー選出の情報をScriptableObject化して保存しておこうと思ったんだけど、ScriptableObjectにint arrayをうまく入れられなかった。(本当はstring入れたかった。配列調べたけどintの例のみ。)
49
- 仕方がないので登場最大人数は大したことないので、ださいけどint hoge1~5(下では名前違う。)を作って、中身が0なら登場しないという実装に。(しかもファイルの名前1,2,3になってる。。。)
50
- ~~
51
- ```C#
52
- public class AllyMember : ScriptableObject
53
- {
54
- //味方のメンバーリスト
55
- [SerializeField]
56
- private int allyMember_1 = 1;
57
- //略
58
-
59
-
60
- public void SetAllyMember_1(int allyMember_1)
61
- {
62
- this.allyMember_1 = allyMember_1;
63
- }
64
- public int GetAllyMember_1()
65
- {
66
- return allyMember_1;
67
- }
68
-   //略
69
- ```
70
-
71
- ~~GetAllyMember_1これがやっかいで、この1の部分を変えるためにさっきの質問が飛び出てきました。~~
72
-
73
- ~~string array(dictionaryかな)でメンバー選出用のstring IDを保持できていればこうならなかった。。~~
74
- ```C#
75
- Status status1 = resources.Load("1"/*←ファイルのパス*/);
76
- Status status2 = resources.Load("2");
77
- ・・・・・・
78
- //以下略。
79
- ```
80
- ~~ファイルのパス名前もくそダサい。
81
- このscriptableObjectのStatusを継承したstatus5個を格納する配列を作ろうと思ったときに、どうしたらいいかわからなくなりました。
82
- Dictionary?  格納できるscriptableObject作っといて継承して保存。。。?
83
- 自分的には手詰まりなので、上記の発想で「1~5はfor文で持ってきたらいいや。」てなって困ったのが経緯です。
84
- 自分の行動を遡ると根本的に、scriptableObjectにarreyやdictionaryを入れられれば、一番最初の変な質問には至らなかった。。。。
85
- 一番最初のa0,a1を作成できないのは理解できましたので、以下の質問に代えさせてください。
86
- ~~
87
- ~~scriptableObjectにarreyやdictionaryを設定するには?~~
88
- ---
89
- ```C#
90
- public class AllyStatus : CharactorsStatus
91
- {
92
- [SerializeField]
93
- private int earnedExperience = 0;
94
-
95
-
96
- public void SetEarnedExperience(int earnedExperience)
97
- {
98
- this.earnedExperience = earnedExperience;
99
- }
100
- public int GetEarnedExperience()
101
- {
102
- return earnedExperience;
103
- }
104
- }
105
- ```
106
- ~~上記コードのようにintの時みたいに使えれば、理解できそうです。(int string bool enamは使い方の例があったのでわかった。)
107
- 今やりたいことは["hoge1","hoge2"]のようなscriptableObjectを作成できれば解決します。
108
- 後学のためにdictionaryも作れるのか知っておきたい。。
109
- 以上です。敬語おろそかですが、よろしくお願いします。~~
110
-
111
- ~~scriptableObjectにarreyやdictionaryを設定するには?(再)~~
112
- ---
113
- ~~string[]の入ったscriptableObjectは作成できました。
114
- しかし下記のように、string[]とint[]をいれたものは作成できず。(コンパイルは通るが、int[]がなかったことに。)~~
115
- ```C#
116
6
  public class AllyMemberID : ScriptableObject
117
7
  {
118
8
  //味方のメンバーリスト
@@ -138,30 +28,4 @@
138
28
  }
139
29
 
140
30
  }
141
- ```
31
+ ```
142
-
143
- 追加質問 scriptableObjectで作ったステータスをまとめる親を作るには。?
144
- ---
145
- ほげ1~5のステータス(scriptableObject)をまとめる親を作りたいのですが(下記イメージ)、どのようにscriptableObjectを扱っていいかわかりません。
146
-
147
- ```
148
- ScriptableObjects[]
149
- |
150
- |____status1(scriptableObject)_____HP
151
- | |__ID
152
- |
153
- |____status2(scriptableObject)
154
- ```
155
- ScriptableObject配列ってあるんですかね。(ScriptableObjects[])自作したらできるんですかね。。。。
156
-
157
- 追加質問 scriptableObjectで作ったステータスをまとめる親を作るには。?(再)
158
- ---
159
- scriptableObject[]は作成できます。
160
- 追加がうまくできません。
161
- ```C#
162
- allyStatuses[i] = allyStatus_1;//これもできない
163
- ```
164
- Resizeして代入しても
165
- NullReferenceException: Object reference not set to an instance of an object
166
- BattleManeger.Start ()
167
- と表示されてしまいます。

4

追記

2020/05/29 01:04

投稿

MOTOMUR
MOTOMUR

スコア195

title CHANGED
File without changes
body CHANGED
@@ -108,10 +108,10 @@
108
108
  後学のためにdictionaryも作れるのか知っておきたい。。
109
109
  以上です。敬語おろそかですが、よろしくお願いします。~~
110
110
 
111
- scriptableObjectにarreyやdictionaryを設定するには?(再)
111
+ ~~scriptableObjectにarreyやdictionaryを設定するには?(再)~~
112
112
  ---
113
- string[]の入ったscriptableObjectは作成できました。
113
+ ~~string[]の入ったscriptableObjectは作成できました。
114
- しかし下記のように、string[]とint[]をいれたものは作成できず。(コンパイルは通るが、int[]がなかったことに。)
114
+ しかし下記のように、string[]とint[]をいれたものは作成できず。(コンパイルは通るが、int[]がなかったことに。)~~
115
115
  ```C#
116
116
  public class AllyMemberID : ScriptableObject
117
117
  {
@@ -152,4 +152,16 @@
152
152
  |
153
153
  |____status2(scriptableObject)
154
154
  ```
155
- ScriptableObject配列ってあるんですかね。(ScriptableObjects[])自作したらできるんですかね。。。。
155
+ ScriptableObject配列ってあるんですかね。(ScriptableObjects[])自作したらできるんですかね。。。。
156
+
157
+ 追加質問 scriptableObjectで作ったステータスをまとめる親を作るには。?(再)
158
+ ---
159
+ scriptableObject[]は作成できます。
160
+ 追加がうまくできません。
161
+ ```C#
162
+ allyStatuses[i] = allyStatus_1;//これもできない
163
+ ```
164
+ Resizeして代入しても
165
+ NullReferenceException: Object reference not set to an instance of an object
166
+ BattleManeger.Start ()
167
+ と表示されてしまいます。

3

見やすく改良。

2020/05/28 15:39

投稿

MOTOMUR
MOTOMUR

スコア195

title CHANGED
File without changes
body CHANGED
@@ -84,7 +84,7 @@
84
84
  自分の行動を遡ると根本的に、scriptableObjectにarreyやdictionaryを入れられれば、一番最初の変な質問には至らなかった。。。。
85
85
  一番最初のa0,a1を作成できないのは理解できましたので、以下の質問に代えさせてください。
86
86
  ~~
87
- scriptableObjectにarreyやdictionaryを設定するには?
87
+ ~~scriptableObjectにarreyやdictionaryを設定するには?~~
88
88
  ---
89
89
  ```C#
90
90
  public class AllyStatus : CharactorsStatus
@@ -108,6 +108,8 @@
108
108
  後学のためにdictionaryも作れるのか知っておきたい。。
109
109
  以上です。敬語おろそかですが、よろしくお願いします。~~
110
110
 
111
+ scriptableObjectにarreyやdictionaryを設定するには?(再)
112
+ ---
111
113
  string[]の入ったscriptableObjectは作成できました。
112
114
  しかし下記のように、string[]とint[]をいれたものは作成できず。(コンパイルは通るが、int[]がなかったことに。)
113
115
  ```C#

2

不能点記載。

2020/05/28 13:01

投稿

MOTOMUR
MOTOMUR

スコア195

title CHANGED
File without changes
body CHANGED
@@ -31,7 +31,7 @@
31
31
  ---
32
32
  上記は困っている内容を簡略化したもので、実際の困っていることへの答えにたどり着かないので追記します。
33
33
 
34
- 経緯
34
+ ~~経緯~~
35
35
  ---
36
36
 
37
37
  ```C#
@@ -43,11 +43,11 @@
43
43
  }
44
44
  ```
45
45
 
46
- 上記ステータスScriptableObjectを継承したファイル(?)を作成して、バトルシーンで引っ張ってきたい。
46
+ ~~上記ステータスScriptableObjectを継承したファイル(?)を作成して、バトルシーンで引っ張ってきたい。
47
47
  そのファイルの名前あれば情報は呼び出せる!
48
48
  メンバー選出の情報をScriptableObject化して保存しておこうと思ったんだけど、ScriptableObjectにint arrayをうまく入れられなかった。(本当はstring入れたかった。配列調べたけどintの例のみ。)
49
49
  仕方がないので登場最大人数は大したことないので、ださいけどint hoge1~5(下では名前違う。)を作って、中身が0なら登場しないという実装に。(しかもファイルの名前1,2,3になってる。。。)
50
-
50
+ ~~
51
51
  ```C#
52
52
  public class AllyMember : ScriptableObject
53
53
  {
@@ -68,32 +68,22 @@
68
68
    //略
69
69
  ```
70
70
 
71
- GetAllyMember_1これがやっかいで、この1の部分を変えるためにさっきの質問が飛び出てきました。
71
+ ~~GetAllyMember_1これがやっかいで、この1の部分を変えるためにさっきの質問が飛び出てきました。~~
72
72
 
73
-
74
-
75
- string array(dictionaryかな)でメンバー選出用のstring IDを保持できていればこうならなかった。。
73
+ ~~string array(dictionaryかな)でメンバー選出用のstring IDを保持できていればこうならなかった。。~~
76
74
  ```C#
77
75
  Status status1 = resources.Load("1"/*←ファイルのパス*/);
78
76
  Status status2 = resources.Load("2");
79
77
  ・・・・・・
80
78
  //以下略。
81
79
  ```
82
- ファイルのパス名前もくそダサい。
80
+ ~~ファイルのパス名前もくそダサい。
83
-
84
81
  このscriptableObjectのStatusを継承したstatus5個を格納する配列を作ろうと思ったときに、どうしたらいいかわからなくなりました。
85
82
  Dictionary?  格納できるscriptableObject作っといて継承して保存。。。?
86
83
  自分的には手詰まりなので、上記の発想で「1~5はfor文で持ってきたらいいや。」てなって困ったのが経緯です。
87
-
88
-
89
-
90
-
91
84
  自分の行動を遡ると根本的に、scriptableObjectにarreyやdictionaryを入れられれば、一番最初の変な質問には至らなかった。。。。
92
-
93
-
94
-
95
85
  一番最初のa0,a1を作成できないのは理解できましたので、以下の質問に代えさせてください。
96
-
86
+ ~~
97
87
  scriptableObjectにarreyやdictionaryを設定するには?
98
88
  ---
99
89
  ```C#
@@ -113,8 +103,51 @@
113
103
  }
114
104
  }
115
105
  ```
116
- 上記コードのようにintの時みたいに使えれば、理解できそうです。(int string bool enamは使い方の例があったのでわかった。)
106
+ ~~上記コードのようにintの時みたいに使えれば、理解できそうです。(int string bool enamは使い方の例があったのでわかった。)
117
107
  今やりたいことは["hoge1","hoge2"]のようなscriptableObjectを作成できれば解決します。
118
108
  後学のためにdictionaryも作れるのか知っておきたい。。
109
+ 以上です。敬語おろそかですが、よろしくお願いします。~~
119
110
 
111
+ string[]の入ったscriptableObjectは作成できました。
112
+ しかし下記のように、string[]とint[]をいれたものは作成できず。(コンパイルは通るが、int[]がなかったことに。)
113
+ ```C#
114
+ public class AllyMemberID : ScriptableObject
115
+ {
116
+ //味方のメンバーリスト
117
+ [SerializeField]
118
+ private string[] allyMemberIDs = { "hoge1", "hoge2", "hoge3"};
119
+ private int[] allyNum = new int[3] { 1, 2, 3};
120
+
121
+ public void SetAllyMemberID(string[] allyMemberIDs)
122
+ {
123
+ this.allyMemberIDs = allyMemberIDs;
124
+ }
125
+ public string[] GetAllyMemberID()
126
+ {
127
+ return allyMemberIDs;
128
+ }
129
+ public void SetAllyNum(int[] allyNum)
130
+ {
131
+ this.allyNum = allyNum;
132
+ }
120
- 以上です。敬語おろそかですが、よろしくお願いします。
133
+ public int[] GetAllyNum()
134
+ {
135
+ return allyNum;
136
+ }
137
+
138
+ }
139
+ ```
140
+
141
+ 追加質問 scriptableObjectで作ったステータスをまとめる親を作るには。?
142
+ ---
143
+ ほげ1~5のステータス(scriptableObject)をまとめる親を作りたいのですが(下記イメージ)、どのようにscriptableObjectを扱っていいかわかりません。
144
+
145
+ ```
146
+ ScriptableObjects[]
147
+ |
148
+ |____status1(scriptableObject)_____HP
149
+ | |__ID
150
+ |
151
+ |____status2(scriptableObject)
152
+ ```
153
+ ScriptableObject配列ってあるんですかね。(ScriptableObjects[])自作したらできるんですかね。。。。

1

経緯の追加

2020/05/28 12:59

投稿

MOTOMUR
MOTOMUR

スコア195

title CHANGED
@@ -1,1 +1,1 @@
1
- 【C# Unity】 取得したい変数名を動的変化させるには
1
+ 【C# Unity】 scriptableObjectarreyやdictionaryを設定するには
body CHANGED
@@ -1,10 +1,15 @@
1
+ 一番下だけ読んでください。
2
+ ---
1
- C#For文などで動的に処理するときに、下ようなクラスのa0.a1の中身を取っきたい。
3
+ 経緯を書いていたら混乱しましたので、一番下の見出しだけ見ください。
2
- (「arreyでできるからいいじゃん。」という例だけど、動的にFor文の中でaの後ろに数字をつけることで取得できるようにしたい。)
3
4
 
5
+
6
+ ~~C#でFor文などで動的に処理するときに、下記のようなクラスのa0.a1の中身を取ってきたい。~~
7
+ ~~(「arreyでできるからいいじゃん。」という例だけど、動的にFor文の中でaの後ろに数字をつけることで取得できるようにしたい。)~~
8
+
4
9
  ```C#
5
10
  public class hoge{
6
- int a0 = 1;
11
+ public int a0 = 1;
7
- int a1 = 21;
12
+ public int a1 = 21;
8
13
  }
9
14
  ```
10
15
 
@@ -18,6 +23,98 @@
18
23
  }
19
24
  ```
20
25
 
21
- 参照できない。。。
26
+ ~~参照できない。。。~~
27
+ ~~こういう時、どういう改善案がありますか?~~
22
28
 
29
+
30
+ 以下追記
31
+ ---
32
+ 上記は困っている内容を簡略化したもので、実際の困っていることへの答えにたどり着かないので追記します。
33
+
34
+ 経緯
35
+ ---
36
+
37
+ ```C#
38
+ public class Status : ScriptableObject{
39
+ public string name = "hoge";
40
+ public string id = "hoge0123";
23
- こういう時、どういう改善案がありますか?
41
+ public int HP = 100;
42
+  ・・・・・・・//以下略
43
+ }
44
+ ```
45
+
46
+ 上記ステータスScriptableObjectを継承したファイル(?)を作成して、バトルシーンで引っ張ってきたい。
47
+ そのファイルの名前あれば情報は呼び出せる!
48
+ メンバー選出の情報をScriptableObject化して保存しておこうと思ったんだけど、ScriptableObjectにint arrayをうまく入れられなかった。(本当はstring入れたかった。配列調べたけどintの例のみ。)
49
+ 仕方がないので登場最大人数は大したことないので、ださいけどint hoge1~5(下では名前違う。)を作って、中身が0なら登場しないという実装に。(しかもファイルの名前1,2,3になってる。。。)
50
+
51
+ ```C#
52
+ public class AllyMember : ScriptableObject
53
+ {
54
+ //味方のメンバーリスト
55
+ [SerializeField]
56
+ private int allyMember_1 = 1;
57
+ //略
58
+
59
+
60
+ public void SetAllyMember_1(int allyMember_1)
61
+ {
62
+ this.allyMember_1 = allyMember_1;
63
+ }
64
+ public int GetAllyMember_1()
65
+ {
66
+ return allyMember_1;
67
+ }
68
+   //略
69
+ ```
70
+
71
+ GetAllyMember_1これがやっかいで、この1の部分を変えるためにさっきの質問が飛び出てきました。
72
+
73
+
74
+
75
+ string array(dictionaryかな)でメンバー選出用のstring IDを保持できていればこうならなかった。。
76
+ ```C#
77
+ Status status1 = resources.Load("1"/*←ファイルのパス*/);
78
+ Status status2 = resources.Load("2");
79
+ ・・・・・・
80
+ //以下略。
81
+ ```
82
+ ファイルのパス名前もくそダサい。
83
+
84
+ このscriptableObjectのStatusを継承したstatus5個を格納する配列を作ろうと思ったときに、どうしたらいいかわからなくなりました。
85
+ Dictionary?  格納できるscriptableObject作っといて継承して保存。。。?
86
+ 自分的には手詰まりなので、上記の発想で「1~5はfor文で持ってきたらいいや。」てなって困ったのが経緯です。
87
+
88
+
89
+
90
+
91
+ 自分の行動を遡ると根本的に、scriptableObjectにarreyやdictionaryを入れられれば、一番最初の変な質問には至らなかった。。。。
92
+
93
+
94
+
95
+ 一番最初のa0,a1を作成できないのは理解できましたので、以下の質問に代えさせてください。
96
+
97
+ scriptableObjectにarreyやdictionaryを設定するには?
98
+ ---
99
+ ```C#
100
+ public class AllyStatus : CharactorsStatus
101
+ {
102
+ [SerializeField]
103
+ private int earnedExperience = 0;
104
+
105
+
106
+ public void SetEarnedExperience(int earnedExperience)
107
+ {
108
+ this.earnedExperience = earnedExperience;
109
+ }
110
+ public int GetEarnedExperience()
111
+ {
112
+ return earnedExperience;
113
+ }
114
+ }
115
+ ```
116
+ 上記コードのようにintの時みたいに使えれば、理解できそうです。(int string bool enamは使い方の例があったのでわかった。)
117
+ 今やりたいことは["hoge1","hoge2"]のようなscriptableObjectを作成できれば解決します。
118
+ 後学のためにdictionaryも作れるのか知っておきたい。。
119
+
120
+ 以上です。敬語おろそかですが、よろしくお願いします。