2017-12-30 78 views
0

私の目標は戦闘スクリプトで、CombatHandlerの死機能を敵に付随するスクリプトに呼び出すことです。問題は、敵が同じままでいないということです。つまり、スクリプト名を変更する必要があります。 例えば、ここに1体の敵の次はEnemyGoblinと呼ばれるスクリプトを持つことになり、EnemySalamanderという名前のスクリプトを持っています(これらは敵の統計情報を制御、電気ショック療法)Unity C#さまざまな名前の文字列を使用した呼び出しスクリプト

は、コードスニペットは、戦闘ハンドラからである

if (healthEnemy < 0) { 
    healthEnemy = 0; 
    Debug.Log ("You killed a "+nameEnemy+". You have "+ps.health+" health left!"); 
    //pcc.gameObject.scriptname.death(); 
    clearEnemy(); 
} else if (ps.health < 0) { 
    clearEnemy(); 
    ps.health = 0; 
    Debug.Log ("You died with the enemys health left at " + healthEnemy); 
} 

I gameObjectのスクリプトでdeathメソッドを呼び出す必要がある部分をコメントアウトしました。 Pcc.gameobjectは攻撃対象のgameObject(Enemy)に直接アクセスできる場所です。

+1

これは、OOP原則を求めています!すべてのスクリプトが共通の基本クラス(例えば 'Enemy')を拡張していますか?もしそうなら、 'GetComponent ()'が動作します! – Draco18s

+0

はい!彼らは "EnemyBase"というクラスを継承しているので、代わりにそのクラスを呼び出すことができますか? –

+0

public class EnemySalamander:EnemyBase { \t void Start(){ \t} } –

答えて

1

これはまさにGetComponent()の機能です。公式ドキュメントは、クラスに渡すとも示されたタイプのサブクラスである任意のコンポーネントを見つけること、それは明確にしていませんが、それは以下となります。

Getting derived class using base class in GetComponent?

はい、これは私のように動作しますあなたはそれが期待されると信じています。

本当に引用するUnity Answers QAからのまともな塊はありません。これは、まっすぐに実装と結果になります。

関連する問題