반응형
유니티 C# 모바일 안에서 웹뷰 띄우는 방법 예시 코드 작성
Android 네이티브 코드 (Java)
먼저, Unity 프로젝트의 Plugins/Android 폴더에 WebViewPlugin.java라는 Java 파일을 생성하고 아래 코드를 작성합니다.
※ C# 으로 코드를 작성한뒤 뒤에 .cs 를 지우고 .java 로 바꾸면 됩니다.
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.LinearLayout;
public class WebViewPlugin {
private WebView webView;
public void showWebView(final Activity activity, final String url) {
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
// 웹뷰 레이아웃 추가
LinearLayout layout = new LinearLayout(activity);
layout.setOrientation(LinearLayout.VERTICAL);
// 웹뷰 생성
webView = new WebView(activity);
webView.setWebViewClient(new WebViewClient());
webView.getSettings().setJavaScriptEnabled(true);
// 웹사이트 로드
webView.loadUrl(url);
// 레이아웃에 웹뷰 추가
layout.addView(webView);
// Activity에 웹뷰 레이아웃 설정
activity.addContentView(layout, new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT));
}
});
}
public void closeWebView() {
if (webView != null) {
webView.destroy();
webView = null;
}
}
}
Unity C# 코드에서 Android 네이티브 코드 호출
Unity C# 코드에서 위의 Java 코드를 호출하여 WebView를 실행할 수 있습니다.
아래는 Unity에서 Java 코드를 호출하는 방법입니다.
- 코드 작성
using UnityEngine;
public class WebViewManager : MonoBehaviour
{
private AndroidJavaObject webViewPlugin;
void Start()
{
if (Application.platform == RuntimePlatform.Android)
{
// Android Java Class 호출
using (AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
{
AndroidJavaObject activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
// WebViewPlugin 클래스의 인스턴스 생성
webViewPlugin = new AndroidJavaObject("com.example.webviewplugin.WebViewPlugin");
// 웹뷰 열기
webViewPlugin.Call("showWebView", activity, "https://www.example.com");
}
}
}
void OnDestroy()
{
// 종료 시 웹뷰 닫기
if (webViewPlugin != null)
{
webViewPlugin.Call("closeWebView");
}
}
}
반응형