所以我在我的场景中有几个代表不同演员的游戏对象。此外,我为每种类型的actor都有脚本,它们都来自Actor
脚本。
public class Actor : MonoBehaviour {
//some properties
}
///
public class Doctor : Actor {
//some more properties
}
只有派生的脚本会附加到游戏对象上。即如果我有一个医生游戏对象 - 只有Doctor
脚本在检查员中附加到它。
我的代码遍历所有这些actor游戏对象 - 并从某些数据输入更新其属性(base + derived)。 目前我正在检查每个游戏对象是否具有特定组件,然后从正确的脚本中获取属性。
我的目标是始终从Actor
获取派生类声明的属性,该属性当前附加到游戏对象,而不查找该组件。
我认为Linq会有所作为。
答案 0 :(得分:0)
听起来像你想要GetComponent<Actor>()
,GetComponents<Actor>()
或FindObjectsOfType(typeof(Actor))
。
GetComponent
搜索单个GameObject并返回第一个匹配的组件,如果没有找到这样的组件,则返回null。GetComponents
搜索单个GameObject并返回所有匹配组件的数组,如果没有找到这样的组件,则返回一个空数组。FindObjectsOfType
搜索整个场景并返回所有匹配的Unity对象的数组,如果没有找到这样的对象,则返回一个空数组。最后一次通话相当昂贵,但全场景搜索确实有其用途。搜索Actor
个组件也会找到Doctor
个组件,因为根据定义,每个Doctor
都是Actor
。