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