回答編集履歴

1

書式の改善

2015/06/04 04:41

投稿

退会済みユーザー
test CHANGED
@@ -1,12 +1,22 @@
1
- この登録されたイベントが実行される時にchild.nameという変数はどうなっているのか?
1
+ この登録されたイベントが実行される時にchild.nameはどうなっているのか?
2
2
 
3
3
  という事を考えて下さい。
4
4
 
5
5
  この場合、ログにButtonの名前を表示させたいならbutton.nameとするべきです。
6
6
 
7
+ childの方が必要、というのであれば、
8
+
9
+ 一度、器に代入してその参照を渡してやれば良いです。
7
10
 
8
11
 
12
+
13
+ Transform target = child.transform;
14
+
15
+ ~target.name;
16
+
17
+
18
+
9
- ラムダ式の部分で外部の変動している変数参照しているので、イベントが実行されるタイミングでは、その変数の内容は変わってしまっているという事です。スコープ外の変数を参照(delegate、ラムダ式の特徴の一つ)になるのすが参照可能で生きているのでコンパイルエラーにもならずに、このような現象が起こります。
19
+ ラムダ式の部分でループしている変数参照(1つかない)を渡しているので、イベントが実行されるタイミングでは、その内容は変わってしまっているという事です。スコープ外を参照(delegate、ラムダ式の特徴の一つ)で、このような現象が起こります。
10
20
 
11
21
 
12
22
 
@@ -18,7 +28,7 @@
18
28
 
19
29
  コンパイラの解釈の問題らしく、
20
30
 
21
- c#5.0以降なら思った側の動作をするようですね。
31
+ c#5.0以降なら思った側の動作をするようですね。(コピーされ新しく参照されるようです)
22
32
 
23
33
 
24
34