NativeCallProxy로 Unity에서 그랜드토토에게 메세지를 보내자
그랜드토토 앱에 Unity 통합하기 (1)에서 이어집니다.
그랜드토토에서 Unity한테 메세지를 보낼 때는 유니티에서 제공하는sendMessageToGOWithName메소드를사용합니다.하지만 Unity에서 그랜드토토한테 메세지를 보낼 때는 위와 같은 메소드가 없어서 조금 복잡한 방법을 사용해야합니다.
유니티 깃헙 Docs에도 이 방법이 나와있고 구글링해보면 다들 이 방법을 업계 표준처럼사용하는 것 같아보이더라구요,,
아래 두가지를참고해서 저도 따라해보겠습니다!
- Communicate with a Unity game embedded in a SwiftUI 그랜드토토 App
NativeCallProxy 이란 이름으로objective-c 파일을 만들어주세요
Next를 누르면 브릿징 헤더 만들겠냐고 물어보는데 만들겠다고 클릭해주세요
그럼 이렇게 두개의 파일이 생겼는데요
- NativeCallProxy.m
- 앱이름-Bridging-Header.h
그랜드토토 쪽에서는 mm 파일이 필요해서Renaming을 선택해주고 m을 하나 더 붙여줍니다.
그럼 NativeCallProxy.mm 파일로 바뀌게 됩니다.
그리고 NativeCallProxy.h 파일도 만들어줍니다.
그럼이렇게 세개의 파일 준비완료!
- NativeCallProxy.mm
- 앱이름-Bridging-Header.h
- NativeCallProxy.h
각각 아래와 같이 수정해주세요
브릿징 헤더.h
NativeCallProxy.mm
https://gist.github.com/dinotrnka/7b826a66f7784800551d5c140e1626e9#file-nativecallproxy-h
NativeCallProxy.h
https://gist.github.com/dinotrnka/7b826a66f7784800551d5c140e1626e9#file-nativecallproxy-h
이제 그랜드토토 Editor를 열고
Assets 아래에 Plugins 라는 폴더를 만들어주세요
Plugins 폴더를 열고Xcode에서 유니티에디터로 NativeCallProxy.h 와NativeCallProxy.mm 파일을 끌어와주세요.
그리고 NativeAPI라는 이름으로 스크립트를 만들어주고 아래 코드를 작성해줍니다.
https://gist.github.com/eunjin3786/cd562900b4e4bf95f235194c9cac4241
'그랜드토토에게 메세지' 라는 버튼을 만들고
버튼 클릭하면 그랜드토토에게 메세지를 보내도록 해줍니다.
https://gist.github.com/eunjin3786/bac37429fdbfd24f994076415e4083d6
그리고 그랜드토토 플랫폼으로 빌드해줍니다.
Xcode Workspace를 열어줍니다.
유니티에서 추가한 Plugins 폴더가 잘 exported 되었네요
NativeCallProxy.h 의 TargetMembership 부분에 가보면
header visibility 가 project로 되어있는데 public으로 바꿔주세요
그리고 아까 HostApp에추가한 이 두 파일은 그랜드토토 쪽에서 포함하고 있으니까더 이상 필요없습니다.지워주겠습니다.
그랜드토토Manager에 가서 다음과 같이 코드를 추가해주세요
(체크 표시한 부분과 extension 부분을 추가해주시면 됩니다)
https://gist.github.com/eunjin3786/0d7e47d89bbe41ce25ebddc09a9b0067
그리고 빌드해서 테스트해보면
유니티에서 보낸 메세지를 그랜드토토가잘 받는 것을 볼 수 있습니다.