我正在尝试创建一个定位系统。
当我点击骷髅敌人时,我希望能够从骷髅脚本访问生命值和伤害,同样,当我点击不同的敌人时,我希望获得他们的特定生命值和损坏。
我能想到的唯一方法是使用 GetComponent
方法,但是有没有办法使用通用的 GetComponent
来根据敌人使用变量我已经确定了目标,这样我就可以根据该变量获取选定敌人的数据?
最佳答案
您没有显示任何示例代码,因此很难看出您已经解决了什么问题以及尚未解决什么问题,但这是解决问题的一种方法。
//Pseudocode
GameObject enemy = GetEnemy(); //This could be a raycast, collision or some other method.
Health enemyHealth = enemy.GetComponent<Health>();
这真的很简单。另一种方法可能是发送消息,并在适当的情况下让敌人处理它。 From the docs :
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
中和 Player
和 Destructible Box
否则,您不仅会多次编写相同的代码,而且在与同一事物的不同实现进行交互时也会遇到困难。
* 在高级情况下,可能需要多个运行状况脚本实现而不是单个大型类。在这些情况下,某种抽象是有用的 - 例如接口(interface)、继承或消息传递。
block 引用>
关于c# - 将 GetComponent<>() 与变量一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24748759/