Workspace

显示已弃用

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

无法创建
服务

C渲染ass

了解此行为的重要性是重要的,因为它意味着对象可以在 工作区 中移除,当不需要时。 例如, Models 可以在 Class.Workspace 中移除,当另一个地图正在播放时。 对于不需要 3D

作为 3D 对象的持有者,Workspace 包括与零件、其位置和间隙相关的许多有用功能。

访问工工作间

Workspace 可以通过多种方式访问,其中所有都是有效的。

  • workspace
  • game.Workspace
  • game:GetService("Workspace")

注释

概要

属性

继承自Model属性继承自PVInstance属性

方法

继承自WorldRoot方法继承自Model方法继承自PVInstance方法

属性

AirDensity

读取并联

在 RMU/stud³ 单元 (见 Roblox 单位 ) 中,用 0) 的空气密度计算飞行器的气动力学力如果 Class.

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 running
print(os.time()) --> Time since epoch (1 January 1970, 00:00:00) UTC
print(tick()) --> Time since epoch (1 January 1970, 00:00:00) system time
print(time()) --> Time the game started running
print(elapsedTime()) --> Time since Roblox started running

FallenPartsDestroyHeight

读取并联
插件安全性

此属性确定Roblox引擎自动移除掉落的BaseParts和它们的祖先ModelsWorkspace通过父级nil继续掉落到1>世界1>。这是要防止掉落到地图上的零件继续掉落到世界上。

如果因此行为而移除的零件是Model的最后一部分,该模型也会被移除。这适用于所有零件的父级。

这个属性被裹在 -50,000 和 50,000 之间,因为 BaseParts 在大距离从原始位置远离时因漂浮点不准确而不能正确模拟或渲染。

这个属性可以被脚本读取,但只能由插件、命令栏或 Studio 的属性窗口设置。

FluidForces

不可写入脚本
读取并联

启用此属性可以使物理引擎在 BasePartsEnableFluidForces 属性上计算气动力。默认值, Default,会禁用气动力。请注意,此属性无法通过脚本设置,而必须在 Studio 中切换

GlobalWind

读取并联

这个属性指定风通过体验吹动的方向和力量,影响地形草地、动态云和粒子。请参阅全球风文章获取详细信息。

Gravity

读取并联

由重力应用于下降 BaseParts 的加速度确定。 此值以每秒计时的格子计量,默认为 196.2 格/秒 2。 通过将此值改变可以模拟游戏中的低重力或高重力的效果。

代码示例

Low Gravity Button

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

不可写入脚本
读取并联

设置角色头和配件应该下载为 MeshPartsDefault 值与 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

不可写入脚本
读取并联
读取并联

SandboxedInstanceMode

不可写入脚本
读取并联

SignalBehavior

不可写入脚本
读取并联

此属性决定事件处理器在事件发生时是否立即重新启动,或者稍后在重新启动。重新启动点目前包括:

了解更多信息,请参阅推迟事件

StreamOutBehavior

不可写入脚本
读取并联

StreamOutBehavior 控制从 ReplicationFocus 基于设备内存条件或基于流媒体範围的内容将被卸载的地方,或基于流媒体範围。

还请参阅:

StreamingEnabled

读取并联
插件安全性

StreamingEnabled 属性确定是否为该场景方启用游戏内容流媒体。 此属性不是脚本可以设置,因此必须在 工作区 对象上设置。

还请参阅:

StreamingIntegrityMode

不可写入脚本
读取并联

如果实例 播放 已启用,玩家的角色可能会在意外的方式移动到世界的某个区域,这些区域未曾流向客户端。播放整洁度功能提供了一种方法来避免这些可能问题的情况。

StreamingMinRadius

不可写入脚本
读取并联

StreamingMinRadius 属性表示玩家角色或当前 ReplicationFocus 周围的射流的优先级。默认为 64 格。

增加默认最小半径时应该小心,因为这将需要更多内存和更多服务器带宽,这会在其他组件的代价。

还请参阅:

StreamingTargetRadius

不可写入脚本
读取并联

StreamingTargetRadius 属性控制玩家角色或当前 ReplicationFocus 的内容的最大距离。默认为 1024 格。

注意,引擎可以在目标范围之外保留先前加载的内容,并且允许存储在内存中。

还请参阅:

Terrain

只读
未复制
读取并联

此属性是对 Terrain 对象的引用,其父对子是 Workspace

Terrain object within the Workspace hierarchy

请参阅环境地形获取更多信息。

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 = 0
while true do
i += 1
if i % 5 == 0 then
task.wait()
end
local part = Instance.new("Part", workspace)
end

返回

物理模拟当前正在减速的实时百分比。

GetRealPhysicsFPS

写入并联

返回物理模拟器当前正在模拟的每秒钟的框架数。

使用 GetRealPhysicsFPS 来击败恶意者

使用此函数的常见用途是检测是否有人正在使用客户端的GetRealPhysicsFPS增加本地物理框架速率以获得更快的移动速度。这通常是通过比较客户端的GetRealPhysicsFPS返回的结果与最大值(通常为


返回

返回物理模拟器当前正在模拟的每秒钟的框架数。

代码示例

Workspace: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()

此函数有助于创建同步体验,因为它有三个必要的属性:它是一个实时世界时钟,它是单一的,它有相当精度。

此函数需要服务器,因此从未连接的客户端调用它将发生错误。

还请参阅:


返回

服务器上的预计时间。

JoinToOutsiders

void

此函数在指定的 Parts 和任何与零件相触摸的部分依据零件的表面和指定的共同创建模式创建共同。

此函数在指定的零件和任何平面接触表面之间创建关联,这取决于零件的表面和指定的关联创建模式。

  • 胶水、螺栓、插座、通用、焊接和光滑表面都会创建焊接实例。
  • 球体不会与任何东西接触。球体的圆周面不会接触,但楔形的端面会接触。
  • 枢轴和电机表面仍然会创建 RotateRotateP 共同实例,无论零件形状如何。

第一个参数是一个 BaseParts 的阵列。共同体只能在阵列中的零件之间创建,不会在零件中的数组列中创建。共同体不会在零件中的数组列中创建。

第二个参数是一个 Enum.JointCreationMode ,它确定如何创建共享。通过传入任意枚列值, Enum.JointCreationMode.AllEnum.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

参数

objects: Instances

一个用于合并的BaseParts阵列。

使用 Enum.JointCreationMode 将被使用。通过 Enum.JointCreationMode.AllEnum.JointCreationMode.Surface 传输有相同的行为,这与使用“总是”相同。


返回

void

PGSIsEnabled

如果游戏启用了 PGS 物理解决器,返回 true。

作为 Workspace.PGSPhysicsSolverEnabled 无法通过脚本访问,但 PGSIsEnabled 功能可以让开发人员告诉游戏使用哪个物理解决器。


print(workspace:PGSIsEnabled()) -- true = PGS solver enabled
print(workspace:PGSIsEnabled()) -- false = Legacy solver enabled

返回

PGS 解决器已启用时是。

UnjoinFromOutsiders

void

在指定的 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

参数

objects: Instances

一个用于破坏共享的 BaseParts 阵列,用于那些需要被破坏的共享.


返回

void

ZoomToExtents

void
插件安全性

Workspace.CurrentCamera 位置和缩放到显示 BaseParts 当前在 Workspace 中的程度。

此功能在 Roblox Studio 中的“缩放到”按钮中使用。它与“缩放到”(F 快捷键)功能相似,但它显示的结果与“缩放到”(F 快捷)精选能不同。它显示“Workspace”的实例,而不是当前选择的对象。

此功能不能在脚本中使用,但将在命令栏或插件中使用。


返回

void

活动

PersistentLoaded

此事件触发每当玩家发送所有当前持久模型和零散原子模型时。 player 参数指示哪个玩家已经收到了所有适用的实例。

注意,体验加载在持久加载之前发生,并且 DataModel.Loaded 事件的发射不会表示所有持久模型都存在。

参数

player: Player