teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2021/07/08 02:21

投稿

fiveHundred
fiveHundred

スコア10466

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``の結果は同じになります。