■Webview用アセット
https://www.assetstore.unity3d.com/jp/#!/content/32461
■できる事・体感
・ヘッダー・フッターの間にWebView表示化可能
・背景画像よりも手前にWebView表示化可能
・メモリそんなに食わない感じ
・ロードがちょっと長いようにも感じる(ページ次第??)
1.UniWebViewコンポーネントを追加もしくは取得する。
■ゲームオブジェクトから取得
var webView = ゲームオブジェクト.GetComponent<UniWebView>();
■無ければUniWebViewコンポーネントを追加
var webView = ゲームオブジェクト.AddComponent<UniWebView>();
2.指定URLのページをWebView上にロード完了時のイベントと紐づける
webView.OnLoadComplete += (view, success, errorMessage) => {
if (success) {
フラグとかメソッドを呼んで完了を知らせる;
} else {
エラー処理
}
};
3.WebViewクローズイベントと紐づける
webView.OnWebViewShouldClose += (view) =>
{
webView.Hide(fade, (UniWebViewTransitionEdge)transitionEdge, 0.4f, ()=>{
クローズしたときの処理を書く
});
webView.HideToolBar(true);
return false;
};
4.イベントの紐づけが完了したのでロードする。
_webView.Load(URL文字列);
5.ロードが完了したのでWebViewを表示する。
_webView.Show(fade, (UniWebViewTransitionEdge)transitionEdge, 0.4f, ()=>
{
表示完了時の処理
});
_webView.ShowToolBar(true);
※キーイベント受け取り(Androidのbackボタン向け)
■スクリプト内のコメントによると、下記backButtonEnableをTrueにすると
Unityの入力イベントとそれに関連するイベント系は受け取れないらしい
When set true, Unity will not receive the Input.KeyDown or other similar event in Android.
webView.backButtonEnable = true;
・・・だが、イベントを紐づける時にKeycode受け取りイベントと紐づけておくと
backButtonEnableがTrueでも受け取れた。
webView.OnReceivedKeyCode += (view, keycode) =>
{
if(keycode == keyCodeBack)
{
_webView.Hide(fade, (UniWebViewTransitionEdge)transitionEdge, 0.4f, () =>
{
});
_webView.HideToolBar(true);
}
};
サイズ指定時の注意事項
ネイティブ側は解像度ではなくポイント(iOSのboundsやframe等を参照)で設定されるので、
RetinaディスプレイであればRetinaの倍率に合わせて
下記を参照に2分の1・3分の1とした値を渡す必要がある
http://qiita.com/tomohisaota/items/f8857d01f328e34fb551
_webView.insets = new UniWebViewEdgeInsets(_insets.top, _insets.left, _insets.bottom, _insets.right);