我正在尝试创建一个定位系统。
当我点击一个骷髅敌人时,我希望能够从骷髅脚本中获取生命值和伤害,同样,当我点击不同的敌人时,我想获得他们的特定生命值和伤害。
我能想到的唯一方法是使用该GetComponent
方法,但是有没有一种方法可以使用一个泛型GetComponent
,它根据我所针对的敌人使用变量,这样我就可以根据该变量获取选定敌人的数据?
我正在尝试创建一个定位系统。
当我点击一个骷髅敌人时,我希望能够从骷髅脚本中获取生命值和伤害,同样,当我点击不同的敌人时,我想获得他们的特定生命值和伤害。
我能想到的唯一方法是使用该GetComponent
方法,但是有没有一种方法可以使用一个泛型GetComponent
,它根据我所针对的敌人使用变量,这样我就可以根据该变量获取选定敌人的数据?
您没有显示任何示例代码,因此很难看出您有什么和没有解决什么,但这是解决问题的一种方法。
//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
否则你不仅要多次编写相同的代码,而且很难与同一事物的不同实现进行交互。Player
Destructible Box
*在高级情况下,可能需要多个运行状况脚本实现而不是单个巨大类。在这些情况下,某种抽象是有用的——例如接口、继承或消息传递。