Unity

Unity에서 JavaScript 함수 호출

JiHxxn 2024. 1. 14. 00:28

JavaScript

  • 객체 기반의 스크립트 프로그래밍 언어이다.
  • 이 언어는 웹 브라우저 내에서 주로 사용됨.
  • C#언어와 비슷함

📄JSTest.jslib

  • Unity Documentation의 예제 중 브라우저 alert에 메시지 띄우는 함수를 구현
    • Hello, HelloString 함수를 만들어준다.
  • 원하는 해당 링크로 넘어갈 수 있는 함수를 구현
    • Golink 함수를 만들어준다.
      • window.location.replace(link)는 현재 페이지에서 link를 연결하지만 덮어 씌워지기 때문에 뒤로 가기를 할 수 없다.
      • window.open(link)는 새창에서 link를 열어준다.
      • window.location.href = link 를 사용하면 현재 페이지에서 해당 link로 연결되며, 뒤로 가기 흔적을 남길 수 있다.
mergeInto(LibraryManager.library, {

  Hello: function () {
    window.alert("Hello, world!");
  },

  HelloString: function (str) {
    window.alert(UTF8ToString(str));
  },
  
  Golink: function () {
	  var link = 'http://www.naver.com';
	  window.location.href = link;
  },
  
});

⭐브라우저 JavaScript를 유니티 프로젝트에 사용하려면 JavaScript 소스의 확장자를 .jslip 로 사용해야 한다.

  • . jslip 파일을 Assets 폴더의 “Plugins” 하위폴더에 저장해야 한다.

 

📄HelloWorldJS.cs

  • Dll을 사용하기 위해 System.Runtime.InteropServices 네임스페이스를 적어준다.
  • 어트리뷰트 [DllImport(“__Internal”)] 선언으로 XBos 및 iOS와 같은 특정 플랫폼에서 네이티브로 함수연결을 해준다.
  • extern 키워드는 다른 소스 파일(외부)에 있는 전역 변수 및 함수를 사용할 때 사용한다.
using UnityEngine;
using System.Runtime.InteropServices;

public class HelloWorldJS : MonoBehaviour
{
    [DllImport("__Internal")]
    private static extern void Hello();
    
    [DllImport("__Internal")]
    private static extern void HelloString(string str);

    [DllImport("__Internal")]
    private static extern void Golink();


    void Update()
    {
        if(Input.GetKeyDown(KeyCode.A))
        {
            Hello();
        }
        if (Input.GetKeyDown(KeyCode.S))
        {
            HelloString("안녕 자바스크립트");
        }
        if (Input.GetKeyDown(KeyCode.D))
        {
            Golink();
        }
    }
}

 


💫사용해 보기

  • HelloWorldJS.cs  스크립트를 해당 Scene GameObjet에 넣어준다.
  • WebGL로 프로젝트를 빌드해 준다.
if(Input.GetKeyDown(KeyCode.A))
      Hello();

A 키 클릭!

 

if(Input.GetKeyDown(KeyCode.B))
      HelloString("안녕 자바스크립트");

B 키 클릭!

 

if(Input.GetKeyDown(KeyCode.D))
     Golink();

D 키 클릭!


📒참고 문서

 

브라우저 스크립팅과 상호작용 - Unity 매뉴얼

웹용 콘텐츠를 빌드할 때 웹페이지의 다른 요소와 커뮤니케이션해야 할 수 있습니다.또는 Unity가 현재 기본적으로 노출하지 않는 웹 API를 사용하여 기능을 구현하고 싶을 수 있습니다.두 가지

docs.unity3d.com

https://mgtul.tistory.com/65

 

유니티 Webgl jslib 사용하기, JS호출하기

https://docs.unity3d.com/kr/2019.4/Manual/webgl-interactingwithbrowserscripting.html WebGL: 브라우저 스크립트와 상호작용 - Unity 매뉴얼 웹용 콘텐츠를 빌드할 때 웹페이지의 다른 요소와 통신해야 할 수 있습니다.

mgtul.tistory.com