유니티 C# 모바일 안에서 웹뷰 띄우는 방법 예시 코드 작성

반응형

유니티 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");
        }
    }
}
반응형