[Tanks]m_ExplosionParticlesについて | Unity Forum | Tech Stadium Forum

[Tanks]m_ExplosionP...
 
通知
すべてクリア

[Tanks]m_ExplosionParticlesについて  

  RSS

Student
(@student)
メンバー Moderator
結合: 4年前
投稿: 1325
17/03/2021 3:06 pm  

Health & UI
TankHealthスクリプトの23行目に
m_ExplosionAudio = m_ExplosionParticles.GetComponent<AudioSource>();
とあり、
public GameObject m_ExplosionPrefab;
で定義されたゲームオブジェクトのAudioSourceを取得する一文があります。

m_ExplosionParticlesはm_ExplosionPrefabをインスタンス化したゲームオブジェクトのParticleSyetemコンポーネントでしかないので、
m_ExplosionAudio = m_ExplosionParticles.gameObject.GetComponent<AudioSource>();
とする必要があると思うのですが、

なぜ、
AudioSource = ParticleSystem.GetComponent<AudioSource>();
のような構造で、同じゲームオブジェクトに付加された別のコンポーネントを取得できるのでしょうか?


引用
Teacher
(@admin)
メンバー Admin
結合: 4年前
投稿: 1296
17/03/2021 3:07 pm  

GetComponentには「GameObject.GetComponent」と「Component.GetComponent」の二種類があり、GameObject.GetComponentにはそのオブジェクトにアタッチされているコンポーネントを取得する事ができ、Component.GetComponentはそのコンポーネントのアタッチされているGameObjectにアタッチされているコンポーネントを取得できる関数です。

なので、GameObject.GetComponentでもComponent.GetComponentでもどちらでも対応できているわけです。 https://docs.unity3d.com/ja/current/ScriptReference/GameObject.GetComponent.html
https://docs.unity3d.com/ja/2018.4/ScriptReference/Component.GetComponent.html


返信引用
共有:
タイトルとURLをコピーしました