[Unity] 平台游戏控制器 教程 个人学习笔记
【阿严】[Unity]平台跳跃游戏 角色控制器 教程合集 _ 状态机架构 B站视频教程
个人不完全学习笔记,个人目的:重复重点,记忆。
StateMachine
/// 状态机类 ,持有所有状态类,并实现状态的切换
PlayerState : ScriptableObject, IState ///
GetComponentInChildren<T>()
是一个Unity引擎提供的泛型方法,它用于在当前对象及其子对象中查找并获取指定类型(T)的组件。如果在当前对象及其子对象中找到了指定类型的组件,该方法会返回第一个找到的组件;如果没有找到,方法会返回null。
与之相对的,GetComponent<T>()
方法只会在当前对象上查找指定类型的组件,而不会在其子对象中查找。
在你提供的这段代码中,作者使用了 GetComponentInChildren<Animator>()
方法来获取当前对象或其子对象中的Animator组件。这里使用 GetComponentInChildren
而不是 GetComponent
的原因可能是作者认为Animator组件可能不在当前对象上,而是在当前对象的子对象中。这种情况在Unity中是非常常见的,比如当你将动画控制器和角色模型分开放置时,通常会将Animator组件附加在子对象(如角色模型)上,而非父对象。
使用 GetComponentInChildren<T>()
方法可以确保在整个对象层级结构中查找并获取到所需的组件。然而,需要注意的是,相较于 GetComponent<T>()
,GetComponentInChildren<T>()
的性能开销会略大一些,因为它需要遍历当前对象的所有子对象。所以,在使用时要确保根据实际需求选择合适的方法。