トマシープが学ぶ

Unity/VR/AR/デザイン好きのミーハー 記事内容は自分用のメモです

【OVROverlay】Unityが重いときに出るロード画面を作る

 

Unityで重い処理をして止まっているときにのみ出てくるロード画面もOVROverlayで使えるそうなのでやってみます。

参考

www.heistak.com

以前サンプルを見ました。

bibinbaleo.hatenablog.com

OVROverlayサンプルから抜き出す

CompositorLayerLoadingScreenを抜き出してプレハブ化する

f:id:bibinbaleo:20190815111906p:plain

Loadの文字と

f:id:bibinbaleo:20190815110904p:plain

自分の周りを覆うCubemap

f:id:bibinbaleo:20190815110907p:plain

コードもOVROverlaySampleから抜き出す。

f:id:bibinbaleo:20190815111908p:plain

コード

こんな感じ

gist.github.com

 

f:id:bibinbaleo:20190815110910p:plain

StartCoroutine(WaitforOVROverlay());で処理を呼ぶ

 

それぞれのOverlay素材をアクティブにする

cubemapOverlay.enabled = true;
loadingTextQuadOverlay.enabled = true;

 

自分の視点のカメラを取得して、そこから設定した距離(distanceFromCamToLoadText)にロードの文字を出してくれる。

文字を出す場所がワールドで固定でいいならカメラと距離らへんの記述はいらない。

 

System.Threading.Thread.Sleep(2500);というのがテスト用の重い処理

 

今回は仮にボタンを押したら重い処理を走らせてロード画面を表示するというようにしてみる。

public void LoadButton()
{
StartCoroutine(WaitforOVROverlay());
}

 

実行

実行したら

System.Threading.Thread.Sleep(2500);が動いている間だけロード画面が出た!!!

ちゃんと重くなっても表示されてる!

OvrOverlayのキューブマップやテキストはUnityのゲーム画面には見えない。

OculusHMD内でのみ見える。だからスクショ取れない><

最後に

多分Oculusでしか見れない

developer.oculus.com