2017-12-30 65 views
0

내 목표는 전투 스크립트에서 CombatHandler의 죽음 기능을 적과 연결된 스크립트로 호출하는 것입니다. 문제는 적군이 똑같이 머무르지 않는다는 것입니다. 따라서 스크립트 이름이 바뀌어야합니다! 예를 들어, 한 적이 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에서 니펫 EnemyGoblin라는 스크립트 (이 적 통계를 제어, 요법) 여기

이있을 것이다 gameObject의 스크립트에서 death 메서드를 호출해야하는 부분을 주석 처리했습니다. Pcc.gameobject는 내가 공격하고있는 gameObject (Enemy)에 직접 액세스 할 수있는 곳입니다.

+1

이것은 OOP 원칙을 요구합니다! 모든 스크립트가 공통 기본 클래스 (예 : '적')를 확장합니까? 그렇다면'GetComponent ()'이 작동합니다! – Draco18s

+0

예! "EnemyBase"라는 클래스를 상속하므로 클래스를 대신 호출 할 수 있습니까? –

+0

공용 클래스 EnemySalamander : EnemyBase { \t void Start() { \t} } –

답변

1

정확하게 이것은 GetComponent()입니다. 공식 문서는 클래스를 전달하는 것도 표시된 유형의 하위 클래스 인 구성 요소를 찾을 수 있음을 분명히하지 않지만, 그것은 것입니다 :

Getting derived class using base class in GetComponent?

예,이 I로 작동합니다 당신이 그것을 기대한다고 믿습니다.

Unity Answers 품질 보증에서 실제로 인용 할만한 텍스트가 없습니다. 그것은 곧바로 구현과 결과로 이어집니다.