2

我正在尝试创建一个定位系统。

当我点击一个骷髅敌人时,我希望能够从骷髅脚本中获取生命值和伤害,同样,当我点击不同的敌人时,我想获得他们的特定生命值和伤害。

我能想到的唯一方法是使用该GetComponent方法,但是有没有一种方法可以使用一个泛型GetComponent,它根据我所针对的敌人使用变量,这样我就可以根据该变量获取选定敌人的数据?

4

1 回答 1

4

您没有显示任何示例代码,因此很难看出您有什么和没有解决什么,但这是解决问题的一种方法。

//Pseudocode 
GameObject enemy = GetEnemy(); //This could be a raycast, collision or some other method.
Health enemyHealth = enemy.GetComponent<Health>();

这真的很简单。另一种方法可能是发送消息,并在适当的时候让敌人处理它。 从文档

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    void ApplyDamage(float damage) {
        print(damage);
    }
    void Example() {
        gameObject.SendMessage("ApplyDamage", 5.0F);
    }
}

从它的声音来看,您遇到的问题不是获取其他组件,而是您将一堆不相关的功能混合在一起。gameobject一般来说 ,敌人应该*health component与主要玩家相同。健康代码不应该在组件中,Enemy否则你不仅要多次编写相同的代码,而且很难与同一事物的不同实现进行交互。PlayerDestructible Box

*在高级情况下,可能需要多个运行状况脚本实现而不是单个巨大类。在这些情况下,某种抽象是有用的——例如接口、继承或消息传递。

于 2014-07-15T04:55:38.453 回答