Version: 2022.2
언어: 한국어
Windows integrity control
Windows Build Settings

Windows 플레이어: IL2CPP 스크립팅 백엔드

You can use IL2CPP as an alternative to Mono for scripting backend when building projects for Windows Player.

IL2CPP를 사용하여 프로젝트를 빌드하는 경우 Unity는 스크립트의 IL 코드를 변환하고, C++로 다시 조립한 후 네이티브 바이너리를 생성합니다. 자세한 내용은 IL2CPP를 참조하십시오.

C++ source code plugins for IL2CPP

You can add C++ (.cpp) code files directly into a Unity Project when using the IL2CPP scripting backend. The C++ files act as plugins within the Plugin Inspector. If you configure the C++ files to be compatible with Windows Player, Unity compiles them together with C++ code that gets generated from managed assemblies.

To view the plugin importer settings for C++ files, click a .cpp file and select the appropriate Windows option in the Platform settings section of the Inspector:

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

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

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

You can define this kind of function in NativeFunctions.cpp as follows:

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

Because the linker resolves the function call, any error made in the function declaration on the managed side (C# code that executes under managed run time) produces a linker error instead of a run-time error. This means, no dynamic loading can take place during run time, and the function is called directly from C#, which significantly decreases the performance overhead of a P/Invoke call.

Unity compiles source code plug-ins with the same C++ compiler arguments as the generated C++ code, which can’t be modified. If some plug-in source code requires control over C++ compiler arguments, you must build a native plug-in instead. For more information, see Native plug-in.

IL2CPP build files

A project using the IL2CPP scripting backend typically produces these files:

빌드 중에 생성되는 IL2CPP 파일
빌드 중에 생성되는 IL2CPP 파일

The following files are common to projects that use IL2CPP:

파일: 설명:
a_Data 게임 데이터가 있는 폴더입니다.
a.exe 메인 게임 실행 파일입니다.
UnityCrashHandler64.exe 크래시 핸들러 실행 파일입니다.
UnityPlayer.dll 모든 네이티브 코드가 포함된 Unity 플레이어 라이브러리입니다.
WinPixEventRuntime.dll PIX for Windows runtime. This file is present only in development builds.
a_BackUpThisFolder_ButDontShipItWithYourGame 게임 디버깅에 필요한 데이터가 들어 있는 폴더입니다. 여기에는 스크립트에서 생성되는 C++ 코드와 PDB(디버그 정보) 파일이 포함됩니다. 빌드를 배포할 때마다 이 폴더를 백업해야 하지만, 재배포하지는 마십시오.
GameAssembly.dll IL2CPP 런타임과 모든 스크립트 코드가 포함된 라이브러리입니다.
SymbolMap File containing a list of all managed function addresses and their lengths. IL2CPP needs this to resolve managed stack traces. If you delete it, you can still run your game but there’s no gurantee that exceptions will generate sensible call stacks.

추가 리소스:

Windows integrity control
Windows Build Settings
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961