1. 程式人生 > >Unity發布的WebGL頁面應用實現全屏/非全屏切換

Unity發布的WebGL頁面應用實現全屏/非全屏切換

功能 () 圖片 water term unity bool 控制 inter

很簡單,在場景中添加一個UGUI按鈕,實現點擊就切換全屏/非全屏狀態

其實發布出webgl之後,頁面上場景窗口右下會有一個按鈕,就是切換全屏的,但是想用代碼在程序裏實現

首先看頁面上那個按鈕的js腳本是怎麽寫的

<div class="fullscreen" onclick="gameInstance.SetFullscreen(1)"></div>

註意裏面的代碼就一行:

gameInstance.SetFullscreen(1);

也就是在Unity中調用外面的js方法
所以先在js中寫個切換全屏的方法

function FullScrSwitch(para){
    gameInstance.SetFullscreen(para);
}

para是參數,為1時全屏,為0時退出全屏

在Unity的按鈕點擊事件方法中寫

private bool isFullSrc=false;
private void onClick()
{
    int para=isFullSrc?"1":"0";
    Application.ExternalCall("FullScrSwitch",para);
}

按理說這樣一調用,就像調用其它的js方法一樣,應該可用
但是,點擊按鈕沒有切換全屏

頁面上按F12打開控制臺,發現報錯,就是不能通過這種調用實現全屏,查了一下,這個還不是Unity的問題,是瀏覽器出於安全什麽的考慮,這種從別處調用頁面上js代碼實現全屏的功能被攔截了,而如果是頁面上定義的元素,直接點擊就沒問題。

於是就想到了傳統的切換全屏方法

Screen.fullScreen = !Screen.FullScreen;

再發布出來,點擊按鈕,沒反應
再點擊場景中任何位置,切換成全屏了……

切換回來倒是點擊一下就行

於是又試
最後在按鈕上加EventTrigger,添加PointerDown的事件,在這個事件的方法中寫上面的切換代碼
技術分享圖片
同樣的代碼:

Screen.fullScreen = !Screen.FullScreen;

這次只點擊一次就行了
記錄備忘

Unity發布的WebGL頁面應用實現全屏/非全屏切換