網格可視化腳本節點參考
間隔時間
On Interval 事件節點會定期觸發腳本流程,以同步處理於相同會議室中的所有用戶端。
- 間隔:事件之間的間隔(以秒為單位)。
- 延遲:第一個事件之前的延遲(以秒為單位)。 您可以使用此選項來交錯事件與不同 [間隔] 節點所觸發的相同 Interval。
狀態變更時
當任何輸入變更其值時,On State Changed 事件節點就會觸發。 這是一個強大的機制,可讓您的腳本回應用戶互動或其他視覺腳本所造成的狀態變更,無論是在本機還是在相同會議室中的其他用戶端上。
- 值:指定您想要觀察的輸入埠數目。 最多可以同時觀察 10 個輸入埠。 在 [狀態變更 ] 觸發程式時,其中任何一個變更其值。
- 在 0、 In 1 和此序列中更多:觀察到狀態變更的輸入。 您可以將任何資料節點附加至這些輸入: 取得變數 或任何元件屬性(實例或靜態)。
- Out 0、Out 1 等等在此序列中:對應至 In 0 的輸出,依序傳回觀察到的值。
觀察腳本變數或元件屬性時, On State Changed 通常會在內部註冊適當的回呼來運作,避免需要持續重新評估其輸入。 當無法使用適當的回呼時,如下列範例所示,On State Changed 節點會變成紅色 ,Graph 偵測器 面板會警告無法有效率地觀察輸入,因此會停用:
在此情況下,您可以選取 [圖形偵測器] 面板中的 [允許輪詢],強制 [狀態變更] 以持續重新評估其輸入來偵測變更。 節點會在其頂端保留黃色列,以提醒您,它會以增加運行時間成本觀察輸入。
顯示對話框
[ 顯示對話框 ] 節點會顯示一個對話方塊,其中包含自定義訊息,以及一或多個按鈕,可讓使用者關閉對話方塊。
- 文字:對話框中顯示的訊息。 如有必要,訊息正文會以文字包裝。
- 按鈕:要向用戶呈現的按鈕選取專案。 可以顯示下列按鈕:[確定]、[取消]、[是]、[否]、[確認]、[下一步]、[重試]、[繼續]、[離開]。
- 結果:選取按鈕以在關閉對話框時儲存用戶回應的變數名稱。 (如果保留空白,則會捨棄回應。
- 目標:具有 變數 元件的 GameObject 來儲存用戶的回應。
如果已定義 Result 變數,則會在輸入 [顯示對話框] 節點時立即重設為空字串,並在使用者選取關閉對話框的按鈕時,以異步方式設定為用戶的回應。 預存值是上述清單中的按鈕未定位標籤。 使用 On State Changed 事件節點來回應使用者的回應,如下列範例所示:
Result 變數可以是本機或共用。 如果共用,則會將使用者的回應傳送至相同會議室中的所有用戶端,而 [開啟狀態變更 ] 事件節點會在所有用戶端上觸發以回應用戶的回應。
物理事件節點
物理事件節點 On Trigger Enter、On Trigger Exit、On Collision Enter 和 On Collision Exit 會可靠地建立網路。 根據預設,這些事件會在會議室中的所有用戶端上可靠地觸發;不過,如果這些事件節點觀察到的物理碰撞器位於本機物理範圍元件的範圍內,則事件會可靠地在一個用戶端上觸發。 這讓觸發的腳本流程能夠可靠地讀取和寫入共享狀態(例如,更新共用分數變數)。
安全性
Mesh 可保護使用者免於遭受威脅案例,例如:
- 遭入侵的場景內容,例如惡意嘗試存取敏感性本機數據。
- 遭入侵的用戶端或傳輸通道,例如,惡意嘗試讀取或寫入其他用戶端上無法存取的遠端數據。
為了達成此目的,Mesh 會在沙箱中執行視覺腳本(例如網頁瀏覽器中的 JavaScript)。
在場景啟動時,Mesh 會使用策劃的允許清單來驗證視覺腳本,以限制特定 Unity 元件的存取,以及其屬性的安全子集。
在場景運行時間,Mesh 會限制對場景特定部分的存取:
- 本機:藉由防止存取 Mesh 內部和其他敏感數據。
- 遠程:藉由檢查場景的作者是否打算修改場景的這個部分。 這是藉由靜態分析接收者端的視覺腳本來撰寫其潛在的場景寫入來完成。
範例:
- 惡意的本機視覺腳本想要提供所有虛擬人偶擷取頭。 為此,它會嘗試掃描代表虛擬人頭的 GameObjects 整個場景。 Mesh 會自動篩選掃描結果,以排除虛擬人偶系統。
- 惡意的遠端用戶端想要翻轉所有 GameObjects 倒置來清除場景。 為了達成此目的,它會傳送屬性更新,以設定場景中每個 GameObject 的垂直縮放比例。 不過,由於接收用戶端上沒有任何視覺腳本設計來執行這類動作,因此本機用戶端會忽略遠端輸入。