Components
阅读
2024-07-05更新
最新编辑:晨1999
阅读:
更新日期:2024-07-05
最新编辑:晨1999
组件
一个组件被添加给游戏对象来提供功能。这个功能可以千变万化。
你可以添加一个组件来在这个游戏对象的位置渲染一个模型。或者你可以添加一个组件来在这个游戏对象的位置创建一个物理对象。
你也可以创建你自己的组件。这就是编写游戏的方式。例如,你可以编写一个组件,在前进键被按住时将一个物体i向前移动。
添加组件
要在编辑器中为游戏对象添加组件,选中游戏对象然后在检查器中点击Add Component。
通过代码给游戏对象添加组件
// 创建
var modelRenderer = go.Components.Create<ModelRenderer>();
// 设置
modelRenderer.Model = Model.Load( "models/dev/box.vmdl" );
modelRenderer.Tint = Color.Red;
查询组件
你可以用多种方式来查询一个游戏对象的组件。
// 获取一个游戏对象上的所有组件
var x = go.Components.GetAll();
// 获取相同类型的多个组件
var x = go.Components.GetAll<ModelRenderer>();
// 获取一个游戏对象上的单个组件
var x = go.Components.Get<ModelRenderer>();
// 获取一个游戏对象与它子级上的单个组件
var x = go.Components.GetInChildrenOrSelf<ModelRenderer>();
// 获取一个游戏对象子级上的单个组件
var x = go.Components.GetInChildren<ModelRenderer>();
// 获取一个游戏对象后代与自身上的单个组件
var x = go.Components.GetInDescendantsOrSelf<ModelRenderer>();
// 获取一个游戏对象后代上的单个组件
var x = go.Components.GetInDescendants<ModelRenderer>();
// 获取一个游戏对象祖先与自身上的单个组件
var x = go.Components.GetInAncestorsOrSelf<ModelRenderer>();
// 获取一个游戏对象祖先上的单个组件
var x = go.Components.GetInAncestors<ModelRenderer>();
// 获取祖先上禁用的组件
var x = go.Components.Get<ModelRenderer>( FindMode.Disabled | FindMode.InAncestors );
// 获取祖先与自身上所有启用的组件
var x = go.Components.GetAll<ModelRenderer>( FindMode.Enabled | FindMode.InAncestors | FindMode.InSelf );
组件引用
你有两种主要方式来获取组件引用为变量。
// 在检查器中创建一个属性,你可以从场景中将任何ModelRenderer拖到此处来引用它
[Property] ModelRenderer BodyRenderer { get; set; }
// 引用这个组件相同游戏对象上的第一个ModelRenderer,或者不存在时创建一个
[RequireComponent] ModelRenderer BodyRenderer { get; set; }