
###前提・実現したいこと
thisとthis.gameObjectの違いは何なのでしょうか?
また、自身にアタッチしているコンポーネントを取得する際は、どちらで書くべきなのでしょうか?
下記のように出力をとったところ、
C#
1 Debug.Log (this); 2 Debug.Log (this.gameObject);
ゲームオブジェクト名 (クラス名) ゲームオブジェクト名 (UnityEngine.GameObject)
と表示されました。
どうやら、
this → クラス。 this.gameObject → そのクラスがアタッチしているゲームオブジェクト。
(↑合っていますか?)
ということらしいのですが、その使い分けがわかりません。
例えば、そのゲームオブジェクトにアタッチしているAnimatorを取得するとき、
GetComponentの呼び出しは、下記においてどちらを使うべきですか?
また、下記2つの書き方で違いはあるのでしょうか?
(どちらもコードは通りました。)
C#
1Animator animeData = this.GetComponent<Animator> (); 2Animator animeData = this.gameObject.GetComponent<Animator> ();
thisとthis.gameObjectの違いや、使い分けのご教授をお願いします。
###追記
ゲーム再生時にNullエラーが起きるのを検証しようとしました。
まず、ゲームオブジェクトにアタッチしているスクリプトを下記のようにしました。
C#
1using UnityEngine; 2using System.Collections; 3 4public class Sample: MonoBehaviour{ 5 6 void Start () { 7 Hoge hoge = new Hoge (); 8 } 9}
次にゲームオブジェクトにアタッチさせないスクリプトも、MonoBehaviourを継承させて、下記のようにしました。
C#
1using UnityEngine; 2using System.Collections; 3 4public class Hoge: MonoBehaviour{ 5 6 void Start () { 7 Debug.Log(this.gameObject); 8 } 9}
ゲーム再生時に発生したエラー(警告文)。
「MonoBehaviourを継承したクラスはnewできない」のでしょうか?
You are trying to create a MonoBehaviour using the 'new' keyword. This is not allowed. MonoBehaviours can only be added using AddComponent(). Alternatively, your script can inherit from ScriptableObject or no base class at all UnityEngine.MonoBehaviour:.ctor() Hoge:.ctor() Sample:Start() (at Assets/Sample.cs:7)

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/01/30 17:48 編集
2017/01/31 01:13
退会済みユーザー
2017/02/01 14:38 編集
2017/02/02 07:38
退会済みユーザー
2017/02/03 13:15