유니티에서 iOS 플러그인을 만들고 사용하는 방법에 관한 포스팅이다.
테스트 환경은 다음과 같으며 지난 번에 사용한 프로젝트를 동일하게 활용할 예정이다.
Unity 2021.3.5f1 / XCode 13.4.1 / iOS 14.4
Create a new XCode Project
> Static Library
> Objective-C
선택 후 프로젝트를 생성한다.
프로젝트가 생성되면 코드를 대충 작성한다. 나는 디폴트로 생성된 LibTest.m
파일에 작성했지만 c 파일을 새로 생성해도 무관하다.
m 파일에서는 Objective-C 뿐만 아니라 C 코드를 작성해도 된다.
#import "LibTest.h"
@implementation LibTest
int LibTestFunc() {
return 999;
}
@end
암튼 Build
에 성공하면 Product
> Show Build Folder in Finder
> Products
> Debug-iphoneos
> libLibTest.a
파일이 존재하면 준비 끝!
유니티에서 샘플 프로젝트 대충 만들어주고 Plugins 폴더 하나 만들어서 해당 폴더에 라이브러리 파일을 넣어준다.
Plugin 클래스를 하나 만들어주고 다음과 같이 작성한다. 안드로이드와 다른 점은 [DllImport("__Internal")] 을 통해 라이브러리 내 함수를 사용한다는 것이다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Runtime.InteropServices;
public class LibTestPlugin
{
#if UNITY_IOS
[DllImport("__Internal")]
private static extern int LibTestFunc();
public static int TestFunc()
{
return LibTestFunc();
}
#endif
}
함수를 사용할 C# 클래스도 하나 만들어준다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using static LibTestPlugin;
public class NewBehaviourScript : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
Debug.Log(LibTestPlugin.TestFunc().ToString());
}
// Update is called once per frame
void Update()
{
}
}
컴포넌트를 추가한 뒤 빌드 후 실행시키면 로그에 999 가 찍히는 것을 볼 수 있다.