回答編集履歴
1
追記
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``の結果は同じになります。
|