How to Develop a Game
Component
PublishDate: 2025-06-01 | CreateDate: 2025-06-01 | LastModify: 2025-06-01 | Creator:ljf12825

Component是附加在GameObject上的功能模块,每个组件都提供了某种行为或属性,组成了游戏对象的功能 class Component继承自Object,在UnityEngine.CoreModule中实现

class Component

是所有可依附在GameObject上的类的基类

不可以直接创建Component

API

Properties

PropertyDescription
gameObjectcomponent附加的GameObject
taggameObject的tag
transformgameObject的Transform

Public Methods

方法描述
BroadcastMessage调用当前 GameObject 或其所有子对象的指定方法。
CompareTag比较 GameObject 的标签(tag)与给定标签。
GetComponent获取当前 GameObject 上的指定类型的组件。
GetComponentInChildren获取当前 GameObject 或其子对象上的指定类型的组件。
GetComponentIndex获取组件在其父对象中的索引。
GetComponentInParent获取当前 GameObject 或其父对象上的指定类型的组件。
GetComponents获取当前 GameObject 上的所有指定类型的组件。
GetComponentsInChildren获取当前 GameObject 和其子对象上的所有指定类型的组件。
GetComponentsInParent获取当前 GameObject 和其父对象上的所有指定类型的组件。
SendMessage在当前 GameObject 上调用指定的方法,所有附加的 MonoBehaviour 都会收到此消息。
SendMessageUpwards调用当前 GameObject 及其所有祖先对象上的指定方法。
TryGetComponent尝试获取指定类型的组件,如果存在则返回该组件,否则返回 null

Unity Scripting Component

组件的特性

特性描述
附加性可以给 GameObject 添加多个组件。
组合式设计Unity 的架构是组合优于继承,一个 GameObject 的行为是由多个组件组合而成的。
可视化编辑在 Unity Inspector 面板中可以直接添加、删除或修改组件。
脚本组件你写的 C# 脚本,本质上也是组件,继承自 MonoBehaviour

在代码中使用组件

//获取组件
Rigidbody rb = GetComponent<Rigidbody>();
//添加组件
gameObject.AddComponent<AudioSource>();

在Unity中,组件之所以能起作用,是因为Unity引擎在运行时会自动调度和执行组件的逻辑,这个背后是Unity引擎的核心“组件驱动”架构

简单理解:Unity的工作循环 + 组件系统

1.GameObject只是容器 2.组件发挥功能 3.Unity引擎每一帧都会遍历所有激活的GameObject,调度它们的组件做该做的事

Unity组件驱动架构

Unity组件

CategoryComponent Name
AudioChorus Filter
Distortion Filter
Echo Filter
High Pass Filter
Listener
Low Pass Filter
Reverv Filter
Reverv Zone
Source
EffectsHalo
Lens Flare
Line Renderer
Particle System
Projector
Trail Renderer
Visual Effect
EventEvent System
Event Trigger
Graphic Raycaster
Physics 2D Raycaster
Physics Raycaster
Standalone Input Module
Touch Input Module
LayoutAspect Ratio Fitter
Canvas
Canvas Group
Cancas Scaler
Content Size Fitter
Grid Layout Group
Horizontal Layout Group
Layout Element
Rect Transform
Vertical Layout Group
MeshMesh Filter
Mesh Renderer
Skinned Mesh Renderer
TextMeshPro - Text
Text Mesh (Legacy)
MiscellaneousAim Constraint
Animation
Animator
Billboard Renderer
Grid
Look At Constraint
Parent Constraint
Particle System Force Field
Position Constraint
Rotation Constraint
Scale Constraint
Sprite Mask
Sprite Shape Renderer
Terrain
Wind Zone
NavigationNav Mesh Agent
Nav Mesh Obstacle
Off Mesh Link
Physics 2DArea Effector 2D
Box Collider 2D
Buoyancy Effector 2D
Capsule Collider 2D
Circle Collider 2D
Composite Collider 2D
Constant Force 2D
Custom Collider 2D
Distance Joint 2D
Edge Collider 2D
Fixed Joint 2D
Friction Joint 2D
Hinge Joint 2D
Platform Effector 2D
Point Effector 2D
Polygon Collider 2D
Relative Joint 2D
Rigidbody 2D
Slider Joint 2D
Spring Joint 2D
Surface Effector 2D
Target Joint 2D
Wheel Joint 2D
PhysicsArticulation Body
Box Collider
Capsule Collider
Character Controller
Character Joint
Cloth
Configurable Joint
Constant Force
Fixed Joint
Hinge Joint
Mesh Collider
Rigidbody
Sphere Collider
Spring Joint
Terrain Collider
Wheel Collider
PlayablesPlayable Director
RenderingCamera
Canvas Renderer
Flare Layer
LOD Group
Light
Light Probe Group
Light Probe Proxy Volume
Occlusion Area
Occlusion Portal
Reflection Probe
Skybox
Sorting Group
Sprite Renderer
Streaming Controller
Scripts自定义脚本
TilemapTilemap
Tilemap Collider 2D
Tilemap Renderer
UI ToolkitPanel Event Handler
Panel Raycaster
UI Document
UIButton
Dropdown - TMP
Effects - Outline
Effects - Position As UV1
Effects - Shadow
Image
Mask
Raw Image
Rect Mask 2D
Scroll Rect
Scrollbar
Selectable
Slider
TMP - Input Field
TMP - Text
Toggle
Toggle Group
Dropdown (Legacy)
Input Field (Legacy)
Text (Legacy)
VideoVideo Player
Visual ScriptingAnimator Message Listener (Listener)
Script Machine
State Machine
Variables