Workspace

顯示已棄用項目

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

無法建立
服務

<

了解此行為的重要性是重要的,因為它表示對象可以從 工作區 中移除,當它們不需要。 例如, Models 可以從 Workspace 中移除,當一個不需要的地圖正在播放。對於不需

作為 3D 對象的持有人,Workspace 包含與零件、零件位置和零件之間的關聯的一些有用功能。

存取工作區

Workspace 可以從多種方式進行存取,其中所有方式都是有效的。

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

注意

概要

屬性

屬性 繼承自 Model屬性 繼承自 PVInstance

方法

方法 繼承自 WorldRoot方法 繼承自 Model方法 繼承自 PVInstance

屬性

AirDensity

平行讀取

在 RMU/stud³ 單位 (see Roblox 單位 ) 中的地面水平 ( Y ) 的空氣密度,用於計算

AllowThirdPartySales

未複製
平行讀取

這個 Workspace 屬性決定資產創建者可以在遊戲中出售。

第三方銷售是什麼?

當此值為 false 時,因為它是預設值,只有玩家或群組創建的資產 (例如地方創作者) 和 Roblox 可以使用 MarketplaceService 售出。

大多數遊戲不需要出售第三方資產。 但是,一些遊戲,例如交易吊牌,需要此功能,因此它作為選擇項目存在。

我可以出售哪些第三方產品?

注意,開發者產品只能在與它們相關的遊戲中出售,無論是什麼 允許第三方銷售 設定。這個屬性會影響 遊戲通行證 和 1>服裝1>。

AvatarUnificationMode

無法建立指令碼
平行讀取

CSGAsyncDynamicCollision

CSGAsyncDynamicCollision
無法建立指令碼
平行讀取

ClientAnimatorThrottling

平行讀取

指定 Enum.ClientAnimatorThrottlingMode 以供本地客戶使用。

啟用時,遠程模擬 Model 實例的動畫將開始減速。減速器會使用:

  • Class.Camera 與 Camera 的關聯
  • 遊戲內 FPS
  • 動畫數量

CurrentCamera

未複製
平行讀取

使用本地玩家的 Camera 對象。

如何使用目前的相機

尋找客戶端的 Camera 對物件時,請使用此屬性而不是尋找名為 "Camera" 的子對象。

當您設定此屬性時,Camera 中的所有其他對象都會被摧毀,包括以前的Workspace。如果您將此屬性設置為空白或為非工作區的相機,則會創建新的CurrentCamera,並且指

了解更多信息,請參閱攝影機指令

DistributedGameTime

未複製
平行讀取

遊戲執行的秒數。

雖然此值目前不是「分配」在客戶端和伺服器之間,但它在伺服器上代表伺服器已經運行的時間。在客戶端上,它代表客戶端已經連接到伺服器的時間。

開發人員不應該依賴上述行為,並且可能會在未來這個屬性會同步在客戶端和伺服器上。

正在尋找程式開始執行時間的人應該使用 'time' 功能。 請參閱以下,以比較 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 由繼承到 1>nil1> 。這是要防止掉落到地圖上的零件再也不會掉落到地圖上。

如果因此行為而移除零件的話,那零件的後一個模型也會被移除。這適用於所有零件的模型祖先。

這個屬性在 -50,000 和 50,000 之間,因為 BaseParts 在大距離從原始位置遠離時會不正確地模擬或渲染。

此屬性可以被腳本閱取,但只能由插件、命令欄或 Studio 的屬性窗口設置。

FluidForces

無法建立指令碼
平行讀取

啟用此屬性會使物理引擎在 BasePartsEnableFluidForces 屬性上計算空氣動力學力。 啟用預設值 Default 會關閉空氣動力學力。請注意,此屬性無

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 值與 Enabled 相同。如果停用,IKControls 會忽略物理限制。請參閱 IKControl 以取得更多詳情。

InsertPoint

未複製
平行讀取

MeshPartHeadsAndAccessories

無法建立指令碼
平行讀取

設定角色頭和配件應該下載為 MeshPartsDefault 值與 Enabled 值相同。如果此功能啟用,內置虛擬人偶將使用 1> Class.MeshPart|MeshParts1> 為角色的頭和配件。

ModelStreamingBehavior

無法建立指令碼
平行讀取

MoverConstraintRootBehavior

無法建立指令碼
平行讀取

控制使用任何以下限制之一選擇裝置根的方法:

當這個屬性設為 Enum.MoverConstraintRootBehaviorMode.Enabled 時,這些限制將在選擇裝配根部分時忽略 (一些例子是 Class.AngularVelocity.Re

當此屬性設為 Enum.MoverConstraintRootBehaviorMode.Disabled 時,選擇裝配根部分時可能會因錯誤而被視為錯誤,導致網路所有權和延遲,當這些限制添加到機制時。

PathfindingUseImprovedSearch

無法建立指令碼
無法瀏覽
平行讀取

PhysicsSteppingMethod

無法建立指令碼
平行讀取

設置解決器將物理模擬前進時間。這項選項不適用於脚本,必須從 工作區 內的 物理學方法 屬性設置。請參閱 《Adaptive Timestepping》獲得更多詳情。


<tbody>
<tr>
<td><b>適應性</b></td>
<td>引擎嘗試為 240 Hz、120 Hz 或 60 Hz 的單獨組合體積分配最佳模擬速率。這項設定最佳化為履約。</td>
</tr>
<tr>
<td><b>修復</b></td>
<td>在工作區內的所有模擬裝配將會以 240 Hz 的速度前進。這項選項最適合最佳穩定性和模擬準確度。</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 屬性決定是否啟用遊戲內容串流到該空間。此屬性不是指令碼,因此必須在 Studio 的 工作區 對象上設定。

也看:

StreamingIntegrityMode

無法建立指令碼
平行讀取

如果啟用了「streaming」,玩家的角色可能會在未意圖的方式移動到世界的區域,未被傳送到他們的客戶端。播放整合功能提供一種方法來避免這些可能導致問題的情況。

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

睡眠與醒來零件

為了確保良好的履約,Roblox 設置


返回

醒來零件的數量。

GetPhysicsThrottling

平行寫入

返回一個整數,在 0 和 100 之間,代表物理模擬目前正在限速的百分比。

此功能可用來確認物理限制是否發生,並且在哪一程度上發生。

物理學是什麼?

物理學 throttling 發生時,物理引擎偵測到它無法跟上遊戲。當物理學被 throttling 時,它會更少更新,導致 BaseParts 出現移動更慢。

沒有減速,物理模擬會進一步落後,與遊戲無法同步。這可能會導致更低的幀率和其他不願意的行為。

Humanoids 相關的對象將從物理限制中免除。

也參閱 Workspace:SetPhysicsThrottleEnabled()

顯示物理學門限

開發人員應該總是避免創建會導致物理引擎超載的地方,因為這會導致玩家的子-par體驗。那些想要模擬物理限制器的研究目的,但需要快速創建大量 Parts 的人,只需要快速創建很多 Class.Part|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 的結果來最大值而做的。如果此限值被違


返回

返回物理學目前正在模擬的每秒幀率。

範例程式碼

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× 速度。

返回 os.date()DateTime.fromUnixTimestamp() 的 Unix 時間標準。

此功能有助於創建同步體驗,因為它有三個必要的屬性:它是一個真世界時光,它是單一的,並且精準度很高。

此功能需要從服務伺服器上呼叫,因此從未連接的客戶端呼叫它將發生錯誤。

也看:


返回

伺服器上估計的時代時間。

JoinToOutsiders

void

此功能在指定的 Parts 和任何可能接觸到的零件依據零件的表面和指定的關節創建模式之間創建關節。

此功能在指定的零件和任何平面觸摸表面之間建立關節,取決於零件的表面和指定的關節創建模式。

  • 膠水、螺柱、插座、Universal、Weld 和 Smooth 表面都會創建 Weld 實例。
  • 球體不會焊接到任何表面。 圓環的圓面將不會焊接,但平底面將。
  • 軸和電機表面仍會創建 RotateRotateP 共同實例,無論是否為零件形狀。

第一個參數是 BaseParts 的陣列。 Joints 只會在陣列中的零件之間創建,而不會在陣列中的零件之間創建。 Joints 不會在陣列中的零件之間創建。

第二個參數是 Enum.JointCreationMode ,它決定如何建立共享。通過指定任何枚列值, Enum.JointCreationMode.AllEnum.JointCreationMode.Surface ,都有相同的行為,這與傳統的 "總是要加入" 相同

此功能是 Roblox Studio Move 工具使用者完成選擇移動後使用的。與 Plugin:GetJoinMode()Workspace:UnjoinFromOutsiders() 合作,可以在開發自訂工作室建造工具時保持加入功能。在下面的示例中查看。


-- 完成移動選擇,並建立聯結
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 來使用都有相同的行為,這與使用 1>Join Always1> 相同。


返回

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 Move 工具使用者開始移動選擇時使用的時候,在結合了 Plugin:GetJoinMode()Workspace:JoinToOutsiders() 後,可以用於開發自訂工作室建造工具時保留加入功能。 在下面的示例中查看。


-- 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 捷徑方式)功能相同,但它會顯示來自 Workspace 的範圍而不是目前選擇的對物件。

此功能無法在指令條中使用,但將在命令條或插件中使用。


返回

void

活動

PersistentLoaded

這個事件會每次發射玩家所有的持續模型和零散原子模型。player 參數指示哪個玩家已收到所有適用的實例。

注意體驗載入在持續載入之前發生,且 DataModel.Loaded 事件發射不表示所有持續模型都存在。

參數

player: Player