unity-webview is a plugin for Unity 5 that overlays WebView components on Unity view. It works on Android, iOS, Unity Web Player, and OS X (Windows is not supported for now).
unity-webview is derived from keijiro-san's https://github.com/keijiro/unity-webview-integration .
It is placed under sample/. You can open it and import the plugin as below:
- Open
sample/Assets/Sample.unity. - Open
dist/unity-webview.unitypackageand import all files. It might be easier to extractdist/unity-webview.zipinstead if you've imported unity-webview before.
Since Unity 5.3.0, Unity.app is built with ATS (App Transport Security) enabled and non-secured connection (HTTP) is not permitted. If you want to open http://foo/bar.html with this plugin on Unity OS X Editor, you need to open /Applications/Unity5.3.4p3/Unity.app/Contents/Info.plist with a text editor and add the following,
--- Info.plist~ 2016-04-11 18:29:25.000000000 +0900+++ Info.plist 2016-04-15 16:17:28.000000000 +0900@@ -57,5 +57,10 @@ <string>EditorApplicationPrincipalClass</string> <key>UnityBuildNumber</key> <string>b902ad490cea</string> + <key>NSAppTransportSecurity</key>+ <dict>+ <key>NSAllowsArbitraryLoads</key>+ <true/>+ </dict> </dict> </plist>or invoke the following from your terminal,
/usr/libexec/PlistBuddy -c "Add NSAppTransportSecurity:NSAllowsArbitraryLoads bool true" /Applications/Unity/Unity.app/Contents/Info.plist- gree#64
- https://onevcat.zendesk.com/hc/en-us/articles/215527307-I-cannot-open-the-web-page-in-Unity-Editor-
WebViewSeparated.bundle is a variation of WebView.bundle. It is based on gree#161 . As noted in the pull-request, it shows a separate window and allows a developer to utilize the Safari debugger. For enabling it, please define WEBVIEW_SEPARATED.
The implementation now supports WKWebView but it is disabled by default. For enabling it, please set enableWKWebView as below:
webViewObject.Init( ...enableWKWebView: true);NOTE: the following steps are now performed by Assets/Plugins/Android/Editor/UnityWebViewPostprocessBuild.cs.
Once you built an apk, please copy sample/Temp/StatingArea/AndroidManifest-main.xml to sample/Assets/Plugins/Android/AndroidManifest.xml, edit the latter to add android:hardwareAccelerated="true" to <activity android:name="com.unity3d.player.UnityPlayerActivity" ..., and rebuilt the apk. Although some old/buggy devices may not work well with android:hardwareAccelerated="true", the WebView runs very smoothly with this setting.
For Unity 5.6 or newer, you also need to modify android:name from com.unity3d.player.UnityPlayerActivity to net.gree.unitywebview.CUnityPlayerActivity. This custom activity implementation will adjust Unity's SurfaceView z order. Please refer plugins/Android/src/net/gree/unitywebview/CUnityPlayerActivity.java and plugins/Android/src/net/gree/unitywebview/CUnityPlayer.java if you already have your own acitivity implementation.
The implementation utilizes IFRAME so please put both "an_unityplayer_page.html" and "a_page_loaded_in_webview.html" should be placed on the same domain for avoiding cross-domain requests.