WebGL中的光標(biāo)鎖定和全屏模式
Unity WebGL支持光標(biāo)鎖定(使用Cursor.lockState)和全屏模式(使用Screen.fullScreen),使用相應(yīng)的HTML5 API(Element.requestPointerLock和Element.requestFullscreen)實(shí)現(xiàn)。這些在Firefox和Chrome中受支持。 Safari目前不能使用全屏和光標(biāo)鎖定。
Enabling cursor locking and full-screen mode in WebGL 在WebGL中啟用光標(biāo)鎖定和全屏模式
由于安全考慮,瀏覽器將只允許鎖定光標(biāo)或進(jìn)入全屏模式,直接響應(yīng)用戶(hù)發(fā)起的事件(如鼠標(biāo)點(diǎn)擊或按鍵)。不幸的是,Unity沒(méi)有單獨(dú)的事件和渲染循環(huán),因此它將事件處理推遲到瀏覽器不再承認(rèn)Unity腳本發(fā)出的全屏或光標(biāo)鎖定請(qǐng)求,直接響應(yīng)觸發(fā)它的事件。因此,Unity會(huì)觸發(fā)下一個(gè)用戶(hù)啟動(dòng)事件的請(qǐng)求,而不是觸發(fā)光標(biāo)鎖定或全屏請(qǐng)求的事件。
為了使這項(xiàng)工作取得可接受的結(jié)果,您應(yīng)該在鼠標(biāo)/按鍵事件上觸發(fā)光標(biāo)鎖定或全屏請(qǐng)求,而不是鼠標(biāo)/按鍵事件。這可以確保當(dāng)請(qǐng)求延遲到下一個(gè)用戶(hù)啟動(dòng)的事件時(shí),會(huì)在用戶(hù)釋放鼠標(biāo)或鍵時(shí)觸發(fā)。
如果您使用Unity的UI.Button組件,您可以通過(guò)創(chuàng)建Button的子類(lèi)來(lái)實(shí)現(xiàn)所需的行為,該子類(lèi)重寫(xiě)OnPointerDown方法。
請(qǐng)注意,在進(jìn)入全屏模式或鎖定游標(biāo)之前,瀏覽器可能會(huì)顯示通知消息或要求用戶(hù)許可。
Unity WebGL 中文文檔 Unity 2018.1.b
1. WebGL
2. webGL Browser Compatibility
3. Building and running a WebGL project
4. WebGL: Deploying compressed builds
5. Debugging and trouble shooting WebGL builds
6. WebGL Graphics
7. WebGL Networking
8. Using Audio In WebGL
9. WebGL performance considerations
10. WebGL: Interacting with browser scripting
11. Using WebGL Templates
12. Cursor locking and full-screen mode in WebGL
13. Input in WebGL