正在获取游戏对象上派生类型的属性

本文关键字:派生 类型 属性 对象 获取 游戏 | 更新日期: 2023-09-27 18:20:25

所以我的场景中有几个游戏对象,它们代表不同的演员。此外,我为每种类型的演员都提供了脚本,它们都源自Actor脚本。

public class Actor : MonoBehaviour {
//some properties
}
/// 
public class Doctor : Actor {
//some more properties 
}

只有派生的脚本被附加到游戏对象。即,如果我有一个医生游戏对象-在检查器中只有Doctor脚本附加到它。

我的代码运行所有这些actor游戏对象,并根据一些数据输入更新它们的属性(基本+派生)。目前,我正在检查每个游戏对象是否有特定的组件,然后从正确的脚本中获取属性。

我的目标是始终从当前附加到游戏对象的Actor中获取派生类声明的属性,而不查找组件。我认为林克身上的某些东西会起作用。

正在获取游戏对象上派生类型的属性

听起来你想要GetComponent<Actor>()GetComponents<Actor>()FindObjectsOfType(typeof(Actor))

  • GetComponent搜索单个GameObject并返回第一个匹配的组件,如果没有找到这样的组件,则返回null
  • GetComponents搜索单个GameObject并返回所有匹配组件的数组,如果没有找到此类组件,则返回空数组
  • FindObjectsOfType搜索整个场景,并返回所有匹配Unity对象的数组,如果未找到此类对象,则返回空数组。最后一个调用相当昂贵,但全场景搜索确实有其用途

搜索Actor组件也会找到Doctor组件,因为每个Doctor根据定义都是Actor