カテゴリー別アーカイブ: 開発メモ

Unity Developer カンファレンスの動画が公開


こんにちは、尾崎です。
先日、アムステルダムで開かれたUnityのDeveloper Conference「Unite 2012 – Amsterdam」の講演映像の一部が公開されています。

今回の講演の目玉は、なんといっても最新バージョン「Unity4」の新機能の紹介です。
リアルタイムレンダリングで、映像作品を作っていますね、すごい…。

以下は、公開されている動画です。


・Unityで作ったiPhone、Androidアプリ”みそだ教授の「おミソわけ」”をリリースしました!
http://cshool.co.jp/apps/misodajump/jp/

Unityに興味がわいた方、弊社では2ヶ月でゲームを作るUnity講座を開催しております。
【Unity講座 第3期】
–2012年9月 :22日,29日
–2012年10月:6日,13日,27日
–2012年11月:3日,10日,17日
[Unity講座] 講座詳細はこちらから >>

Sublime Textでファイルをタブで開く方法


前回、Sublime TextをUnityの外部エディタとして利用する方法を紹介しました。
1つだけ面倒なことに、ProjectパネルからScriptを選択するごとに、毎回新しいWindowが出てしまいます。
そこで、Sublime Textの設定を変更して、毎回タブで開くようにしましょう。

続きを読む

Unity でSublime Textを使う方法(Mac OSX)


こんにちは、尾崎です。
ちまたで流行のSublime TextをUnityで使う方法をメモしておきます。
Sublime Text: The text editor you'll fall in love with

Sublime Textとは、強力なテキストエディタです。
Mac OSX, Windows, Linuxと環境を選ばず使うことができます。

初期状態でも幅広い言語のサポートをしているうえに、プラグインなどにより、拡張もできるのでとても使いやすそうです。

導入を検討する上で、一番のメリットは日本語の記述が可能なことだと思います。
Mac環境限定ですが、MonoDevelopでも日本語化によって日本語表示はできるものの、
日本語を書くことはできないので、導入してみました。

ということで今回は、Unityの外部エディタとして、初期設定をしていきたいと思います。

続きを読む

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

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

今回は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

[Unity] EZ GUIについて(UIScrollListの使い方:その4)

こんにちは。松村です。

EZ GUIのUIScrollListの記事4回目です。
今回でUIScrollListの内容は終わりになるかと思います。(多分)

以前の記事はこちらです。

・その1(http://blog.cshool.jp/2011/11/4264.html
1.フォルダの整理
2.素材とUIScrollListの配置
3.カメラの設定

・その2(http://blog.cshool.jp/2011/11/4308.html
4.動的に配置するパーツの作成(Prefab)

・その3(http://blog.cshool.jp/2011/11/4340.html
5.メインロジックのプログラミング

今回はScrollList内アイテムにツイートを表示させます。
以下のような手順で書いていきます。
———————————————————
● 6.ツイートを表示するプログラミング
 6-1.GameObjectへのスクリプトの貼付け
 6-2.プロパティの設定
 6-3.JSONObjectの解析
 6-4.外部画像の貼付け
———————————————————

今回の完成形です

続きを読む

[Unity] EZ GUIについて(UIScrollListの使い方:その3)

こんにちは。松村です。

EZ GUIのUIScrollListの記事3回目です。

前回と前々回の記事はこちらです。

・その1(http://blog.cshool.jp/2011/11/4264.html
1.フォルダの整理
2.素材とUIScrollListの配置
3.カメラの設定

・その2(http://blog.cshool.jp/2011/11/4308.html
4.動的に配置するパーツの作成(Prefab)

今回はプログラミング部分でUIScrollList内にアイテムを表示させます。
以下のような手順で書いていきます。
———————————————————
● 5.メインロジックのプログラミング
  5-1.メインロジックのスクリプト作成
  5-2.他のGameObjectの参照方法
  5-3.ボタンからファンクションの呼び出し
  5-4.Tweeter APIのアクセス
  5-5.Prefabの動的配置
———————————————————

今回の完成形です

続きを読む

[Unity] EZ GUIについて(UIScrollListの使い方:その2)

こんにちは。松村です。

前回の続きでEZ GUIのUIScrollListの使い方について説明していきます。

前回(その1)の内容はこちら(http://blog.cshool.jp/2011/11/4264.html)で、以下のようなことを行いました。

1.フォルダの整理
2.素材とUIScrollListの配置
3.カメラの設定

今回はツイートを動的にUIScrollListに配置するためのPrefab作成方法を紹介します。

———————————————————
● 4.動的に配置するパーツの作成(Prefab)
 4-1.アイテムの作成
 4-2.画像の作成
 4-3.テキストエリアの作成
 4-4.TweetItemにUIListItemContainerを関連づける
 4-5.TweetItemをPrefabにする
 4-6.Prefabの編集
———————————————————

今回の完成形です

続きを読む

[Unity] EZ GUIについて(UIScrollListの使い方:その1)

こんにちは。松村です。

久々にUnity記事を書きます。今回はEZ GUIのUIScrollListを使って、
リスト表示をする方法を紹介します。
せっかくなので、以前に紹介した通信機能なども盛り込み、
Twitter search APIからツイートを取得してみました。

以前の記事はこちらになります。
Unity始めました
EZ GUIについて
EZ GUIについて(ボタン)
通信について(WWWとJSONObject)
通信について(外部画像の読み込み)
SVN(Subversion)を使って複数人開発を行う方法

さて、 UIScrollListなんですが以下のようなものを作りました。
黄色のボタンを押すと、Twitterのサーチ機能でタイムラインを取得しています。
(Unityというキーワードで検索しています。)

サンプルを見る
※ Unity Web Playerのインストールが必要になります

サンプルをダウンロードする(EZGUITweet.unitypackage)
※ EZ GUIのパッケージは含めていないので、コンパイルする場合はEZ GUIを購入してください。

iPhoneにインストールしてもスワイプでスクロールができて便利なのですが、
ここまで作るのは結構面倒です。

全部を説明するのは長くなるので、要点を書いていきます。
主に説明するところは以下のようなところです。
ちょっと長くなりそうなので、今日は1〜3までを書いていきます。
続きを読む

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

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

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

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

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

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

続きを読む

[Unity] 通信について(外部画像の読み込み)

こんにちは。松村です。

前回の外部テキストデータの通信方法に続き、今日が外部画像の読み込みについて紹介します。

● 1.データ通信
テキストデータと同じくWWWクラスをインスタンス化します。
var imgWWW:WWW = new WWW(“URL”);

● 2.データの受け取り&画像のはりつけ
まずはyieldで通信を待ち、そのあとは
WWWクラスのtexutureというところに画像データがあります。
そのテクスチャを貼付けたいGameObjectのテクスチャに指定します。

// 通信結果を待ちます
yield imgWWW;

// 今回はImageViewというGameObjectに貼付けます。
var imageView = GameObject.Find("ImageView");

// ImageViewのテクスチャにサーバからのデータを貼付けます。
imageView.gameObject.renderer.material.mainTexture = imgWWW.texture;

ということで、外部画像の取得は意外と簡単でした。
ただ、Unityでは画像が取得できない場合は「?」マークが自動的に出てしまうので、
実際の案件ではその処理などをいれないといけないですね。


・Unityで作ったiPhone、Androidアプリ”みそだ教授の「おミソわけ」”をリリースしました!
http://cshool.co.jp/apps/misodajump/jp/

・クスール学校事業部で3Dコンテンツの開発プロセスを基礎から学ぶ「Unity講座」やっています。
http://www.cshool.jp/course/unity/