Version: 2021.3
언어: 한국어
macOS Player: IL2CPP 스크립팅 백엔드
macOS에서 딥 링크

macOS Player: C++ IL2CPP용 소스 코드 플러그인

IL2CPP 스크립팅 백엔드를 사용하는 경우 C++(.cpp) 코드 파일을 Unity 프로젝트에 직접 추가할 수 있습니다. C++ 파일은 플러그인 인스펙터에서 플러그인의 역할을 합니다. C++ 파일을 macOS Player와 호환되도록 설정하면 Unity는 이 파일을 관리되는 어셈블리로부터 생성되는 C++ 코드와 함께 컴파일합니다. 인스펙터(Inspector) 창의 플랫폼 설정(Platform settings) 섹션에서 적절한 Mac OS 옵션을 선택할 수 있습니다.

C++ 파일용 플러그인 임포터 설정
C++ 파일용 플러그인 임포터 설정

함수들은 생성된 C++ 코드와 연결되어 있으므로 _P/Invoke를 호출할 별도의 DLL 파일은 없습니다. 이런 이유로 DLL 이름 대신 "__Internal" 키워드를 사용할 수 있으며, 이 경우 다음 예제와 같이 런타임 시점에 함수를 로드하는 대신 C++ 링커가 함수를 확인하는 역할을 맡습니다.

[DllImport("__Internal")]
private static extern int
CountLettersInString([MarshalAs(UnmanagedType.LPWSTR)]string str);

다음과 같이 NativeFunctions.cpp에서 이러한 종류의 함수를 정의할 수 있습니다.

extern "C" __declspec(dllexport) int __stdcall CountLettersInString(wchar_t* str)
{
    int length = 0;
    while (*str++ != nullptr)
        length++;
    return length;
}

링커가 함수 호출을 확인하기 때문에 관리되는 런타임 시점에서 실행되는 C# 코드와 같이 관리되는 쪽의 함수 선언에 있는 모든 오류는 런타임 오류가 아니라 링커 오류를 생성합니다. 즉, 런타임 시점에 동적 로딩을 수행할 필요가 없으며, 함수가 C#에서 직접 호출됩니다. 따라서 P/Invoke 호출의 성능 소모가 크게 감소합니다.

참고 항목

플러그인 인스펙터

  • • 2018–03–13 페이지 게시됨

  • 2018.1의 새로운 기능 NewIn20181

macOS Player: IL2CPP 스크립팅 백엔드
macOS에서 딥 링크