主题
SeatUnit
概览
| 字段 | 值 |
|---|---|
| Kind | Unit · 单位 Unit |
| Realm | common |
继承关系
继承成员
3 个来源 / 30 属性 / 43 函数 / 6 事件
- 来自 BasePart(23 属性 / 9 函数)
- 属性:
CFrame、PivotOffset、Position、Rotation、Scale、Size、ModelAlpha、ModelVisible、CastShadow、ModelColor1、ModelColor2、ModelColor3、ModelColor4、SkinId、UseCustomAppearance、CustomAppearanceId、OcclusionType、AssemblyRootPriority、AssemblyLinearVelocity、AssemblyAngularVelocity、AssemblyMass、AssemblyCenterOfMass、IsStaticOptimization - 函数:
IsNetworkOwnerSide、GetNetworkOwner、SetNetworkOwner、IsWeldConstraintRoot、IsWeldConstraintChild、GetWeldConstraintRootId、GetWeldConstraintId、GetConnectedUnits、SyncRenderToPhysics
- 属性:
- 来自 SpaceUnit(3 属性 / 9 函数)
- 来自 Unit(4 属性 / 25 函数 / 6 事件)
- 属性:
AssetId、Name、Desc、Parent - 函数:
ClearAllChildren、GetChildren、GetDescendants、IsAncestorOf、IsDescendantOf、FindFirstAncestor、FindFirstAncestorWhichIsA、FindFirstAncestorOfClass、FindFirstChild、FindFirstChildWhichIsA、FindFirstChildOfClass、HasChildren、GetChildCount、GetChildAtIndex、SetAttribute、GetAttribute、GetAllProps、Clone、IsA、Destroy、GetPropertyChangedSignal、GetAttributeChangedSignal、FindFromPath、GetFullPath、GetDebugId - 事件:
ChildAdded、ChildRemoved、DescendantAdded、DescendantRemoving、AncestryChanged、Destroying
- 属性:
SeatUnit 是座位外观与占用状态的接口类型。当前运行包可以创建并显示座位,但坐下交互与占用者事件尚不可依赖。
适用场景
当前仅适合验证座位模型外观;等运行包恢复 Occupant 与 OnOccupantChanged 后,再用于上下车、驾驶位或座位占用逻辑。
使用要点
设置 RenderMeshId 与 ModelVisible 后可检查座位外观。正式交互逻辑暂不要依赖 Occupant 或 OnOccupantChanged,并应对事件字段为空做保护。
注意事项
座位默认 ModelVisible 为 false,需设置 RenderMeshId 指定外观模型并将 ModelVisible 设为 true 才能在场景中看到座位。最新 Meta 已声明 Occupant 与 OnOccupantChanged;当前运行包实测新建 SeatUnit 虽可显示,但 OnOccupantChanged 字段可能为 nil,玩家也可能无法触发坐下交互。运行时实现与 Meta 对齐前,只能把创建代码视为外观验证,不能把 Occupant/OnOccupantChanged 用于正式交互逻辑。公开契约只声明 Occupant 为 Unit,后续恢复后也应以目标运行包支持的角色类型为准。
代码示例
创建座位并检查当前交互能力
lua
-- @runtime client
local world = game:GetService("World")
local seat = world:CreateUnit("SeatUnit", {
RenderMeshId = "official://mesh/90002",
ModelVisible = true,
})
local occupantSignal = seat["OnOccupantChanged"]
if occupantSignal == nil then
print("当前运行包尚未提供座椅占用事件,请勿依赖交互逻辑")
else
print("座椅占用事件已可用,可在目标包继续验证")
end属性 (3)
| Name | 类型 | 默认值 | 说明 |
|---|---|---|---|
Disabled | Bool | false | 控制座位是否禁用,禁用后玩家无法与座位交互。 |
Occupant | Unit | - | 表示当前座位上的乘客单位,即正在乘坐该座位的单位实例。 |
RenderMeshId | String | official://mesh/90002 | 座位显示的模型资源 ID,用于指定座位的外观。 |
关联类型
事件 (1)
OnOccupantChanged
签名:OnOccupantChanged(occupant: Unit) 触发:local
当座位上的乘客发生变化时触发,回调参数为当前乘客的单位实例。
| 回调参数 | 类型 | 说明 |
|---|---|---|
occupant | Unit | 当前乘客 |
示例代码
安全检查座位占用事件是否可用
lua
-- @runtime client
local world = game:GetService("World")
local seat = world:CreateUnit("SeatUnit", {
RenderMeshId = "official://mesh/90002",
ModelVisible = true,
})
local occupantSignal = seat["OnOccupantChanged"]
if occupantSignal == nil then
print("当前运行包尚未提供座椅占用事件")
else
occupantSignal:Once(function(occupant)
print("座位乘客变化:", occupant)
end)
end