상세 컨텐츠

본문 제목

[Unity] 유니티 웹뷰 webView 개발 관련

게임엔진관련/유니티 엔진

by AlrepondTech 2019. 3. 4. 12:22

본문

반응형

 

=================================

=================================

=================================

 

 

파일: 

unity-webview-master.zip
다운로드

 

unity-webview 셋팅방법

 

Unity-Webview 사이트 링크 들어가면 "Clone or download" 버튼에 누루고 zip파일로 받으면 된다.

압축을 풀면 "unity-webview-master\unity-webview-master\dist" 부분에 "unity-webview.zip" 파일이

 보일것이다 이것이 에셋파일이다 유니티에서 위에보면 메뉴에 "Assets->Import Package->Custom Package..."으로 들어가서  위의 dist 폴더로 들어가면 패키지파일 "unity-webview.unitypackage" 보이는데 이걸을 선택하면 알아서 에셋에 깔린다.

또 이것 방법말고 에셋파일에 다른폴더에 구성하고 싶으면 "\dist\unity-webview.zip" 이것의 파일을 압축풀면 

"dist\unity-webview\Assets\Plugins\"의 경로가 생기고 폴더와 파일들이 생성된다. 안에 "WebView" 폴더를 만들어 거기에다가 모두 넣어두고 다시 "WebView" 폴더를 자신의 유니티프로젝트 "Assets\Plugins\" 경로에 넣으면 된다.

 

 

 

=================================

=================================

=================================

 

 

출처: http://blog.naver.com/PostView.nhn?blogId=kstarghost&logNo=70179335670

 

 

음... 일단 삽질을 한 2주 이상 하였습니다. 

안드로이드에 대한 기본 지식도 없어서... 더더욱...

그래서 유니티에서 웹뷰를 안정적이고 이쁘게 표현할 방법은 바로!!

 

https://github.com/gree/unity-webview  

 

dist 폴더에 unity-webview.unitypackage 파일을 이용하여 임포트 하여 사용하기 바란다.

 

추가로 도움 될만한 페이지입니다.  

 

http://westwoodforever.blogspot.kr/2013/09/unity3d-tdp-webview.html 

 

위 페이지에서 다운받아서 아주 쉽게 처리 하였습니다.

 

사용 방법

 

using UnityEngine; using System.Collections;  public class PlatformLoginSystem {     WebViewObject m_webViewObject = null;     public virtual void OpenWebView(string web, int left, int top, int right, int bottom)     {                  string strUrl = string.Format("{0}"          , web);          Debug.Log(strUrl);         //Application.OpenURL(strUrl);          // 오브젝트를 생성하고 멤버 변수로 등록한다. ( 쉽게 제거하기 위해서 )         // WebViewObject 컴포넌트 등록          m_webViewObject = (new GameObject("WebViewObject")).AddComponent<WebViewObject>();         m_webViewObject.gameObject.name = "WebView";            // 반드시 Init 호출 파라미터 : 웹페이지          // Html 형태를 등록 할 경우 페이지에 연결된 다른 페이지로 이동하지 않는 버그 있었음         m_webViewObject.Init((msg) =>         {             Debug.Log(string.Format("CallFromJS[{0}]", msg));         });          // 마진값 : 화면으로부터 좌상우하 여백 값          m_webViewObject.SetMargins(left, top, right, bottom);         m_webViewObject.LoadURL(strUrl);         m_webViewObject.SetVisibility(true);     }      // 생성된 웹뷰 삭제     public virtual void CloseWebView()     {         GameObject.Destroy(m_webViewObject);     } } 

 

 

 

=================================

=================================

=================================

 

 

 

출처: http://dolphin.ivyro.net/zboard/view.php?id=directx_memo&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=120

 

 

Gree WebView

지금 사용중인 WebView와 코드가 동일
https://github.com/gree/unity-webview/  

예전 unity 3.5에서 추가 했던것
https://github.com/keijiro/unity-webview-integration 

웹뷰를 터치하거나 스크롤뷰를 보이기 하기 위해서
http://westwoodforever.blogspot.kr/2013/09/unity3d-tdp-webview.html


사용 ...
http://bribser.co.jp/blog/activate-webview-setvisibility-false-on-unity-editor/
http://blog.naver.com/PostView.nhn?blogId=kstarghost&logNo=70179335670&redirect=Dlog&widgetTypeCall=true
http://loumo.jp/wp/archive/20131115085810/

=========================================================
appbankgames   webview   메모리를 잘지원준다고 함
http://tsubakit1.hateblo.jp/entry/20130523/1369316363


==================================================================



http://devkorea.co.kr/bbs/board.php?bo_table=m03_qna&wr_id=39070

웹뷰에서 터치입력이 안먹힐 때
http://m.blog.naver.com/seinaz/100204131059

[Android]Scrollbar hide 스크롤바 숨기기
http://mornbr.blogspot.kr/2015/06/androidscrollbar-hide.html?view=flipcard


http://blueasa.tistory.com/1710

 

 

=================================

=================================

=================================

 

 

 

출처: https://reysion.tistory.com/34

 

 

Unity 3D에서 WebView를 쓸 때 유용한 소스 입니다. 

일본 개발자분이 오픈소스로 라이센스로 공개한 것 같더군요...

 

[소스]

https://github.com/gree/unity-webview

 

- Java로 작성된 Android 용 Native Plugin

 

- Objective-C로 작성된 iOS 용 Native Plugin

- Objective-C로 작성된 OS X 용 Native Plugin

- Native Plugin을 사용하기위한 C # Plugin

 

[예제 프로젝트]

https://github.com/keijiro/unity-webview-integration

 

 

unity-webview-integration 소스는 웹 페이지를 WebView로 호출에서 

아래와 같이 unity와 기능을 연동한 예제 입니다.javascript 예제여서 좀 아쉽네요. C#으로 수정해봐야 겠습니다.

http://keijiro.github.com/unity-webview-integration/index.html#

...

 

<title>Unity - WebView Integration Test Page</title><p><ul><li><a href="#" onclick='unity.callback("/spawn")'>Spawn a box</a></li><li><a href="#" onclick='unity.callback("/spawn", {color:"red"})'>Spawn a red box</a></li><li><a href="#" onclick='unity.callback("/spawn", {color:"blue"})'>Spawn a blue box</a></li><li><a href="#" onclick='unity.callback("/spawn", {color:"red", scale:0.5})'>Spawn a small red box</a></li><li><a href="#" onclick='unity.callback("/spawn", {color:"blue", scale:0.5})'>Spawn a small blue box</a></li><li><a href="#" onclick='unity.callback("/note", {text:"こんにちは"})'>「こんにちは」</a></li><li><a href="#" onclick='unity.callback("/note", {text:"ごきげんいかが"})'>「ごきげんいかが」</a></li><li><a href="#" onclick='unity.callback("/note", {text:"!@#$%^&*()-+"})'>"!@#$%^&*()-+"</a></li><li><a href="#" onclick='unity.callback("/close")'>Close</a></li><li><a href="page2.html">Go to page 2.</a></li></ul></p>...

 

 

TestInterface.js (unity 3d script)

...

// Process messages coming from the web view.

private function ProcessMessages() {

    while (true) {

        // Poll a message or break.

        var message = WebMediator.PollMessage();

        if (!message) break;

 

        if (message.path == "/spawn") {

            // "spawn" message.

            if (message.args.ContainsKey("color")) {

                var prefab = (message.args["color"] == "red") ? redBoxPrefab : blueBoxPrefab;

            } else {

                prefab = Random.value < 0.5 ? redBoxPrefab : blueBoxPrefab;

            }

            var box = Instantiate(prefab, redBoxPrefab.transform.position, Random.rotation) as GameObject; 

            if (message.args.ContainsKey("scale")) {

                box.transform.localScale = Vector3.one * float.Parse(message.args["scale"] as String);

            }

        } else if (message.path == "/note") {

            // "note" message.

            note = message.args["text"] as String;

        } else if (message.path == "/print") {

            // "print" message.

            var text = message.args["line1"] as String;

            if (message.args.ContainsKey("line2")) {

                text += "\n" + message.args["line2"] as String;

            }

            Debug.Log(text);

            Debug.Log("(" + text.Length + " chars)");

        } else if (message.path == "/close") {

            // "close" message.

            DeactivateWebView();

        }

    }

}

...



출처: https://reysion.tistory.com/34 [미로의 노트]

 

 

 

 

=================================

=================================

=================================

 

 

 

 

출처: https://iw90.tistory.com/69 [woong's]

 

 

Unity WebView 사용하기

 

​안녕하세요. Unity 에서 WebView 를 사용하면서 고생을 해서 저와 같은분이 없기를  

바라며 이렇게 포스트를 쓰고 있습니다 .

필자는 영어를 잘못해서 영어 커뮤니티 돌아다니면서 보느라 고생을 많이 했네요 .

한글로 되어 있는 포스트가 없어 포스트를 써보려 합니다 ^^

 

검색을 통해서 Unity WebView 가있는지를 찾아보니 IOS, Android , MacOS 를 

지원해주는 WebView 를 어떤분이 플러그인을 개발해서 GitHub에 배포를 해놓으신것을

많은 분들이 추천을 해주셔서 사용해 보았습니다 .

 

gree/unity-webview 플러그인

 

​위 링크를 통해서 접근 할 수 있습니다 . 

 

 

 

​이와 같은 화면을 볼 수 있습니다 . 

아럐 간단한 설명과 코드가 있습니다 .

 

오른쪽 하단의 다운로드를 통해서 다운로드를 진행합니다 .

 

 

 

 

 

 

파일을 열면 이와같은 폴더 구조를 가지고 있습니다 .

sample 코드도 있지만 저는 저 샘플 코드를 이용해서 해보니 흰색화면밖에 보이지 않아서

새로운 프로젝트를 만들어서 간단하게 WebView 화면을 구성해 보겠습니다 .

 

폴더구조에서 저희가 필요한것은 dist 안에 들어있는 플러그인 입니다 .

 

 

 

 

 

 

 

이제 유니티 프로젝트를 하나 생성합니다 .

 

 

 

 

​생성후에 Scene 을 저장하고 위 플러그인을 선택해서 Import를 진행 합니다 . 

 

 

 

 

 

 

 

 

 

 

 

그러면 이와 같이 플러그인 파일들이 들어와 있는것을 확인 할수 있습니다 .

저희가 사용할 주요 파일은 WebViewObject 입니다 .

 

파일이 Import 된것을 확인후에 Hierachy 탭에 GameObject 를 생성 합니다 .

 

 

 

 

 

 

그 후에 GameObject 에 적용 시킬 Script 파일을 만들겠습니다 .

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
using UnityEngine;
using System.Collections;
 
public class WebViewScript : MonoBehaviour {
    
    private WebViewObject webViewObject;
    
    // Use this for initialization
    void Start () {
        StartWebView();
    }
    
    // Update is called once per frame
    void Update () {
        
        if (Application.platform == RuntimePlatform.Android)
        {
            
            if (Input.GetKey(KeyCode.Escape))
            {
                Destroy(webViewObject);
                return;
            }
        }
        
    }
    
    public void StartWebView()
    {
        string strUrl = "http://www.naver.com";
        
        webViewObject =
            (new GameObject("WebViewObject")).AddComponent<WebViewObject>();
        webViewObject.Init((msg)=>{
            Debug.Log(string.Format("CallFromJS[{0}]", msg));
        });
        
        webViewObject.LoadURL(strUrl);
        webViewObject.SetVisibility(true);
        webViewObject.SetMargins(50, 50, 50, 50);
    }
}
 

 

 

주요 코드입니다 .

 

Udate() 구문에는 모바일 디바이스를 백 버튼을 통해서 WebView 를 닫기 위한 코드입니다 .

StartWebView() 메서드가 주요 코드입니다 .

코드가 워낙 간결해서 별다른 설명 없이도 충분히 이해 할 수 있을 것 같습니다.

 

이렇게 스크립트를 작성후에 GameObject 에 적용시키면 되겠습니다 .

 

 

 

 

반응형

 

 

728x90

 

 

 

 

 

 

 

​이제 실행을 해보겠습니다 . 

 

 

 

 

 

​화면에는 아무것도 나타나지않고 에러만 나타납니다 .

필자는 이에러를 잡고자 몇시간을 보냈네요 . 커뮤니티 돌아다녀도 해결 방법이 없었습니다 .

혹여나 하는 마음에 디바이스에 실행을 시켜보았습니다 .

 

 

 

 

 

 

File > Build & Run 을 선택해서 디바이스에서 실행해 보겠습니다 .

 

 

 

 

 

 

오 Editor 에서 실행한 화면과는 다르게 나타 나네요 .

뭔가 WebView 형태가 나타 난것 같습니다 .

인터넷이 연결이 안되었다고 나타납니다 .

 

그래서 필자는 안드로이드 개발을 하다보니 뭔가 느낌이 나서 유니티 프로젝트를 안드로이드 프로젝트로 Export를 

해보았습니다 .

 

 

 

​File > Build Settings 를 선택합니다 . 

 

 

 

 

 

 

Android Switch Platform 을 통해서 Android 디바이스로 바꾸어 주고 위 빨간 상자의 체크박스를 

선택하고 Export 를 진행합니다 .

 

그러면 아래와 같이 안드로이드 프로젝트가 생성 됩니다 .

 

 

 

 

 

 

 

 

안드로이드 이클립스를 통해서 실행 시켜 보겠습니다 .

 

 

 

 

 

 

Import 를 진행했습니다 .

저는 이중에 Manifest 파일을 확인하고 싶었습니다 .

 

 

 

 

 

 

퍼미션이 없습니다 .

안드로이드 디바이스에서 인터넷 통신을 하기위해서는 안드로이드 인터넷 퍼미션이 있어야 합니다 .

퍼미션이 존재하지 않아서 아까와 같은 인터넷 연결을 못한다는 화면이 나타난것 같습니다 .

 

 

 

 

 

 

Add > User Permission 을 선택합니다 .

 

 

 

​퍼미션을 추가 합니다 .
 
그후에 실행 하면 WebView 화면이 잘 나타나는 것을 확인 할 수 있습니다 .
하지만 터치가 안되는 현상이 일어 납니다 .
 
1
2
3
            <meta-data
                android:name="unityplayer.ForwardNativeEventsToDalvik"
                android:value="true" />

 

 

​Manifest 파일을 보면 위 코드의 Value 가 false 로 되어 있습니다 . 

이부분을 true 로 변경후에 실행하면 터지가 잘되는 것을 확인 할 수 있습니다.

 

 

 



출처: https://iw90.tistory.com/69 [woong's]

 

 

 

=================================

=================================

=================================

 

 

 

출처: http://www.devkorea.co.kr/bbs/board.php?bo_table=m03_qna&wr_id=42201

 

 

유니티 화면에 웹뷰를 표시하는 방법을 찾던 중에 android, iOS 모두 동작한다는..
 
많은 분들이 성공하셨다는 gree 소스로 하는 중인데요.
제가 뭘 빼먹었는지.. 화면이 흰색으로만 표시되네요. ㅠ.ㅠ
 
제가 한 방법은 아래와 같습니다.
1. git clone 으로 gree 소스 받아오기
2. 유니티로 gree sample 프로젝트 열기
3. gree dist 폴더에 있는 unity-webview.unitypackage 파일을 유니티에 임포트.
4. 실행. --> 결과는 흰색화면 표시.
 
  참고-gree 소스 주소: https://github.com/gree/unity-webview
 
뭘 빼먹은걸까요?
혹시.. gree 소스 중 plugins/Android 폴더에 있는 소스들을 이용해서 뭔가를 해야하는건가요?
그게 제일 의심이 되긴하는데.. ;;
 
성공하신분.. 답변좀 해주세요~~ ㅠ.ㅠ
 
-------------------------------------------------------------------------------------------------------------------------
 
샘플은 저도 그렇더군요 소스 참고해서 작성해보니 작동 잘됩니다. 안드로이드 디바이스에 올리실 때 메니페스트 수정하셔야 디바이스에서 작동이 됩니다. 
메니페스트 수정사항은 이 두가지 입니다. 
<uses-permission android:name="android.permission.INTERNET"/> 
<meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />
 

 

 

=================================

=================================

=================================

 

 

 

출처: http://www.devkorea.co.kr/bbs/board.php?bo_table=m03_qna&wr_id=29578

 

Unity3d 에서 WebView를 Unity3d 상의 객체처럼 사용할 수 없나요?

 

 

http://devkorea.co.kr/bbs/board.php?bo_table=m03_qna&wr_id=29526&sca=UNITY&sfl=wr_subject%7C%7Cwr_content&stx=WebView&sop=and&currentId=44

 
위의 주소에서 이미 질문을 드렸고
답변자분께서 불가능하다는 소리를 들어서 다른 방법을 찾았으나
일단 하루동안에는 못 찾았습니다//
 
서두의 질문은 다음과 같습니다.
 
 
블로그의 내용에 따라 
 
 
의 주소에 있는 Unity3d 안에서 (Android, iOS) WebView를 사용할 수 있겠금 라이브러리가 오픈소스로 공개되어 있으며
실제 그대로 컨버팅이 잘 되었으나
 
구조적인 문제인지
 
포팅된 WebView 를 Unity3d 객체 처럼 사용하여
 
현재 사용하는 NGUI 밑에 깔리는 형식으로 제작하고자 합니다.
 
즉 WebView -> Unity3d Player 형식으로 출럭되를 원합니다.
 
즉 WebPlayer 위에  NGUI 를 출력하는 방식이 되기를 원하는데
 
도저히 방법이 없는지 아니면 라이브러리를 구입해야 하는지..
 
답변 부탁드립니다.
 
------------------------------------------------------------------------------------------------------------------------------------
 
제가 알기로는 위 https://github.com/keijiro/unity-webview-integration 방식은 
UnityPlayer 위에 안드로이 WebView를 얹힌다고 표현해야 하나요? 

말씀하신 기능은 맨아래 Unity Player 그 위에 WebView 또 그위에 Unity Player인데... 
불가능하지 않을까 싶습니다. 

일반적인 이벤트 및 공지사항 보여주기용이 아닌이상... 
다른방식을 찾아보시는게 좋은듯 한데요.
 
----------------------------------------------------------------------------------------------------------------------------
 
 
 
 
----------------------------------------------------------------------------------------------------------------------------------
http://forum.unity3d.com/threads/4990-htmlTexture-plugin 
사용하셨던 webview와는 다른형태라서 기능이 좀 다르지만 
요녀석은 어떠신지
 
-----------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------
 

 

 

=================================

=================================

=================================

 

 

 

출처: https://includecoding.tistory.com/80

 

Unity3D WebView ERR_CLEARTEXT_NOT_PERMITTED 문제

 

평화로운 수요일...갑자기 마공앱에서 뉴스탭을 클릭하면 나오는 처음보는 에러.. ERR_CLEARTEXT_NOT_PERMITTED..?

 

검색을 해 본 결과 안드로이드 APK 9.0 ( pie ) 에서 나오는 에러라고 한다. 

 

pie 버전에서는 http:// 로 접근이 불가능하고, https:// 로만 url을 접근해서 웹뷰를 띄워줘야만 하나보다..

 

하지만 방법은 다 있는 법

 

Plugins -> Android에 있는 AndroidManifast.xml을 수정하면 되는데

 

나는 이렇게 했다.

 

usesClearTextTraffic를 true로 만들어서, text로 접근하는 url은 모두 접근이 가능하도록 만들어줬다.

 

<Application .... android:usesCleartextTraffic="true"/> 이런 식으로, Application 쪽 칸에 저 문구를 넣어주고 테스트를 해 본 결과

 

ERR_CLEARTEXT_NOT_PERMITTED 이런 에러는 전혀 뜨지 않고, 마법천자문 홈페이지로 잘 이동이 되는 것을 확인했다.



출처: https://includecoding.tistory.com/80 [#Include]

 

 

 

=================================

=================================

=================================

 

 

 

http://devkorea.co.kr/bbs/board.php?bo_table=m03_qna&wr_id=29526&sca=UNITY&sfl=wr_subject%7C%7Cwr_content&stx=WebView&sop=and&currentId=44

 
위의 주소에서 이미 질문을 드렸고
답변자분께서 불가능하다는 소리를 들어서 다른 방법을 찾았으나
일단 하루동안에는 못 찾았습니다//
 
서두의 질문은 다음과 같습니다.
 
 
블로그의 내용에 따라 
 
 
의 주소에 있는 Unity3d 안에서 (Android, iOS) WebView를 사용할 수 있겠금 라이브러리가 오픈소스로 공개되어 있으며
실제 그대로 컨버팅이 잘 되었으나
 
구조적인 문제인지
 
포팅된 WebView 를 Unity3d 객체 처럼 사용하여
 
현재 사용하는 NGUI 밑에 깔리는 형식으로 제작하고자 합니다.
 
즉 WebView -> Unity3d Player 형식으로 출럭되를 원합니다.
 
즉 WebPlayer 위에  NGUI 를 출력하는 방식이 되기를 원하는데
 
도저히 방법이 없는지 아니면 라이브러리를 구입해야 하는지..
 
답변 부탁드립니다.
 
------------------------------------------------------------------------------------------------------------------------------

http://forum.unity3d.com/threads/4990-htmlTexture-plugin 

사용하셨던 webview와는 다른형태라서 기능이 좀 다르지만 

요녀석은 어떠신지

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

jungrok5  2013.05.07 14:36   답변 신고

http://wiki.unity3d.com/index.php/HtmlTexturePlugin 

http://labs.awesomium.com/unity3d-integration-tutorial-part-1/ 

 

여기도 참고해보세요

개발자hyuck  2013.05.07 14:57   답변 신고

정말 진심으로 감사합니다. 

정말 너무너무 막혀서 어찌할바를 모르다가 길을 안내해 주시네요. 

정말 감사합니다!

 

 

 

=================================

=================================

=================================

 

 

 

 

* 기타관련링크

 

https://bitbucket.org/vitaly_chashin/simpleunitybrowser/src/default/  //윈도우용 유니티 웹뷰?!?!

 

출처: https://blueasa.tistory.com/1705

 

 

참조1 : http://www.devkorea.co.kr/bbs/board.php?bo_table=m03_qna&wr_id=29578

 

참조2 : http://wiki.unity3d.com/index.php/HtmlTexturePlugin

 

참조3 : http://labs.awesomium.com/unity3d-integration-tutorial-part-1/



출처: https://blueasa.tistory.com/1705 [Try & Error]

 

https://qiita.com/mczkzk/items/0ed0665c7da3b550770e

 

https://westwoodforever.blogspot.com/2013/09/unity3d-tdp-webview.html

 

https://forum.unity.com/threads/htmltexture-plugin.4990/

 

http://wiki.unity3d.com/index.php/HtmlTexturePlugin

 

 

=================================

=================================

=================================

 

 

반응형


관련글 더보기

댓글 영역