<
了解此行為的重要性是重要的,因為它表示對象可以從 工作區 中移除,當它們不需要。 例如, Models 可以從 Workspace 中移除,當一個不需要的地圖正在播放。對於不需
作為 3D 對象的持有人,Workspace 包含與零件、零件位置和零件之間的關聯的一些有用功能。
存取工作區
Workspace 可以從多種方式進行存取,其中所有方式都是有效的。
- workspace
- game.Workspace
- game:GetService("Workspace")
注意
- Class.Model:MakeJoints() 和 Model:BreakJoints() 方法從 Model 類別継承,會被 1>Class.Workspace:MakeJoints()1> 和 4>Class.Workspace:BreakJoints()4> 僅在插件中使用。
- 無法刪除 Workspace 。
- 客戶端的當前 Camera 對象可以使用 Workspace.CurrentCamera 屬性來存取。
- Class.Terrain 對象可以使用 Workspace.Terrain 屬性來存取。
概要
屬性
地等級上的空氣密度,用於氣動力學力模型。
決定其他用戶創建的資產是否可以在遊戲中出售。
指定本地客戶端的動畫限制模式。
使用本地玩家的 Camera 對象。
遊戲執行的秒數。
決定是否在 BaseParts 的 EnableFluidForces 屬性上計算空氣動力學力。
指定全球風向量為動畫地形草地、動態雲和粒子。
由重力對BaseParts造成的加速度確定。
啟用對 IKControls 的限制的支援。如果停用,IKControls 會無視物理限制。
設定角色頭和配件是否為網格模型。
控制使用任何移動器限制時選擇裝配根部分的逻辑。
設定解決器將物理模擬推進時間的前進。
設定引擎重新啟動事件處理器時間。
決定引擎何時從玩家那裡流動內容。
是否啟用內容傳輸至地空間。
決定是否啟用 StreamingIntegrityMode。
內容將被直接傳送至優先權高的玩家。
內容將播放至玩家的最大距離。
決定是否設置 parts 在不同群組中不會碰撞。
設定模型對於啟用時間延遲的體驗的細節程度。
控制 Models 控制器時的模型傳輸行為,當啟用了實例傳輸。
Class.Model 或 nil ,如果未設定。
僅限編輯器的屬性,可以在模型的中心點上調整尺寸。設定此屬性會使尺寸在 Model/ScaleTo 上呼叫。
確定 Model 的中心位置,其中 不 有設置 Model.PrimaryPart 。
方法
返回因為受到物理學的影響而被視為物理活躍的 BaseParts 的數量。
返回一個整數,在 0 和 100 之間,代表物理模擬目前正在限速的百分比。
返回物理學目前正在模擬的每秒幀率。
返回伺服器時間範圍在秒。
在指定的 Parts 和任何可能觸摸的零件依據零件的表面和指定的關節創建模式創建關節。
如果遊戲有啟用 PGS 物理解決器,則返回 true。
位置和縮放 Workspace.CurrentCamera 以顯示 BaseParts 目前在 Workspace 中的程度。
如果 BasePart 的任何部分碰觸到其他部分,返回 true。
在指定方向中投擲方塊,並且在 RaycastResult 或 BasePart 中擊中方塊。
返回一個由 定義箱 包圍的列表,其中 盒子 與 方塊子 重疊。
返回一個由 定義 區域重疊的零件群。
返回一個由指定零件和共用零件的組合。
- IKMoveTo(part : BasePart,target : CFrame,translateStiffness : number,rotateStiffness : number,collisionsMode : Enum.IKCollisionsMode):void
將指定的零件移動到指定的位置,而不是直接移動它,以確保任何關聯、限制或碰撞零件參與的剩餘物理上滿意。
使用原始、方向和可選的 RaycastParams 來發射一個光束,然後將返回一個 RaycastResult 如果資格的對象或地形擋住光束。
- Spherecast(position : Vector3,radius : number,direction : Vector3,params : RaycastParams):RaycastResult?
在指定方向中投擲球體形狀,並且在 RaycastResult 或 BasePart 中擊中 Terrain 如果形狀擊中 2>Class.BasePart2> 或 5>Class.Terrain5> 元素,則會返回 8>Datatype.RaycastResult8>。
基於指定的時間增量和可選的 BaseParts 集合來模擬世界中的零件。
將此模型設定為持續為指定玩家。 Model.ModelStreamingMode 必須設置為 PersistentPerPlayer 才能因為添加而變更行為。
返回包含模型所有部分的音量的說明。
返回 BaseParts 的尺寸,Model 與 Model.PrimaryPart 如果設定。
返回此模型對象的所有 Player 對象。 行為因 Script 或 LocalScript 而來自。
返回模型的標準尺寸,其預設為 1 對於新建的模型,並且會在通過 Model/ScaleTo 變更時更改。
將 PrimaryPart 移動到指定位置。如果沒有指定主要零件,則會使用模型的根部分。
此模型不再對指定玩家持續,必須設置為 Model.ModelStreamingMode 才能變更行為,作為結果的一部分。
設定模型的比例因素,以調整所有子孫實例的大小和位置,使其在比例因素變更 1 時,對眾生實例的大小和位置進行相對的比例調整。
將 Model 由所提供的 Vector3 偏移值,保留模型的方向。如果另一個 BasePart 或 1> Class.Terrain1> 已在新位置,則 4> Class.Model4> 將覆蓋所述對物件。
取得 PVInstance 的中心點。
以下是 PVInstance 和所有其子 PVInstances 的描述,以便 pivot 現在位於指定的 CFrame 。
活動
發射持續模型已傳送至指定玩家。
屬性
AllowThirdPartySales
這個 Workspace 屬性決定資產創建者可以在遊戲中出售。
第三方銷售是什麼?
當此值為 false 時,因為它是預設值,只有玩家或群組創建的資產 (例如地方創作者) 和 Roblox 可以使用 MarketplaceService 售出。
大多數遊戲不需要出售第三方資產。 但是,一些遊戲,例如交易吊牌,需要此功能,因此它作為選擇項目存在。
我可以出售哪些第三方產品?
注意,開發者產品只能在與它們相關的遊戲中出售,無論是什麼 允許第三方銷售 設定。這個屬性會影響 遊戲通行證 和 1>服裝1>。
AvatarUnificationMode
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 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 由繼承到 1>nil1> 。這是要防止掉落到地圖上的零件再也不會掉落到地圖上。
如果因此行為而移除零件的話,那零件的後一個模型也會被移除。這適用於所有零件的模型祖先。
這個屬性在 -50,000 和 50,000 之間,因為 BaseParts 在大距離從原始位置遠離時會不正確地模擬或渲染。
此屬性可以被腳本閱取,但只能由插件、命令欄或 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 值與 Enabled 相同。如果停用,IKControls 會忽略物理限制。請參閱 IKControl 以取得更多詳情。
InsertPoint
MeshPartHeadsAndAccessories
設定角色頭和配件應該下載為 MeshParts 。 Default 值與 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
Retargeting
SandboxedInstanceMode
SignalBehavior
這個屬性決定事件處理器在事件發生時是否會立即重新啟動,或者延遲一段時間後重新啟動。重新啟動點目前包括:
- 輸入處理 (每次輸入將重新處理一次, 請參閱 UserInputService)
- 如 wait() 、 spawn() 和 delay() 等暫停指令
了解更多資訊,請參閱 延遲事件。
StreamOutBehavior
StreamOutBehavior 控制內容從 ReplicationFocus 上傳到的裝置記憶體狀況,或基於流媒體範圍。
也看:
- Workspace.StreamingEnabled 控制內容傳輸是否啟用
StreamingEnabled
StreamingEnabled 屬性決定是否啟用遊戲內容串流到該空間。此屬性不是指令碼,因此必須在 Studio 的 工作區 對象上設定。
也看:
StreamingIntegrityMode
如果啟用了「streaming」,玩家的角色可能會在未意圖的方式移動到世界的區域,未被傳送到他們的客戶端。播放整合功能提供一種方法來避免這些可能導致問題的情況。
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
睡眠與醒來零件
為了確保良好的履約,Roblox 設置
返回
醒來零件的數量。
GetPhysicsThrottling
返回一個整數,在 0 和 100 之間,代表物理模擬目前正在限速的百分比。
此功能可用來確認物理限制是否發生,並且在哪一程度上發生。
物理學是什麼?
物理學 throttling 發生時,物理引擎偵測到它無法跟上遊戲。當物理學被 throttling 時,它會更少更新,導致 BaseParts 出現移動更慢。
沒有減速,物理模擬會進一步落後,與遊戲無法同步。這可能會導致更低的幀率和其他不願意的行為。
與 Humanoids 相關的對象將從物理限制中免除。
也參閱 Workspace:SetPhysicsThrottleEnabled()。
顯示物理學門限
開發人員應該總是避免創建會導致物理引擎超載的地方,因為這會導致玩家的子-par體驗。那些想要模擬物理限制器的研究目的,但需要快速創建大量 Parts 的人,只需要快速創建很多 Class.Part|Parts 。
local i = 0while true doi += 1if i % 5 == 0 thentask.wait()endlocal part = Instance.new("Part", workspace)end
返回
物理模擬目前正在進行實時限制。
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× 速度。
返回 os.date() 或 DateTime.fromUnixTimestamp() 的 Unix 時間標準。
此功能有助於創建同步體驗,因為它有三個必要的屬性:它是一個真世界時光,它是單一的,並且精準度很高。
此功能需要從服務伺服器上呼叫,因此從未連接的客戶端呼叫它將發生錯誤。
也看:
- DistributedGameTime , 遊戲時間計
返回
伺服器上估計的時代時間。
JoinToOutsiders
此功能在指定的 Parts 和任何可能接觸到的零件依據零件的表面和指定的關節創建模式之間創建關節。
此功能在指定的零件和任何平面觸摸表面之間建立關節,取決於零件的表面和指定的關節創建模式。
- 膠水、螺柱、插座、Universal、Weld 和 Smooth 表面都會創建 Weld 實例。
- 球體不會焊接到任何表面。 圓環的圓面將不會焊接,但平底面將。
第一個參數是 BaseParts 的陣列。 Joints 只會在陣列中的零件之間創建,而不會在陣列中的零件之間創建。 Joints 不會在陣列中的零件之間創建。
第二個參數是 Enum.JointCreationMode ,它決定如何建立共享。通過指定任何枚列值, Enum.JointCreationMode.All 或 Enum.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
參數
一個用於聯合的 BaseParts 陣列。
使用 Enum.JointCreationMode 來使用。通過 Enum.JointCreationMode.All 或 Enum.JointCreationMode.Surface 來使用都有相同的行為,這與使用 1>Join Always1> 相同。
返回
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 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
參數
一個用於讓關節被斷腳的 BaseParts 阵列。
返回
ZoomToExtents
位置和縮放 Workspace.CurrentCamera 以顯示 BaseParts 目前在 Workspace 中的程度。
此功能在 Roblox Studio 中的「瞄準」按鈕中使用。它與「瞄準」(F 捷徑方式)功能相同,但它會顯示來自 Workspace 的範圍而不是目前選擇的對物件。
此功能無法在指令條中使用,但將在命令條或插件中使用。
返回
活動
PersistentLoaded
這個事件會每次發射玩家所有的持續模型和零散原子模型。player 參數指示哪個玩家已收到所有適用的實例。
注意體驗載入在持續載入之前發生,且 DataModel.Loaded 事件發射不表示所有持續模型都存在。