facebook twitter hatena line email

「Unity/Native連携」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
 
(同じ利用者による、間の4版が非表示)
行3: 行3:
 
[[Unity/Native連携/Kotlin連携]]
 
[[Unity/Native連携/Kotlin連携]]
  
[[Unity/Native連携/iOS連携]]
+
[[Unity/Native連携/Swift連携]]
  
=iOS-Unity連携=
+
[[Unity/Native連携/Kotlinバックグランドアラーム]]
Unityに記述
+
<pre>
+
#if UNITY_IPHONE
+
using System.Runtime.InteropServices;
+
#endif
+
using UnityEngine;
+
  
public class ExampleClass : MonoBehaviour
+
[[Unity/Native連携/Kotlinバックグランド通知]]
{
+
#if UNITY_IPHONE
+
    [DllImport("__Internal")]
+
    private static extern bool _testStaticMethod(bool flag);
+
  
    [DllImport("__Internal")]
+
[[Unity/Native連携/Swiftバックグランド通知]]
    private static extern bool _testMethod(bool flag);
+
 
+
    [DllImport("__Internal")]
+
    private static extern void _testExecMethod();
+
#endif
+
    void Start()
+
    {
+
#if UNITY_IOS && !UNITY_EDITOR
+
        bool flag = _testMethod(true);
+
        bool flagstatic = _testStaticMethod(true);
+
        bool flagfalse = _testMethod(false);
+
        bool flagstaticfalse = _testStaticMethod(false);
+
        Debug.Log("flag=" + flag);
+
        Debug.Log("flagstatic=" + flagstatic);
+
        Debug.Log("flagfalse=" + flagfalse);
+
        Debug.Log("flagstaticfalse=" + flagstaticfalse);
+
        _testExecMethod();
+
#endif
+
    }
+
}
+
</pre>
+
 
+
Assets/Plugins/iOS/UnityRenkei.swiftを作成し、以下を貼り付ける。(xcode側では、Libraries/Plugins/iOS/にある。)
+
<pre>
+
import Foundation
+
 
+
@objc public class UnityRenkei: NSObject {
+
    @objc public static func teststatic(_ flag: Bool) -> Bool {
+
        return flag
+
    }
+
 
+
    @objc public func test(_ flag: Bool) -> Bool {
+
        return flag
+
    }
+
 
+
    @objc public func testexec() {
+
        print("testexec")
+
    }
+
}
+
</pre>
+
 
+
Assets/Plugins/iOS/UnityBridge.mmを作成し、以下を貼り付ける。(xcode側では、Libraries/Plugins/iOS/にある。)
+
<pre>
+
#import <UnityFramework/UnityFramework-Swift.h>
+
 
+
extern "C" {
+
    // Unityから呼び出せるSwiftメソッドのラッパー
+
    bool _testStaticMethod(bool flag) {
+
        bool result = [UnityRenkei teststatic:flag];  // Swiftのstaticメソッドを呼び出す
+
        NSLog(@"result: %d", result);
+
        return result;
+
    }
+
    bool _testMethod(bool flag) {
+
        UnityRenkei *renkei = [[UnityRenkei alloc] init];
+
        bool result = [renkei test:flag];  // Swiftのインスタンスメソッドを呼び出す
+
        NSLog(@"result: %d", result);
+
        return result;
+
    }
+
    void _testExecMethod() {
+
        UnityRenkei *renkei = [[UnityRenkei alloc] init];
+
        [renkei testexec];  // Swiftのインスタンスメソッドを呼び出す
+
    }
+
}
+
</pre>
+
 
+
==出力==
+
<pre>
+
flag=True
+
flagstatic=True
+
flagfalse=False
+
flagstaticfalse=False
+
testexec
+
</pre>
+
 
+
==参考==
+
https://qiita.com/ohbashunsuke/items/8f3b7c733fc70a180941
+

2024年9月11日 (水) 17:16時点における最新版

Unity/Native連携/Android連携

Unity/Native連携/Kotlin連携

Unity/Native連携/Swift連携

Unity/Native連携/Kotlinバックグランドアラーム

Unity/Native連携/Kotlinバックグランド通知

Unity/Native連携/Swiftバックグランド通知