C# 使用GetComponent<&燃气轮机;()使用变量?
我正试图建立一个目标系统 当我点击一个骷髅敌人时,我希望能够从骷髅脚本获得生命值和伤害,同样,当我点击另一个敌人时,我希望获得他们的特定生命值和伤害C# 使用GetComponent<&燃气轮机;()使用变量?,c#,unity3d,gameobject,C#,Unity3d,Gameobject,我正试图建立一个目标系统 当我点击一个骷髅敌人时,我希望能够从骷髅脚本获得生命值和伤害,同样,当我点击另一个敌人时,我希望获得他们的特定生命值和伤害 我能想到的唯一方法是使用GetComponent方法,但是有没有一种方法可以使用一个通用的GetComponent,它根据我瞄准的敌人使用一个变量,这样我就可以根据该变量获取选定敌人的数据?您没有显示任何示例代码,所以很难看出你有什么和没有解决,但这是解决问题的一种方法 //Pseudocode GameObject enemy = GetEne
我能想到的唯一方法是使用
GetComponent
方法,但是有没有一种方法可以使用一个通用的GetComponent
,它根据我瞄准的敌人使用一个变量,这样我就可以根据该变量获取选定敌人的数据?您没有显示任何示例代码,所以很难看出你有什么和没有解决,但这是解决问题的一种方法
//Pseudocode
GameObject enemy = GetEnemy(); //This could be a raycast, collision or some other method.
Health enemyHealth = enemy.GetComponent<Health>();
从它的声音来看,你遇到的问题不是获得另一个组件,而是将一堆不相关的功能混合在一起。一个敌人gameobject
一般来说*应该拥有与主要玩家相同的健康组件。健康代码不应出现在敌人
和玩家
以及可破坏框
组件中,否则不仅您多次编写同一代码,而且您在与同一事物的不同实现交互时会遇到困难
*在高级情况下,可能需要一个健康脚本的多个实现,而不是一个大型类。在这些情况下,某种抽象是有用的,例如接口、继承或消息传递
您没有显示任何示例代码,因此很难看到您已经完成的和尚未完成的工作,但这是解决问题的一种方法
//Pseudocode
GameObject enemy = GetEnemy(); //This could be a raycast, collision or some other method.
Health enemyHealth = enemy.GetComponent<Health>();
从它的声音来看,你遇到的问题不是获得另一个组件,而是将一堆不相关的功能混合在一起。一个敌人gameobject
一般来说*应该拥有与主要玩家相同的健康组件。健康代码不应出现在敌人
和玩家
以及可破坏框
组件中,否则不仅您多次编写同一代码,而且您在与同一事物的不同实现交互时会遇到困难
*在高级情况下,可能需要一个健康脚本的多个实现,而不是一个大型类。在这些情况下,某种抽象是有用的,例如接口、继承或消息传递
您是否尝试过EnemyScript EnemyScript=gameObject.GetComponent()代码>?我做过类似的事情:对手.GetComponent().getHit(伤害)代码>这是我在
中硬编码的地方,但我想说的是,如何将
设置为与对手的脚本相等?我认为你不能这样做。我的建议是让所有敌人都有相同的脚本,所以你不需要更改脚本。相反,在敌方脚本中,您需要有一个变量type
,例如标记敌方是什么(例如,机器人为type=1
,外星人为type=2
,等等)。这样,你也可以从GetComponent
中获取类型
,并为每种类型的敌人设置条件。GetComponent方法是否具有接受系统.type
对象的覆盖?你试过EnemyScript EnemyScript=gameObject.GetComponent()吗代码>?我做过类似的事情:对手.GetComponent().getHit(伤害)代码>这是我在
中硬编码的地方,但我想说的是,如何将
设置为与对手的脚本相等?我认为你不能这样做。我的建议是让所有敌人都有相同的脚本,所以你不需要更改脚本。相反,在敌方脚本中,您需要有一个变量type
,例如标记敌方是什么(例如,机器人为type=1
,外星人为type=2
,等等)。这样你也可以从GetComponent
获得类型
,并为每种类型的敌人创造条件。GetComponent方法是否有一个可以接受系统的覆盖。类型
对象?很好的答案,基于组件的体系结构使这类东西非常容易。很好的答案,基于组件的体系结构使这类工作变得非常简单。