質問編集履歴

2

update title

2018/12/17 19:42

投稿

suzu1122
suzu1122

スコア37

test CHANGED
@@ -1 +1 @@
1
- C#のグローバル変数の使い回し?
1
+ C#のdictionaryをグローバル使い回し?
test CHANGED
File without changes

1

途中までできるようになったので、回答がついてないうちにupdateします。

2018/12/17 19:42

投稿

suzu1122
suzu1122

スコア37

test CHANGED
File without changes
test CHANGED
@@ -18,31 +18,19 @@
18
18
 
19
19
  public class HogeManage {
20
20
 
21
- public Dictionary<string, int> dic;
21
+ Dictionary<string, int> dic = new Dictionary<string, int>() {
22
+
23
+ {"hoge1", 0},
24
+
25
+ {"hoge2", 0),
26
+
27
+ {"hoge3", 0},
28
+
29
+ };
22
30
 
23
31
 
24
32
 
25
- public void MakeHogeManage() {
26
-
27
-
28
-
29
- dic = new Dictionary<string, int>();
30
-
31
-
32
-
33
- dic.Add("HogeManage1", 0);
34
-
35
- dic.Add("HogeManage2", 0);
36
-
37
- dic.Add("HogeManage3", 0);
38
-
39
-
40
-
41
- }
42
-
43
-
44
-
45
- //valueが0が1つでもあれば返す
33
+ //valueが0が1つでもあればvalueをupdateして返す
46
34
 
47
35
  public bool GetZeroHoge()
48
36
 
@@ -58,6 +46,8 @@
58
46
 
59
47
  {
60
48
 
49
+ dic[key] = 1;
50
+
61
51
  return true;
62
52
 
63
53
  }
@@ -68,67 +58,27 @@
68
58
 
69
59
  }
70
60
 
71
-
72
-
73
- // zeroのnameを探す
74
-
75
- public string GetZeroHogeName()
76
-
77
- {
78
-
79
- // TODO
80
-
81
- foreach (KeyValuePair<string, int> pair in dic)
82
-
83
- {
84
-
85
- if (pair.Value == 0)
86
-
87
- {
88
-
89
- return pair.Key;
90
-
91
- }
92
-
93
- }
94
-
95
- return "";
96
-
97
- }
98
-
99
61
  }
100
62
 
101
63
  ```
102
64
 
103
65
 
104
66
 
105
- これを別ScriptのAwakeで
67
+ これを別Scriptのupdateで
106
68
 
107
69
  ```C#
108
70
 
109
71
  var hogeManage = new HogeManage();
110
72
 
111
- hogeManage.MakeHogeManage();
73
+ hogeManage.GetZeroHoge();
112
74
 
113
75
  ```
114
76
 
115
- dicの設定して
116
77
 
117
78
 
79
+ GetZeroHogeを呼び出しています。
118
80
 
119
- Uodateで呼び出しています。
120
-
121
- ```C#
122
-
123
- var hogeManage = new HogeManage();
124
-
125
- ZeroHogeFlag = hogeManage.GetZeroHoge();
81
+ が、次にGetZeroHogeが呼ばれた時に、dic[key] = 1;が聞いていません。
126
-
127
- ```
128
-
129
- しかしこれだと、Updateで書いた方がNullExceptionErrorになります。
130
-
131
- AwakeでDebug.Logすると設定されていました。
132
82
 
133
83
 
134
84