툴/유니티

유니티 Webgl 실행시 웹브라우저의 URL주소 받기

스튜디오 오버그래픽스 2021. 8. 16. 20:56

Webgl로 빌드해서, 웹브라우저에서 실행했을때, 지금 Webgl을 실행하고 있는 URL주소 받는 방법

 

https://docs.unity3d.com/ScriptReference/Application-absoluteURL.html

 

Unity - Scripting API: Application.absoluteURL

Description The URL of the document. For WebGL, this a web URL. For Android, iOS, or Universal Windows Platform (UWP) this is a deep link URL. (Read Only) WebGL: The URL of the document as shown in a browser's address bar. Android: If the application has b

docs.unity3d.com

Application.absoluteURL을 쓰면 현재 웹브라우저에서 접속한 URL주소를 String으로 받는다.

 

 

 

-사용한 코드-

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class GetBrowerURL : MonoBehaviour
{
    public Text T;
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        T.text = Application.absoluteURL;
    }
}

인게임에서 확인하기 위해서 캔버스에 텍스트를 만들고 해당 텍스트가 URL이 되게 함.

 

딱히 보안이나 별다른 기능없는 무료 웹호스팅 서버에 업로드해서 테스트한 결과

크롬 브라우저 상단 URL주소창에 나와있는 주소 그대로를 인게임에서 가져올수 있다.

 

 

itch.io에 업로드해서 테스트한 결과

상단 URL주소에는 내가 Dashboard에서 만든 제목대로 나와있지만

인게임에서 받은 주소는 다름

Application.absoluteURL로 받아온 값은 꼭 웹브라우저상단에 표기되는 URL주소가 아닌

실제로 불러오는 서버의 절대 경로임을 알수 있음.

 

 

+추가내용(URL에 전달자 추가하기)

예를들어 만들 컨텐츠가 거의다 동일하지만 일부 텍스쳐만 다른 1000개의 컨텐츠를 만들어야한다고 하면, 텍스쳐 몇개만 수정하고자 유니티에서 1000번을 빌드하는 것은 비효율적일 것이다.

 

그래서 index.html의 이름을 index1.html, index2.html, index3.html...이런식으로 html파일의 이름만 바꾸고 Application.absoluteURL로 이름을 받아와서

index1.html로 접속하면 1번폴더에서 텍스쳐를 스트리밍 받아오고

index2.html로 접속하면 2번폴더에서 텍스쳐를 스트리밍 받아오고

index3.html로 접속하면 3번폴더에서 텍스쳐를 스트리밍 받아오고....

index뒤에 붙은 숫자를 스트리밍 데이터를 받아오는 경로로 지정하면 굳이 유니티에서 1000번 빌드할 필요없이 이름만 수정해서 해결할수도 있을것이다.

 

그러나 이런 방법도 사용자 입장에서는 텍스쳐만 바뀌는데 유니티 Webgl을 실행하는 프로그램들을 웹서버에서 다시 로드해야하는 번거로움이 생긴다.

 

그래서 URL주소 뒤에 물음표를 붙이고 보낼 숫자나 문자를 적어서 전달자를 보내면, 전달자는 바뀌어도 불러오는 유니티 Webgl의 컨텐츠는 동일해서 웹서버에서 다시 로딩하지 않고, 스트리밍 데이터를 받아오는 경로는 바뀌게 만들어줄수 있다.