Version: Unity 6.0 (6000.0)
언어 : 한국어
Customize error handling
JavaScript에서 Unity C# 스트립트 함수 호출

Unity C# 스크립트에서 JavaScript 함수 호출

Unity C# 코드에서 JavaScript 플러그인의 함수를 사용할 수 있습니다. 웹 페이지 또는 웹 API의 다른 요소와 통신해야 할 수 있으므로 Unity에서 JavaScript 코드를 사용하는 것이 유용할 수 있습니다.

파일 유형과 Unity 스크립트와 상호 작용하기 위해 JavaScript 플러그인을 설정하는 방법에 대해 알아보려면 JavaScript 플러그인 설정을 참조하십시오. C/C++/C# 플러그인과 상호 작용하는 방법을 알아보려면 Unity C# 스크립트에서 C/C++/C# 함수 호출을 참조하십시오.

항목 설명
JavaScript에서 Unity로 다른 변수 전달 Unity와 JavaScript 간에 다른 변수를 전달하는 방법에 대한 팁입니다.
자체 범위에서 빌드 코드 실행 Unity와 JavaScript 간의 코드 가시성을 개선하는 방법에 대한 팁입니다.
JavaScript 함수를 호출하는 Unity C# 코드 예시 이 예시 코드는 Unity에서 JavaScript 함수를 호출하는 방법을 보여 줍니다.
Unity 플러그인을 레퍼런스로 사용 레퍼런스로 사용할 수 있는 Unity에 포함된 플러그인의 목록을 표시합니다.

JavaScript에서 Unity로 다른 변수 전달

JavaScript를 Unity와 연동하려면 둘 사이에 효율적인 통신이 필요합니다. JavaScript에서 Unity로 다양한 데이터 유형을 전달하는 방법에 대한 다음 팁을 참조하십시오.

숫자 유형

간단한 숫자 유형을 전환하지 않고 함수 파라미터의 JavaScript로 전달할 수 있습니다.

예를 들어 이러한 JavaScript 함수는 다음과 같습니다. js AddNumbers: function (x, y) { return x + y; },

전환 없이 C#의 정수 값을 허용합니다.

int result = AddNumbers(5, 7);

Emscripten 힙에서 다른 데이터 유형을 포인터로 전달할 수 있습니다. Emscripten 힙은 JavaScript 메모리의 큰 배열에 불과합니다.

문자열

문자열을 JavaScript 문자열로 전환하려면 UTF8ToString 헬퍼 함수를 사용합니다.

var stringMessage = UTF8ToString("Hello World");

문자열 값을 반환하려면 _malloc를 호출하여 일부 메모리를 할당하고 stringToUTF8 헬퍼 함수를 호출하여 메모리에 JavaScript 문자열을 작성합니다. 문자열이 반환 값인 경우__ IL2CPP__Unity에서 개발한 스크립팅 백엔드로, 여러 플랫폼용 프로젝트를 빌드할 때 Mono 대신 사용할 수 있습니다. 자세한 정보
See in Glossary
런타임이 자동으로 메모리를 확보합니다.

 var returnStr = "Hello World";
    var bufferSize = lengthBytesUTF8(returnStr) + 1;
    var buffer = _malloc(bufferSize);
    stringToUTF8(returnStr, buffer, bufferSize);

배열

프리미티브 유형 배열의 경우 Emscripten은 다음과 같은 여러 정수 크기, 부호 없는 정수 또는 부동 소수점 메모리 표현에 각기 다른 ArrayBufferViews를 힙에 제공합니다. HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64.

다음 함수는 HEAPF32 배열을 반복하여 각 인덱스의 값을 출력합니다.

PrintFloatArray: function (array, size) {
    for(var i = 0; i < size; i++)
    console.log(HEAPF32[(array >> 2) + i]);
  },

텍스처

WebGL에서 텍스처에 액세스하기 위해 Emscripten은 Unity에서__ WebGL__웹 브라우저에서 2D 및 3D 그래픽스를 렌더링하는 JavaScript API입니다. Unity 웹 빌드 옵션을 사용하면 콘텐츠를 JavaScript 프로그램으로 퍼블리시할 수 있습니다. 이 프로그램은 HTML5 기술과 WebGL 렌더링 API를 사용하여 Unity 콘텐츠를 웹 브라우저에서 실행합니다. 자세한 정보
See in Glossary
텍스처 오브젝트로 네이티브 텍스처 ID를 매핑하는 GL.textures 배열을 제공합니다. Emscripten의 WebGL 컨텍스트인 GLctx에서 WebGL 함수를 호출할 수 있습니다.

예를 들어 다음 함수는 GL 텍스처 배열의 WebGL 텍스처를 2D 텍스처에 바인딩합니다.

 BindWebGLTexture: function (texture) {
    GLctx.bindTexture(GLctx.TEXTURE_2D, GL.textures[texture]);
  },

자체 범위에서 빌드 코드 실행

모든 빌드 코드를 자체 범위에서 실행하는 것이 좋습니다. 자체 범위에 코드가 있는 경우 내장된 페이지 코드와 충돌하지 않고 콘텐츠를 페이지에 내장할 수 있으며, 동일한 페이지에 두 개 이상의 빌드를 내장할 수 있습니다.

.jslib 플러그인의 코드

프로젝트에 모든 JavaScript 코드가 .jslib 플러그인 형태로 있는 경우 이 JavaScript 코드는 컴파일된 빌드와 동일한 범위 내에서 실행되며 코드는 이전 Unity 버전과 동일한 방식으로 작동합니다. JavaScript 플러그인 코드에서 직접 볼 수 있는 일부 오브젝트 및 함수는 다음과 같습니다. * Module * SendMessage * HEAP8 * ccall

전역 범위에서 JavaScript 함수 호출

내부 JavaScript 함수를 내장된 페이지의 전역 범위에서 호출하려면 웹 템플릿 index.html에서 unityInstance 변수를 사용해야 합니다.

Unity 엔진 인스턴스화가 성공한 후 다음과 같이 unityInstance를 사용합니다.

  var MyGameInstance = null;
  script.onload = () => {
    createUnityInstance(canvas, config, (progress) => { /*...*/ }).then((unityInstance) => {
      MyGameInstance = unityInstance;

그런 다음 MyGameInstance.SendMessage()를 사용하여 빌드에 메시지를 보내거나 MyGameInstance.Module을 사용하여 빌드 모듈 오브젝트에 액세스할 수 있습니다.

JavaScript 함수를 호출하는 Unity C# 코드 예시

다음 JavaScript 코드는 Hello라는 이름의 함수를 생성합니다. 이 예시에서는 Unity C# 스크립트에서 호출할 수 있도록 JavaScript 플러그인에서 이 코드를 사용합니다.

mergeInto(LibraryManager.library, {

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

그런 다음 Unity 프로젝트에서 다음 C# 코드를 사용하여 JavaScript 코드에서 Hello 함수를 호출합니다.

using UnityEngine;
using System.Runtime.InteropServices;

public class NewBehaviourScript : MonoBehaviour {

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

    void Start() {
        Hello();
    }
}

다양한 함수 유형이 포함된 더 큰 코드 예시는 코드 예시: Unity에서 JavaScript 및 C/C++/C# 함수 호출을 참조하십시오.

Unity 플러그인을 레퍼런스로 사용

Unity 설치 폴더에는 다음과 같이 레퍼런스로 사용할 수 있는 플러그인이 몇 개 있습니다.

  • PlaybackEngines/WebGLSupport/BuildTools/lib

  • PlaybackEngines/WebGLSupport/BuildTools/Emscripten/src/library*

추가 리소스

Customize error handling
JavaScript에서 Unity C# 스트립트 함수 호출