[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>() 的性能开销会略大一些,因为它需要遍历当前对象的所有子对象。所以,在使用时要确保根据实际需求选择合适的方法。

posted @ 2023-03-17 02:08  专心Coding的程侠  阅读(47)  评论(0编辑  收藏  举报