iOSアプリ・Webシステム開発のイリテク

HOME > Unity3D > Unityのプラグイン機能を使って、iOS側のネイティブコードを実行する方法
2012.11.21

Unityのプラグイン機能を使って、iOS側のネイティブコードを実行する方法

このエントリーをはてなブックマークに追加

UnityでiOS側の機能を使いたい場合、やり方がわからず苦労したのでそのメモです。例えばiOSの機能にあるWebView、アラート、もしくは自分で用意した関数などなど、Xcode側で実装したプログラムを動かせると自由度が大幅に上がります。

SPONSOR

Xcodeとの橋渡しをするCSファイルを作成

まずUnity側のPluginsフォルダ直下に.csファイルを作ります。このファイルがXcode内の関数との橋渡し役として使われるものになります。

using UnityEngine;
using System.Runtime.InteropServices;

public class Binding {
    [DllImport("__Internal")]
    private static extern void test_ ();

	public static void test () {
		if (Application.platform != RuntimePlatform.OSXEditor) {
        	test_();
		}
    }
}

Bindingというクラスを作ります。あとでUnity Script内からBinding.test()と呼び出しをすれば、好きな関数を実行することができます。実行するプログラムはまた別ファイルに記述します。なお、実機以外からはこの関数は呼び出さないため、Application.platformでチェックを入れています。

実行ファイルを作成

次にPluginsフォルダ内に「iOS」という名前のフォルダを作ります。この名前は決められていて、Androidの場合は「Android」というフォルダを作ります。この名前でPluginsフォルダ直下に作らないと読み込まれませんので注意。

ここで作るファイルは、拡張子を.mmとして作ります。

#import <Foundation/Foundation.h>

extern "C"{
    void test_() {
         NSLog(@"okokok");
    }
}

関数test_内に必要なプログラムを記述します。Xcodeで実行するのと同じように、Objective-Cで好きなように記述することができます。

ここで作ったファイルはビルドすると、Xcodeで開くと分かるように、Libraryフォルダに格納されます。

実行するタイミングを決める

実行するには、Unity Script内で呼び出しますが、これは好きなタイミングで設定してください。例えば、ゲーム起動直後に呼び出したい時はStart内に記述します。

function Start () {
	Binding.test();
}

(参考)[Unity][Unity3d]iPhone/iPadのプラグインを作成する方法(改訂版)

このエントリーをはてなブックマークに追加

記事を書いている人

イリテク(株)代表。Webシステム/iOSアプリの開発を行っています。
受託開発だけでなく、月額固定の専属エンジニアサービスおよび、 自社でクラウド見積請求書サービス CLOUD PAPERを運用中!
プロフィール

月額10万円で御社専属エンジニアを雇いませんか?

御社の顧問エンジニアとして、デザイン・システムに関わる様々なご相談をお受けします。企画・提案だけでなく、実際に手を動かして開発まで行います。また、システムにとどまらず、デザイン案件もお受けできるのが強みです。
顧問エンジニアサービス

イリテクの最新記事をフォロー

  • follow us in feedly
    RSSで最新記事を取得

SPONSER

コメントをどうぞ!

関連記事

SPONSOR

NEW ENTRIES
FACEBOOK
Twitter
開発したWebサービス
CATEGORY
RECRUIT
Webサービスを一緒に開発して頂けるPHPエンジニア募集!週1回のリモート勤務!