Unity의 네이티브 코드를 Swift로 쓰려고 할 때
6243 단어 iOSSwiftObjective-CUnityC#
내용
Unity에서 일부 처리를 iOS의 네이티브 코드로 쓰고 싶을 때가 있을까 생각합니다.
또한 또한 iOS라면 Swift로 쓰고 싶다는 것도 있을까 생각합니다.
그 때 실제로 해보고 빠진 것을 적어 둡니다.
내 경우에는 Unity 애플리케이션에서 움직이는 웹캠이 아니라 iOS의 AVFoundation 라이브러리를 사용하여 카메라 모듈을 움직여 바코드를 읽고 싶을 때 여기를 Swift로 쓰면 ... .
네이티브 코드를 써보고 호출해 보자!
샘플 코드
먼저 C#상에서 외부의 파일을 호출하는 처리에 대해 설명합니다.
C#은 DllImport 속성을 지정하여 외부 dll을 읽을 수 있습니다.
extern 한정자 그래서 네이티브 코드의 메소드와 변수를 지정합니다.
아래는 네이티브 코드를 호출하기 위해 C#에서 설명한 클래스 파일입니다.
HogeClass.csusing UnityEngine;
using System.Runtime.InteropServices;
public class HogeClass {
[DllImport("__Internal")] // Unityで提供されているネイティブプラグイン
private static extern void hogeMethod_ (); // ネイティブコード上のメソッド
public static void hogeMethod () {
if (Application.platform != RuntimePlatform.OSXEditor) {
hogeMethod_ (); // ネイティブコード上のメソッドを呼び出す
}
}
}
그러나 C#에서 직접 Swift 코드를 읽을 수 없기 때문에
Objective-C에서 설명한 코드를 통해 Swift 코드를 읽으십시오.
HogeClass.mm#import <UIKit/UIKit.h>
#import <[Unityのプロジェクト名]-Swift.h>
extern "C"{
void hogeMethod_() {
[HogeClass hogeMethod]; // Swiftのメソッドを呼び出す
}
}
여기에
#import <[Unityのプロジェクト名]-Swift.h>
하지만
Objective-C Generated Interface Header Name
에 기재되어 있는 것을 지정해 주세요.
[Unity 프로젝트 이름] - Swift.h 생성 방법이지만
아래에 정리하여 기재합니다. (이번 제일은 빠진 곳입니다.)
드디어 Swift 코드의 기재입니다.
HogeClass.swiftimport UIKit
public class HogeClass: NSObject {
public class func hogeMethod() {
print("hoge") // Xcodeのコンソール上にhogeと表示させる
}
}
이것으로 Swift 코드를 읽는 코딩 완료입니다.
[Unity 프로젝트 이름] - Swift.h 생성 방법
Embedded Content Contains Swift Code라는 곳을 Yes로 하는 것으로 Swift의 코드가 헤더 파일로서 생성됩니다.
그리고 Objective-C에서 Swift를 부르려고하면
dyld: Library not loaded: @rpath/libswiftCore.dylib
Referenced from: /private/var/mobile/Containers/Bundle/Application/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/App-Name.app/App-Name
Reason: image not found
라는 오류가 나옵니다.
이것의 해결책으로서 Runpath Search Path에 @executable_path/Frameworks를 추가해 주는 것으로 Unity상에서 Objective-C를 경유하면서 Swift의 처리를 이동할 수 있게 됩니다.
참고 링크
KAKELOG/Unity iOS의 네이티브 플러그인을 Swift로 작성했습니다.
htp : // bg. 조각이 s. 이 m/2016/05/07/우니 ty-ㅇㅇft. HTML
Objective-c에서 Swift를 호출하는 방법
h tp : // 쿠이타. m / 쇼 007 / ms / b0c54d795d63fb84에서 72
Unity 스크립트에서 iOS 네이티브 플러그인과 상호 작용
ぃ tp // m / tyfk / ms / dc5, 219d22c55에서 301
Swift로 작성된 iOS 앱을 실제 디버그 실행시 "image not found"오류가 발생하는 경우
htp // 라이몬 49. 기주 b. 이오 / 2016/03/20 / 에로 r- 아 t ぃ ft - 아 p ぃ th - 이오 s에서 ゔぃ세. HTML
테라슈르 블로그/
Unity C#에서 네이티브 플러그인을 통과하지 않고 Objective-C 코드를 호출합니다.
htp // 츠바키 t1. 는 bぉ. jp/엔트리/2014/08/14/022012
Reference
이 문제에 관하여(Unity의 네이티브 코드를 Swift로 쓰려고 할 때), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/igara/items/68b4d3efd53c118339b3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
샘플 코드
먼저 C#상에서 외부의 파일을 호출하는 처리에 대해 설명합니다.
C#은 DllImport 속성을 지정하여 외부 dll을 읽을 수 있습니다.
extern 한정자 그래서 네이티브 코드의 메소드와 변수를 지정합니다.
아래는 네이티브 코드를 호출하기 위해 C#에서 설명한 클래스 파일입니다.
HogeClass.cs
using UnityEngine;
using System.Runtime.InteropServices;
public class HogeClass {
[DllImport("__Internal")] // Unityで提供されているネイティブプラグイン
private static extern void hogeMethod_ (); // ネイティブコード上のメソッド
public static void hogeMethod () {
if (Application.platform != RuntimePlatform.OSXEditor) {
hogeMethod_ (); // ネイティブコード上のメソッドを呼び出す
}
}
}
그러나 C#에서 직접 Swift 코드를 읽을 수 없기 때문에
Objective-C에서 설명한 코드를 통해 Swift 코드를 읽으십시오.
HogeClass.mm
#import <UIKit/UIKit.h>
#import <[Unityのプロジェクト名]-Swift.h>
extern "C"{
void hogeMethod_() {
[HogeClass hogeMethod]; // Swiftのメソッドを呼び出す
}
}
여기에
#import <[Unityのプロジェクト名]-Swift.h>
하지만
Objective-C Generated Interface Header Name
에 기재되어 있는 것을 지정해 주세요.
[Unity 프로젝트 이름] - Swift.h 생성 방법이지만
아래에 정리하여 기재합니다. (이번 제일은 빠진 곳입니다.)
드디어 Swift 코드의 기재입니다.
HogeClass.swift
import UIKit
public class HogeClass: NSObject {
public class func hogeMethod() {
print("hoge") // Xcodeのコンソール上にhogeと表示させる
}
}
이것으로 Swift 코드를 읽는 코딩 완료입니다.
[Unity 프로젝트 이름] - Swift.h 생성 방법
Embedded Content Contains Swift Code라는 곳을 Yes로 하는 것으로 Swift의 코드가 헤더 파일로서 생성됩니다.
그리고 Objective-C에서 Swift를 부르려고하면
dyld: Library not loaded: @rpath/libswiftCore.dylib
Referenced from: /private/var/mobile/Containers/Bundle/Application/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/App-Name.app/App-Name
Reason: image not found
라는 오류가 나옵니다.
이것의 해결책으로서 Runpath Search Path에 @executable_path/Frameworks를 추가해 주는 것으로 Unity상에서 Objective-C를 경유하면서 Swift의 처리를 이동할 수 있게 됩니다.
참고 링크
KAKELOG/Unity iOS의 네이티브 플러그인을 Swift로 작성했습니다.
htp : // bg. 조각이 s. 이 m/2016/05/07/우니 ty-ㅇㅇft. HTML
Objective-c에서 Swift를 호출하는 방법
h tp : // 쿠이타. m / 쇼 007 / ms / b0c54d795d63fb84에서 72
Unity 스크립트에서 iOS 네이티브 플러그인과 상호 작용
ぃ tp // m / tyfk / ms / dc5, 219d22c55에서 301
Swift로 작성된 iOS 앱을 실제 디버그 실행시 "image not found"오류가 발생하는 경우
htp // 라이몬 49. 기주 b. 이오 / 2016/03/20 / 에로 r- 아 t ぃ ft - 아 p ぃ th - 이오 s에서 ゔぃ세. HTML
테라슈르 블로그/
Unity C#에서 네이티브 플러그인을 통과하지 않고 Objective-C 코드를 호출합니다.
htp // 츠바키 t1. 는 bぉ. jp/엔트리/2014/08/14/022012
Reference
이 문제에 관하여(Unity의 네이티브 코드를 Swift로 쓰려고 할 때), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/igara/items/68b4d3efd53c118339b3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Unity의 네이티브 코드를 Swift로 쓰려고 할 때), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/igara/items/68b4d3efd53c118339b3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)