回答編集履歴

1

追記

2021/07/08 02:21

投稿

fiveHundred
fiveHundred

スコア10152

test CHANGED
@@ -1,3 +1,31 @@
1
1
  ``this.transform``は大抵のスクリプトで継承しているであろうMonoBehaviourクラス(厳密にはさらに親クラスのComponentクラス)で[初めから定義されている](https://docs.unity3d.com/ja/current/ScriptReference/Component-transform.html)ためです。
2
2
 
3
3
  そのため、わざとMonoBehaviourクラスを継承しない、という手段を取らない限り、どのスクリプトでも``this.transform``を使うことが出来ます。
4
+
5
+
6
+
7
+ ---
8
+
9
+
10
+
11
+ 質問の認識が若干間違っていたので、追記します。
12
+
13
+
14
+
15
+ > このオブジェクトのtransformコンポーネントは、this.transformで参照できることから、このオブジェクトのtransformコンポーネントはスクリプトAで定義されたクラスから作成されたインスタンスのメンバーだと思うのですが
16
+
17
+
18
+
19
+ その解釈自体が間違っています。
20
+
21
+ Unityのコンポーネントは全てゲームオブジェクトにアタッチされたものになります。
22
+
23
+ (Transformコンポーネントは若干特殊(削除できない)ですが、その点については同じです)
24
+
25
+ そして、``this.transform``は「同じゲームオブジェクトにアタッチされたTransform」を取得するものです。
26
+
27
+ (つまり、``this.GetComponent<Transform>()``と同じです)
28
+
29
+ したがって、Transformコンポーネントは(スクリプトAとは関係なしに)すでにゲームオブジェクトにアタッチされており、それを``this.transform``で取得しているということになります。
30
+
31
+ この場合、同じゲームオブジェクトにアタッチされているスクリプトBでも、``this.transform``の結果は同じになります。