baobao
9/1/2017 - 7:15 AM

UnityからSwiftを実行するサンプル

UnityからSwiftを実行するサンプル

#import <Foundation/Foundation.h>
// ここのimport名は`プロジェクト名-swift.h`
// BuildSettings -> Swift Compiler-General -> Objective-C Bridging Headerで確認可能
// Unityでビルドした場合、BundleIdentifierのトッドで区切った最後の要素名になる
// info.shibuya24.nativePluginであれば`nativePlugin`となる
// この名前に`-Swift.h`を加えた名前がimport名
#import "nativePlugin-Swift.h"

extern "C"
{
  void CallSwift_()
  {
    // swiftを実行
    // ※Objective-Cの書式で呼び出す必要あり
    TestSwift *sw = [[TestSwift alloc] init];
    NSLog([sw CallSwift]);
  }
}
import Foundation
// Unityで扱う場合はNSObjectを継承する必要がある
public class TestSwift : NSObject
{
  public func CallSwift()->String
  {
    return "HelloWorld"
  }
}
//このHeaderファイルが無いとダメ
using System.Runtime.InteropServices;

public class UnityToSwift
{
  #if !UNITY_EDITOR
  [DllImport("__Internal")]
  static extern void CallSwift_ ();
  #endif

  public static void CallSwift ()
  {
    #if !UNITY_EDITOR
    CallSwift_ ();
    #endif
  }
}