アーカイブ

投稿者のアーカイブ

[Unity] UnityとiOSの連携を簡単に実現する方法

2012 年 1 月 30 日 onishi コメントはありません

こんにちは。京都事業部の大西です。

今回はUnityとiOS SDKの連携方法についてご紹介します。

連携の方法としてスタンダードなものは、
Objective-C、またはC++などで書かれたコードをプラグインとしてUnityに読み込むというものなんですが、
実は結構手間がかかるので、もっと簡単にサクッとできる実装方法を今回はご紹介しようと思います。

※ プラグインの作成方法は下記の記事がわかりやすいです。
iPhone/iPadのプラグインを作成する方法 – 強火で進め
 
 

UnityからiOSのプログラムを呼び出したい場合

 
今回実装に使用するのが、PlayerPrefsというUnityのクラスです。
これは、FlashでいうSharedObjectのようなもので、簡単なデータをローカルに保存することができるクラスとなっています。

PlayerPrefsの保存先は、書き出し先のプラットフォームにより異なるのですが、
iOSの場合では、iOS SDKに用意されているNSUserDefaultsと同じ場所に保存されるようになっています。

このNSUserDefaultsも同様にローカルにデータを保存するためのクラスなので、
UnityからはPlayerPrefsクラスを使って、iOSからはNSUserDefaultsを使って同一データに書き込むことができるようになっています。

NSUserDefaultsはObserverを指定することにより、書き込み状態を監視することができるので、
これを用いることで、UnityからiOSのプログラムを呼び出すことが可能になります。
 
下記はUnity側からUIAlertViewを呼び出す際のコードの例です。
 
UnityからiOSのプログラムを呼び出す
 
<Unity側のコード>

PlayerPrefs.SetString("test","value");

 
 
<iOS側のコード>

-(void)適当なメソッド{
        NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
        [defaults addObserver:self forKeyPath:@"test" options:0 context:nil];
}

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    if ([keyPath isEqualToString:@"test"]) {
        UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"test"
                                                      message:@"テスト"
                                                     delegate:nil
                                            cancelButtonTitle:nil
                                            otherButtonTitles:@"OK", nil];
        [alert show];
    }
}

 
この方法の注意点としては、大きなデータの受け渡しが難しいことと、
NSUserDefaultsに書き込むまでのラグが若干あるので、
シビアなタイミング要求される実装にはあまり向かないということが挙げられます。
 
 

iOSからUnityのプログラムを呼び出したい場合

 
iOSからUnityのプログラムを呼び出したい場合は非常にシンプルです。

UnityからiOS用にビルドすると、UnitySendMessageというメソッドが用意されているので、
それを用いることでUnityのプログラムを呼び出すことが可能です。

UnitySendMessage("GameObjectName1", "MethodName1", "Message to send");

第1引数に対象となるGameObjectの名前、第2引数に対象となるメソッドの名前、
第3引数にメソッドに渡したい引数を指定することが可能です。

・参考
Unity – Plugins – Pro/Mobile-Only Feature

カテゴリー: 開発メモ タグ:

kara-Sにて勉強会「3DエンジンUnityを触ってみよう」を開催しました。

2011 年 12 月 19 日 onishi コメントはありません

こんにちは。京都事業部の大西です。

先日、12/19(水)にkara-S スタジオスペースにて、
【クスール勉強会】3DエンジンUnityを触ってみようを開催致しました。

kara-Sにて勉強会「3DエンジンUnityを触ってみよう」を開催しました
当日は、30名以上の方に来ていただきありがとうございました。

内容としては、
・そもそも、Unityとは?
・ボウリングゲームを20分でライブコーディング
・UnityのGUIとEZ GUIについて
・案件で使ってみての感想
などをお話しさせていただきました。

当日発表した資料や、サンプル等は、
また後日このブログにてアップいたしますので、
是非そちらも見ていただければと思います。

3.5のRoadMapも出てき始め、これから益々目のはなせないUnityですが、
出来る限りこのブログでもいろいろな情報をお伝えできればと思っています。
Unity 3.5 Update

カテゴリー: イベント タグ:

京都精華大学出身のクリエイター検索サイト「SEIKA CREATORS BOARD」でフライヤーを作ってみました

2011 年 11 月 18 日 onishi コメントはありません

こんにちは。京都事業部の大西です。

今年の5月に弊社が制作した京都精華大学出身のクリエイター検索サイト「SEIKA CREATORS BOARD」

今回、京都で開催しているWeb制作講座「ほんきでFlash」、「ほんきでHTML」のフライヤーを制作する機会があったので、
「SEIKA CREATORS BOARD」を使って、フライヤーの制作をお願いすることにしました。

まずは、サイトのトップページへ。

SEIKA CREATORS BOARD グラフィックカテゴリから探すフリーワードでの検索と、作品カテゴリの検索と2種類の検索方法があるのですが、
今回は紙モノのデザインということが決まっていたので、「グラフィック」カテゴリから探すことにしました。

続きを読む…

カテゴリー: 日記 タグ:

[Unity] SVN(Subversion)を使って複数人開発を行う方法

2011 年 11 月 16 日 onishi コメントはありません

こんにちは。京都事業部の大西です。

今回はUnityのプロジェクトをSVNで共有する方法をご紹介します。
この方法を使うことで、複数人での開発を行うことが可能です。
(※ Unity Proライセンスが必須となります)

Unityはプロジェクトフォルダ内が多数のバイナリファイルとそれらを関連づけるファイルとで構成されているため、
普通に共有した場合にファイルが壊れてしまうケースが多々あります。

そこでUnity Proライセンスからサポートされる機能「External Version Control Support」を使用します。

まず、SVNで共有したいプロジェクトを開いた状態で、メニューの「Edit->Project Settings->Editor」を選択します。
[Unity + SVN]MenuからExternal Version Cntrol Supportの設定を開く

続きを読む…

カテゴリー: 開発メモ タグ:

cshool社内勉強会「デジクリの講師および授業について」を行いました

2010 年 4 月 19 日 onishi コメントはありません

こんにちは。大西です。

今年から数度にわたり続けている社内勉強会ですが、本日5回目となりました。

テーマは「デジクリの講師および授業について」。「デジクリ」というのは、弊社の松村、尾崎が教鞭をとっている、京都精華大学デザイン学部ビジュアルデザイン学科デジタルクリエイションコースのことです。

今回はデジクリを今年の3月に卒業したばかりの冨田くんに実際の作品を見せながらどんな授業があったかを解説してもらいました。
勉強会の様子をTogetterにまとめましたので、興味ある方は下記より御覧下さい。

Togetter – まとめ cshool社内勉強会 第5回 「デジクリの講師および授業について」

カテゴリー: 京都精華大学 タグ:
Get Adobe Flash playerPlugin by wpburn.com wordpress themes