主题
RenderTriggerUnit
概览
| 字段 | 值 |
|---|---|
| Kind | Unit · 单位 Unit |
| Realm | common |
继承关系
- Unit(4 属性 / 25 函数 / 6 事件)
- SpaceUnit(2 属性 / 9 函数)
- BasePart(24 属性 / 9 函数)
- TriggerUnit(8 属性 / 7 函数 / 4 事件)
- [RenderTriggerUnit](18 属性 / 1 函数)
- TriggerUnit(8 属性 / 7 函数 / 4 事件)
- BasePart(24 属性 / 9 函数)
- SpaceUnit(2 属性 / 9 函数)
继承成员
4 个来源 / 21 属性 / 50 函数 / 10 事件
- 来自 TriggerUnit(8 属性 / 7 函数 / 4 事件)
- 属性:
CFrame、Scale、PhysicsActive、CollisionGroup、CanTouch - 函数:
AddCollisionWithGroup、RemoveCollisionWithGroup、GetCollisionWithGroups、AddNoCollisionPairWithUnit、RemoveNoCollisionPairWithUnit、RemoveAllNoCollisionPairWithUnit、GetNoCollisionPairUnitList - 事件:
OnTriggerEnter、OnTriggerExit、OnLocalTriggerEnter、OnLocalTriggerExit
- 属性:
- 来自 BasePart(24 属性 / 9 函数)
- 属性:
PivotOffset、Position、Rotation、Size、AssemblyRootPriority、AssemblyLinearVelocity、AssemblyAngularVelocity、AssemblyMass、AssemblyCenterOfMass、Persistent - 函数:
IsNetworkOwnerSide、GetNetworkOwner、SetNetworkOwner、GetNetworkOwnershipAuto、SetNetworkOwnershipAuto、IsWeldConstraintRoot、IsWeldConstraintChild、GetConnectedUnits、SyncRenderToPhysics
- 属性:
- 来自 SpaceUnit(2 属性 / 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
- 属性:
RenderTriggerUnit 是兼具运行时模型渲染与触发检测能力的场景单位;RenderMeshId 指定实际渲染网格,DisplayModelId 只用于编辑器预览。
适用场景
用于需要同时展示模型和检测单位进入、离开的场景区域。可通过 RenderMeshId 指定可见模型,通过物理与碰撞属性设置触发范围,并监听 OnTriggerEnter、OnTriggerExit 处理交互。
使用要点
通过 World:CreateUnit 创建实例,在 config 中把 RenderMeshId 设置为项目提供的有效网格资源 URI,并监听 OnTriggerEnter/OnTriggerExit 处理进入和离开。
注意事项
运行时外观使用 RenderMeshId,DisplayModelId 是 editOnly 的编辑器预览字段,不影响运行时渲染。作者可见脚本可用 SkinId 与 ModelColor1~4 配置单皮肤外观,也可用公开的 UseSkinList 与 SkinSlots 配置多槽位外观;Color 使用 0-255 RGBA 四参数构造。
代码示例
创建可见触发区域并监听进入事件
lua
-- @runtime client
local world = game:GetService("World")
-- 不指定 RenderMeshId 时使用 Meta 声明的默认模型,避免硬编码资源 ID
local renderTrigger = world:CreateUnit("RenderTriggerUnit", {})
if renderTrigger == nil then return end
renderTrigger.ModelColor1 = Color.New(255, 0, 0, 255)
renderTrigger.ModelVisible = true
renderTrigger.OnTriggerEnter:Once(function(otherUnit)
print("进入触发区域:", otherUnit.Name)
renderTrigger:Destroy() -- 完成一次交互后释放自有区域
end)
-- 若未发生进入事件,请在业务结束时调用 renderTrigger:Destroy()属性 (18)
| Name | 类型 | 默认值 | 说明 |
|---|---|---|---|
RenderMeshId | String | official://mesh/59268 | RenderMeshId 是 RenderTriggerUnit 的模型资源 ID 属性,类型为字符串,用于指定该渲染触发单元当前显示的模型资源。 |
ModelAlpha | Float | 1 | 控制模型的整体透明度,0 为完全透明,1 为完全不透明 |
LocalTransparencyModifier | Float | 1 | 该单元的本地透明度乘数,用于在本地客户端进一步调整模型透明度。 |
ModelVisible | Bool | true | 控制模型是否可见,隐藏后仍参与物理碰撞 |
CastShadow | Bool | true | CastShadow 是 RenderTriggerUnit 的布尔属性,用于控制该单元是否投射阴影。 |
ModelBindParent | Bool | false | 启用后,当父节点为 WorldUnit、RenderUnit、TriggerUnit、PhysicsUnit 等支持父子带动的场景单位时,当前模型渲染表现将跟随父节点的变换自动同步。运行时可通过脚本设置 .ModelBindParent = true/false 动态切换该行为。 |
PhysicsMeshId | String | official://mesh/59268 | 物理资源 ID,字符串类型,属性面板标题为“物理资源ID”。该属性用于为 RenderTriggerUnit 指定物理资源,属于可编辑的公开属性。 |
DisplayModelId | String | "" | 用于在编辑器中预览的模型资源 ID,不影响运行时实际渲染的模型。 |
ModelColor1 | Color | Color.New(255, 255, 255, 255) | ModelColor1 是 RenderTriggerUnit 的染色区域 1 颜色属性,类型为 Color,用于设置模型上第 1 个染色区域的颜色。 |
ModelColor2 | Color | Color.New(255, 255, 255, 255) | ModelColor2 是 RenderTriggerUnit 的染色区域 2 颜色属性,类型为 Color,用于设置模型上第 2 个染色区域的颜色。 |
ModelColor3 | Color | Color.New(255, 255, 255, 255) | ModelColor3 是 RenderTriggerUnit 的染色区域 3 颜色属性,类型为 Color,用于设置模型上第 3 个染色区域的颜色。 |
ModelColor4 | Color | Color.New(255, 255, 255, 255) | ModelColor4 是 RenderTriggerUnit 的染色区域 4 颜色属性,类型为 Color,用于设置模型上第 4 个染色区域的颜色。 |
SkinId | String | "" | SkinId 是 RenderTriggerUnit 的皮肤属性,类型为字符串,用于指定该单元使用的皮肤资源。 |
UseSkinList | Bool | false | 多槽位皮肤开关;启用后按各子网格的 SkinSlots 配置皮肤与染色。 |
SkinSlots | Array<SkinSlot> | [] | 各子网格的皮肤与染色配置列表;元素包含 SkinId 和 ModelColor1~4。 |
UseCustomAppearance | Bool | false | 是否启用自定义外观。 |
CustomAppearanceId | String | "" | 自定义外观 ID,字符串类型,属性面板标题为“自定义外观ID”。该属性用于为 RenderTriggerUnit 指定自定义外观资源,属于可编辑的公开属性。 |
OcclusionType | Int | 3 (不处理) | OcclusionType 属性用于设置该渲染触发单位在遮挡玩家视角时所采用的规则,影响其被相机遮挡时的表现方式。该属性为整数类型,具体取值对应不同的遮挡处理规则。 |
关联类型
函数 (1)
SetRenderMeshWithDefaultSkin
签名:SetRenderMeshWithDefaultSkin(renderMeshId: String) -> void
SetRenderMeshWithDefaultSkin 是 RenderTriggerUnit 的成员函数,用于切换该单元使用的模型,并为新模型应用默认皮肤。参数 renderMeshId 为必填的字符串,表示目标模型资源 ID。
| 参数 | 类型 | 说明 |
|---|---|---|
renderMeshId | String | 模型资源ID |
返回值 void
示例代码
切换为项目配置的模型并应用默认皮肤
lua
-- @runtime client
local world = game:GetService("World")
local renderTrigger = world:CreateUnit("RenderTriggerUnit", {})
if renderTrigger == nil then return end
-- 用单位自身的 RenderMeshId(Meta 默认值)演示,不硬编码资源 ID
renderTrigger:SetRenderMeshWithDefaultSkin(renderTrigger.RenderMeshId)
print("已切换模型:", renderTrigger.RenderMeshId)
renderTrigger:Destroy()