正在获取游戏对象上派生类型的属性
本文关键字:派生 类型 属性 对象 获取 游戏 | 更新日期: 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并返回第一个匹配的组件,如果没有找到这样的组件,则返回nullGetComponents
搜索单个GameObject并返回所有匹配组件的数组,如果没有找到此类组件,则返回空数组FindObjectsOfType
搜索整个场景,并返回所有匹配Unity对象的数组,如果未找到此类对象,则返回空数组。最后一个调用相当昂贵,但全场景搜索确实有其用途
搜索Actor
组件也会找到Doctor
组件,因为每个Doctor
根据定义都是Actor
。