유니티 iOS에 플러그인 연결하기

2021. 6. 21. 15:59개발/유니티

준비물

최신 mac os, xcode

 

1. Plugins/iOS/ 내부에 mm확장자의 코드 작성

extern "C" {
     int PluginFunc(){
         return 999;
     }
 }

 

2. C#코드 작성

using System.Runtime.InteropServices;

public static class PluginClass
{
#if UNITY_IOS
    [DllImport("__Internal")]
    private static extern int PluginFunc();

    public static int Number{
        get
        {
            return PluginFunc();
        }
    }

#endif
}

 

3. 결과

using UnityEngine;

public class GameManager : MonoBehaviour
{
    void Start()
    {
        Debug.log(PluginClass.Number.ToString());
    }
}

 

콘솔 로그에는 999가 찍힌다.

 

이를 이용해 iOS의 기능을 사용하거나 오픈소스를 커스텀하는 것도 가능하다.

 

유니티 공식 문서에서는 name mangling을 피하기 위해 함수를 C링크에 선언해야한다고한다.

 

또한 유니티에서 플러그인을 호출할때 부하가 상당히 높다고하니, 한 프레임내에서 많은 네이티브 호출은 줄이자.