###前提・実現したいこと
Unity5.3でiOS, Android向けのアプリを作っています。
2Dの表示にはNGUIを使っています。(プロジェクトの都合上ここは変更不可)
アプリの中でWebviewを表示したいのですが、フルスクリーンではなくて特定のNGUIのスプライトサイズぴったりの範囲に表示させる方法が知りたいです。
(アプリ内で表示しているウィンドウの中にWebviewが表示されるイメージ)
試したこと
GreeさんがGithubで公開しているアセットをインポートして試してみました。
フルスクリーンの表示は簡単に出来たのですが、特定のGameObject内に表示する機能はなさそうでした。
Webviewを表示する際にマージンを設定することはできるようでしたので、スプライトの左下〜右上の座標を取得してマージンを設定してやればいい感じになるかと思ったのですが、ぴったりのサイズにならずうまくいきません。
###該当のソースコード
c#
1// このUISpriteの上にWebviewを表示したい 2var background = transform.Find("Background").GetComponent<UISprite>(); 3var localPos = background.transform.localPosition; 4var localScale = background.transform.localScale; 5 6// "Background"を写すカメラ 7var camera = transform.Find.GetComponent<Camera>(); 8 9// "Background"の左下と右上のローカル座標(UIWidget.PivotはCenter前提とする) 10var localLB = new Vector3(localPos.x - background.width * 0.5f * localScale.x, localPos.y - background.height * 0.5f * localScale.y, 0f); 11var localRT = new Vector3(localPos.x + background.width * 0.5f * localScale.x, localPos.y + background.height * 0.5f * localScale.y, 0f); 12 13// "Background"の左下と右上のワールド座標 14var worldLB = background.transform.TransformPoint(localLB); 15var worldRT = background.transform.TransformPoint(localRT); 16 17// "Background"の左下と右上のスクリーン座標 18var screenLB = camera.WorldToScreenPoint(worldLB); 19var screenRT = camera.WorldToScreenPoint(worldRT); 20 21// マージンの計算 22int marginL = (int)(screenLB.x); 23int marginT = (int)(Screen.height - screenRT.y); 24int marginR = (int)(Screen.width - screenRT.x); 25int marginB = (int)(screenLB.y); 26 27// Webview表示 28var webviewObj = new GameObject("WebViewObject").AddComponent<WebViewObject>(); 29webviewObj.Init(x => Debug.Log(x)); 30webviewObj.LoadURL("https://www.google.co.jp/"); 31webviewObj.SetMargins(marginL, marginT, marginR, marginB); 32webviewObj.SetVisibility(true);
知りたいこと
上記のマージンの計算方法に誤りがないか知りたいです。
もしくは上記のような方法を用いなくても実現できる方法が他にあるのであれば知りたいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/02 02:55 編集