C渲染ass
了解此行为的重要性是重要的,因为它意味着对象可以在 工作区 中移除,当不需要时。 例如, Models 可以在 Class.Workspace 中移除,当另一个地图正在播放时。 对于不需要 3D
作为 3D 对象的持有者,Workspace 包括与零件、其位置和间隙相关的许多有用功能。
访问工工作间
Workspace 可以通过多种方式访问,其中所有都是有效的。
- workspace
- game.Workspace
- game:GetService("Workspace")
注释
- Class.Model:MakeJoints()和Class.Model:BreakJoints() 方法继承自 Class.Model 类,可以通过1>Class.Workspace:MakeJoints() 和 4>Class.工作间orkspace:BreakJoints() 来使用,它们仅在插件中使用。
- 无法删除 Workspace 。
- 客户端的当前 Camera 对象可以使用 Workspace.CurrentCamera 属性访问。
- Class.Terrain 对象可以使用 Workspace.Terrain 属性访问。
概要
属性
地等级上的空气密度,用于气动力模型。
确定其他用户创建的资产是否可以在游戏中出售。
为客户端指定动画减速模式。
使用本地玩家的 Camera 对象。
游戏运行的时间(秒)。
确定是否在 BaseParts 上的 EnableFluidForces 属性是否是真实的。
为动态地形草、动云和粒子提供全球风向量。
由重力影响下落的BaseParts的加速度。
启用对 IKControls 的限制的支持。如果它被禁用,IKControls 将无视物理限制。
设置角色头和配件是否应该下载为 MeshParts。
控制使用任何移动限制时选择装配根部分的逻辑。
设置解决器将物理模拟推进的时间。
配置引擎恢复事件处理器的时间。
配置引擎决定流媒体内容到玩家时的方式。
是否为该场景方启用内容流媒。
确定是否启用 Streaming Integrity Mode。
最小距离,该内容将被高优先级的玩家流量。
内容将被流向玩家的最大距离。
确定是否设置 parts 在不同组中不会碰撞会忽略碰撞和触摸事件。
设置模型的细节级别以实现启用实例流媒体的体验。
控制当实例串流启用时,Models 的模型传输行为。
Class.Model 或 nil 如果未设置。
仅用于编辑器的属性,用于在模型周围缩放。设置此属性会使缩放像 Model/ScaleTo 被调用。
确定Model的枢轴位置,其中 不 有设置Model.PrimaryPart。
方法
返回由于受到物理学影响而被视为“有效”的 BaseParts 的数量。
返回一个整数,在 0 和 100 之间,代表物理模拟当前正在减速的实时百分比。
返回物理模拟器当前正在模拟的每秒钟的框架数。
返回服务器时间在秒内。
在指定的 Parts 和任何与零件相触摸的部分依据零件的表面和指定的共同创建模式创建。
如果游戏启用了 PGS 物理解决器,返回 true。
将 Workspace.CurrentCamera 位置和缩放到显示 BaseParts 当前在 Workspace 中的程度。
如果 BasePart 的任何部分触摸到其他部分,返回 true。
在指定方向中投射一个方块形状,并且如果形状触擊 RaycastResult 或 BasePart 元件,将返回一个 Terrain 。
返回一个包含 边界盒 的阵列部分的返方块。
返回一个包含 边界盒 的多个零件的阵列。
返回一个拥有与指定部分共用空间的阵列。
- IKMoveTo(part : BasePart,target : CFrame,translateStiffness : number,rotateStiffness : number,collisionsMode : Enum.IKCollisionsMode):void
通过逆时针 kinematics 将指定的部分移动到指定的位置,以确保任何参与该部分的关节、限制或碰撞都满足物理上的完整要求。
使用原始、方向和可选的 RaycastParams 射线,然后返回一个 RaycastResult ,如果可选的对象或地形与射线交叉,则返回一个 Datatype.RaycastResult。
- Spherecast(position : Vector3,radius : number,direction : Vector3,params : RaycastParams):RaycastResult?
在指定方向中投射一个球形,并且如果形状击中 RaycastResult 或 BasePart 细胞,将返回一个 Terrain 。
基于指定的时间增量和可选的 BaseParts 集合,为世界上的零件提供模拟。
将此模型设置为持久为指定玩家。 Model.ModelStreamingMode 必须设置为 PersistentPerPlayer 才能因为添加而导致行为的更改。
返回包含模型所有部分的音量的描述。
返回 BaseParts 在 Model 中所有内容的最小边界盒的大小,与 Model.PrimaryPart 如果设置。
返回所有 Player 对象,这个模型对象持续的。 行为由调用此方法是否来自 Script 或 LocalScript 决定。
返回模型的标准尺寸,默认为 1 对于新创建的模型,并且随着它在 Model/ScaleTo 通过缩放而改变。
将 PrimaryPart 移动到指定位置。如果未指定主要部分,模型的根部分将被使用。
该模型不再对指定的玩家持久。 Model.ModelStreamingMode 必须设置为 PersistentPerPlayer 才能因为移除而改变行为。
设置模型的缩放因素,调整所有子集实例的尺寸和位置,使其在缩放因素为 1 时,相对于其初始大小和位置拥有该缩放因素。
使用 Model 的给定 Offset,将模型的方向保偏移值,如果另一个 Vector3 或 BasePart 已经在新位置,那么 1> Class.Model1> 将覆盖该对象。
获得 PVInstance 的枢轴。
形成 PVInstance 与所有的后代 PVInstances ,使 pivot 现在位于指定的 CFrame 。
属性
AllowThirdPartySales
此 Workspace 属性确定其他使用者创建的资产是否可以在游戏中出售。
什么是第三方销售?
当该值为“MarketplaceService”时,只有地方创建者(即玩家或群组)创建的资产才能使用 Class.MarketplaceService 进行销售。
在大多数情况下,游戏不需要出售第三方资产。 但是,一些游戏,例如交易 hangouts 需要此功能,因此它作为选项提供。
我可以销售哪些第三方产品?
注意,开发者产品 只能在与它们相关的游戏中销售,无论 允许第三方销售 是否设置。 此属性影响 游戏通行证 和 1>服装1>。
AvatarUnificationMode
CSGAsyncDynamicCollision
ClientAnimatorThrottling
指定 Enum.ClientAnimatorThrottlingMode 用于本地客户端。
启用时,远程模拟 Model 实例上的动画将开始减速。计算速度会使用:
- Class.Camera 与 Camera 之间的关系
- 游戏内 FPS
- 有效动画数
CurrentCamera
使用本地玩家的 Camera 对象。
如何使用当前相机
当查找客户端的 Camera 对象时,使用此属性而不是查找名为 “Camera” 的子集 Workspace 中的一个子对象。
当您设置此属性时,Camera 对象在Workspace 中的所有其他对象都会被摧毁,包括以前的CurrentCamera 。如果您将此属性设置为零或为非工作区的2> Camera2> ,将会创建一个新
了解有关更多信息,请参阅脚本相机。
DistributedGameTime
游戏运行的时间(秒)。
虽然标题,此值在客户端和服务器上目前不是“分布”。 相反,在服务器上它代表服务器的运行时间。 在客户端上它代表客户端与服务器的连接时间。
开发人员不应该依赖上述行为,并且可能这个属性将在未来同步到客户端和服务器。
那些正在寻找程序启动时间的时间应该使用“时间”函数。 请参阅下面的比较,以及与 DistributedGameTime 的替代方案。
print(workspace.DistributedGameTime) --> Time the game started runningprint(os.time()) --> Time since epoch (1 January 1970, 00:00:00) UTCprint(tick()) --> Time since epoch (1 January 1970, 00:00:00) system timeprint(time()) --> Time the game started runningprint(elapsedTime()) --> Time since Roblox started running
FallenPartsDestroyHeight
此属性确定Roblox引擎自动移除掉落的BaseParts和它们的祖先Models从Workspace通过父级nil继续掉落到1>世界1>。这是要防止掉落到地图上的零件继续掉落到世界上。
如果因此行为而移除的零件是Model的最后一部分,该模型也会被移除。这适用于所有零件的父级。
这个属性被裹在 -50,000 和 50,000 之间,因为 BaseParts 在大距离从原始位置远离时因漂浮点不准确而不能正确模拟或渲染。
这个属性可以被脚本读取,但只能由插件、命令栏或 Studio 的属性窗口设置。
FluidForces
启用此属性可以使物理引擎在 BaseParts 的 EnableFluidForces 属性上计算气动力。默认值, Default,会禁用气动力。请注意,此属性无法通过脚本设置,而必须在 Studio 中切换
Gravity
由重力应用于下降 BaseParts 的加速度确定。 此值以每秒计时的格子计量,默认为 196.2 格/秒 2。 通过将此值改变可以模拟游戏中的低重力或高重力的效果。
代码示例
local MOON_GRAVITY_RATIO = 1.62 / 9.81
local DEFAULT_GRAVITY = 196.2
local MOON_GRAVITY = DEFAULT_GRAVITY * MOON_GRAVITY_RATIO
-- Create a touch pad
local pad = Instance.new("Part")
pad.Size = Vector3.new(5, 1, 5)
pad.Position = Vector3.new(0, 0.5, 0)
pad.Anchored = true
pad.BrickColor = BrickColor.new("Bright green")
pad.Parent = workspace
-- Listen for pad touch
local enabled = false
local debounce = false
local function onPadTouched(_hit)
if not debounce then
debounce = true
enabled = not enabled
workspace.Gravity = enabled and MOON_GRAVITY or DEFAULT_GRAVITY
pad.BrickColor = enabled and BrickColor.new("Bright red") or BrickColor.new("Bright green")
task.wait(1)
debounce = false
end
end
pad.Touched:Connect(onPadTouched)
IKControlConstraintSupport
启用对 IKControls 的限制的支持。默认值为 Default 。如果禁用,IKControls 会忽略物理限制。请参阅 Enabled 获取更多信息。
InsertPoint
MeshPartHeadsAndAccessories
设置角色头和配件应该下载为 MeshParts 。 Default 值与 Enabled 值相同。 如果此功能已启用,内置虚拟形象将使用 1> Class.MeshPart|MeshParts1> 为角色的头部和配件。
ModelStreamingBehavior
MoverConstraintRootBehavior
控制使用以下任何限制器使用的机器选择装置根部分的逻辑:
当这个属性设置为 Enum.MoverConstraintRootBehaviorMode.Enabled 时,这些限制将在选择组合根部分时忽略,如果限制不会在两个部分之间传递力(一些示例
当这个属性设置为 Enum.MoverConstraintRootBehaviorMode.Disabled 时,选择组合根部件时,这些限制可能会被错误地视为Enum.MoverConstraintRootBehaviorMode.Disabled,导致在添加这些限制到机制时的网络拥有和延迟不一致。
PathfindingUseImprovedSearch
PhysicsSteppingMethod
设置解决器将物理模拟前进时间。 此选项不是脚本,必须从 物理方法 属性的 工作区 中设置。 请参阅 适应性时间步骤 了解详细信息。
<tbody><tr><td><b>适应性</b></td><td>引擎尝试为 240 Hz、120 Hz 或 60 Hz 的个别组合优化最佳模拟率。 此设置优化于性能。</td></tr><tr><td><b>修复了</b></td><td>在工作区内的所有模拟装配件都会以 240 兆进行前进。 此选项最适合于最佳稳定性和模拟精度。</td></tr><tr><td><b>默认值为</b></td><td>当前默认值是 <b>修复</b> 。</td></tr></tbody>
选项 | 描述 |
---|
注意,当不同的模拟率的组合在 Constraints 或碰撞时变为连接时,组合机制将默认为最高模拟率以获得稳定性。
PlayerCharacterDestroyBehavior
PrimalPhysicsSolver
RejectCharacterDeletions
RenderingCacheOptimizations
ReplicateInstanceDestroySetting
Retargeting
SandboxedInstanceMode
SignalBehavior
此属性决定事件处理器在事件发生时是否立即重新启动,或者稍后在重新启动。重新启动点目前包括:
- 输入处理 (一次性处理每个输入, 请参阅 UserInputService)
- 遗产等待脚本的重新启用,例如 wait() , spawn() 和 delay()
了解更多信息,请参阅推迟事件。
StreamOutBehavior
StreamOutBehavior 控制从 ReplicationFocus 基于设备内存条件或基于流媒体範围的内容将被卸载的地方,或基于流媒体範围。
还请参阅:
- Workspace.StreamingEnabled 用于控制是否启用内容流媒体
StreamingEnabled
StreamingEnabled 属性确定是否为该场景方启用游戏内容流媒体。 此属性不是脚本可以设置,因此必须在 工作区 对象上设置。
还请参阅:
StreamingMinRadius
StreamingMinRadius 属性表示玩家角色或当前 ReplicationFocus 周围的射流的优先级。默认为 64 格。
增加默认最小半径时应该小心,因为这将需要更多内存和更多服务器带宽,这会在其他组件的代价。
还请参阅:
- Workspace.StreamingEnabled 用于控制是否启用内容流媒体
StreamingTargetRadius
StreamingTargetRadius 属性控制玩家角色或当前 ReplicationFocus 的内容的最大距离。默认为 1024 格。
注意,引擎可以在目标范围之外保留先前加载的内容,并且允许存储在内存中。
还请参阅:
- Workspace.StreamingEnabled 用于控制是否启用内容流媒体
TouchEventsUseCollisionGroups
TouchesUseCollisionGroups
这个属性决定是否设置在不同组中的 parts 会忽略碰撞和触摸事件。 默认值为 false 。
当此属性启用时,设置不会碰撞的零件在不同组中也会忽略 CanTouch 属性,与 BasePart.CanCollide 相似。有关 CanTouch 的更多信息,请参阅其属性页面。
方法
GetNumAwakeParts
返回由于受到物理学影响而被视为“有效”的 BaseParts 的数量。
此函数提供一个测量物理力影响或最近受到影响的 BaseParts 的数量。
print(workspace:GetNumAwakeParts()) -- prints the number of 'awake' parts
睡眠部分 vs 醒来部分
为了确保良好的性能,Roblox 在 BaseParts
返回
醒来的零件数。
GetPhysicsThrottling
返回一个整数,在 0 和 100 之间,代表物理模拟当前正在减速的实时百分比。
这个函数可以用来确定物理锁定是否发生,以及是否以何种程度的限制物理流量。
什么是物理限制器?
物理抑制发生在物理引擎检测到它无法跟随游戏实时时。当物理抑制正在发生时,它会更少更新,导致 BaseParts 出现移动更慢。
无论是否使用限制器,物理模拟将会进一步落后,与游戏的同步度不再与游戏的同步度。这可能会导致更低的帧率和其他不желатель的行为。
与 Humanoids 关联的对象已免受物理限制。
还请参阅Workspace:SetPhysicsThrottleEnabled()。
显示物理抑制
开发人员总是应该避免创建那些会过载物理引擎的地方,因为这会导致玩家的子-par体验。然而,那些想要模拟物理 throttling 的研究目的的开发人员,需要创建很多 Parts 很快。
local i = 0while true doi += 1if i % 5 == 0 thentask.wait()endlocal part = Instance.new("Part", workspace)end
返回
物理模拟当前正在减速的实时百分比。
GetRealPhysicsFPS
返回物理模拟器当前正在模拟的每秒钟的框架数。
使用 GetRealPhysicsFPS 来击败恶意者
使用此函数的常见用途是检测是否有人正在使用客户端的GetRealPhysicsFPS增加本地物理框架速率以获得更快的移动速度。这通常是通过比较客户端的GetRealPhysicsFPS返回的结果与最大值(通常为
返回
返回物理模拟器当前正在模拟的每秒钟的框架数。
代码示例
local Players = game:GetService("Players")
local player = Players.LocalPlayer
while task.wait(1) do
if workspace:GetRealPhysicsFPS() > 65 then
player:Kick()
end
end
GetServerTimeNow
GetServerTimeNow 返回服务器上的时间以微秒精度。时间会调整漂移和光滑(它是不会减少的)。服务器时钟进度不会超过 1.006× 速度和 0.994× 速度。
返回一个 Unix 时戳,可以用 os.date() 或用 DateTime.fromUnixTimestamp() 。
此函数有助于创建同步体验,因为它有三个必要的属性:它是一个实时世界时钟,它是单一的,它有相当精度。
此函数需要服务器,因此从未连接的客户端调用它将发生错误。
还请参阅:
- DistributedGameTime,游戏时间工作间示器
返回
服务器上的预计时间。
JoinToOutsiders
此函数在指定的 Parts 和任何与零件相触摸的部分依据零件的表面和指定的共同创建模式创建共同。
此函数在指定的零件和任何平面接触表面之间创建关联,这取决于零件的表面和指定的关联创建模式。
- 胶水、螺栓、插座、通用、焊接和光滑表面都会创建焊接实例。
- 球体不会与任何东西接触。球体的圆周面不会接触,但楔形的端面会接触。
第一个参数是一个 BaseParts 的阵列。共同体只能在阵列中的零件之间创建,不会在零件中的数组列中创建。共同体不会在零件中的数组列中创建。
第二个参数是一个 Enum.JointCreationMode ,它确定如何创建共享。通过传入任意枚列值, Enum.JointCreationMode.All 或 Enum.JointCreationMode.Surface,有相同的行为,这与传入常规 Join 一样
此功能是 Roblox Studio 移动工具使用户完成选择移动时使用的。 与 Plugin:GetJoinMode() 和 Workspace:UnjoinFromOutsiders() 一起使用,可以在开发自定义 Studio 构建工具时保留加入功能。 请参阅下面的示例。
-- 完成移动选择,创建共同
local function finishedMovingParts(parts)
local joinMode = Plugin:GetJoinMode()
workspace:JoinToOutsiders(parts, joinMode)
end
-- 开始移动选择,断开关联
local function startMovingParts(parts)
workspace:UnjoinFromOutsiders(parts)
end
参数
一个用于合并的BaseParts阵列。
使用 Enum.JointCreationMode 将被使用。通过 Enum.JointCreationMode.All 或 Enum.JointCreationMode.Surface 传输有相同的行为,这与使用“总是”相同。
返回
PGSIsEnabled
如果游戏启用了 PGS 物理解决器,返回 true。
作为 Workspace.PGSPhysicsSolverEnabled 无法通过脚本访问,但 PGSIsEnabled 功能可以让开发人员告诉游戏使用哪个物理解决器。
print(workspace:PGSIsEnabled()) -- true = PGS solver enabledprint(workspace:PGSIsEnabled()) -- false = Legacy solver enabled
返回
PGS 解决器已启用时是。
UnjoinFromOutsiders
在指定的 BaseParts 和其他 BaseParts 之间打破所有关联。
此函数需要一个 BaseParts 的阵列。 注意,不会在这些 BaseParts 之间形成关联,只会在这些 BaseParts 和其他 2>Class.BasePart|BaseParts2> 不在数组列中。
此功能是 Roblox Studio 移动工具使用户开始移动选择时使用的。 与 Plugin:GetJoinMode() 和 Workspace:JoinToOutsiders() 一起使用,可以在开发自定义 Studio 构建工具时保留加入功能。 请参阅下面的示例。
-- finished moving a selection, make joints
local function finishedMovingParts(parts)
local joinMode = Plugin:GetJoinMode()
workspace:JoinToOutsiders(parts, joinMode)
end
-- started moving a selection, break joints
local function startMovingParts(parts)
workspace:UnjoinFromOutsiders(parts)
end
参数
一个用于破坏共享的 BaseParts 阵列,用于那些需要被破坏的共享.
返回
ZoomToExtents
将 Workspace.CurrentCamera 位置和缩放到显示 BaseParts 当前在 Workspace 中的程度。
此功能在 Roblox Studio 中的“缩放到”按钮中使用。它与“缩放到”(F 快捷键)功能相似,但它显示的结果与“缩放到”(F 快捷)精选能不同。它显示“Workspace”的实例,而不是当前选择的对象。
此功能不能在脚本中使用,但将在命令栏或插件中使用。
返回
活动
PersistentLoaded
此事件触发每当玩家发送所有当前持久模型和零散原子模型时。 player 参数指示哪个玩家已经收到了所有适用的实例。
注意,体验加载在持久加载之前发生,并且 DataModel.Loaded 事件的发射不会表示所有持久模型都存在。