カテゴリー別アーカイブ: 未分類

[VR]VR ZONE & GAME ON に行ってきた

VR ZONE

P_20160518_095950.jpg

VR ZONE は namco さんが出展しているDiverCityTokyoPlazaにある期間限定のブースです。中にはVRコンテンツが多数展示されていて、料金の違うコンテンツを600円〜700円程度支払って体験します。

入場するには予めネット上から予約を行って1時間半単位での入場時間を得ます。
公式サイト

入場時に首から下げる入場者用カードを手渡されます。
その後、バナパスポートというRFIDチップ入のカードを購入したり、入り口にあるチャージマシンで体験機で支払うバナコインを現金でチャージする必要があるので人数によっては数分の待ち時間を要します。

続きを読む

[Mac]Unityでゲーム開発するマシンに入れておいたほうが良いモノ、設定しておいたほうがいいコト

インストールしておくと幸せになれるアプリケーション

  • Unity3D
    Unityで開発するんだからUnity入れないと!
    フリー版でも十分に開発できる。
  • Xcode
    iPhoe用ビルド出力時やgitのインストールで必要になる。

  • FBX viewer
    デザイナから受け取ったデータを確認するのに必要。

  • Blender
    無料DCCツール。自前でAnimatorの使い方とかを勉強する際に使い方を覚えておくと便利。

続きを読む

SerializeFieldのデフォルトはnullであってnullでない

Unityのエディタ上でAssetを選択するとInspector上にD&Dで設定できるObjectFieldがある。
publicに指定したり、SerializeFieldなどのAttributeを記述するとInspector上に出現し、指定の型に合ったAssetの参照を関連付けすることができるおなじみの仕組み。

ここに何も指定していなかった場合の対応策として null合体演算子 という条件演算子がある。
これで判定して対応しようとすると上手く動かない。

続きを読む

ResportCrashWindow

ReportCrashを起動させない

Macでアプリケーションを操作しているとアプリケーションがクラッシュ(不正終了)することがある。

アプリケーションがクラッシュするとでてくるのが ReportCrash ウィンドウ。

このウィンドウは、ウィンドウ右下のボタンによって閉じ無いと Com + TAB でのアプリケーションの切り替えではでてこ無いし、プロセスにも残り続ける。

Activity Monitor にも上位にランクインするし、マシンも延々と熱くなるので厄介極まりない。

そのうえプロセス上からQuitしても消えてくれ無い。再起動が必要で、再起動後も残り続けることがある。

どうやらアプリケーション自体が巨大であればあるほど ReportCrash もマシンのリソースを奪うようだ。

この ReportCrash を起動させ無い方法がある。

続きを読む

4月中に気になった本まとめ

[wp_ad_camp_1]

スマートフォンのためのUIデザイン  ユーザー体験に大切なルールとパターン
池田 拓司
ソフトバンククリエイティブ
売り上げランキング: 6,718

UI大事。

今現在読んでる本

スラスラわかるC# (Beginner’s Best Guide to Programmin)
岩永 信之
翔泳社
売り上げランキング: 228,840

こないだ読み終わった本。尼の評価は低いけど、個人的には知らなかったC#の側面が分かってよかったなぁと。
Unityでは.NET 3.5だから.NET5の話とかは知る由もないわけで。Unity使ってる人は読んどくといいと思う。

WEB+DB PRESS Vol.74
WEB+DB PRESS Vol.74
posted with amazlet at 13.04.29
井上 誠一郎 奥野 幹也 田中 慎司 西嶋 悠貴 伊藤 直也 登尾 徳誠 天野 祐介 後藤 秀宣 ヒノケン 近藤 宇智朗 近藤 嘉雪 渡邊 恵太 堤 智代 中島 聡 A-Listers はまちや2 川添 貴生
技術評論社
売り上げランキング: 356

通勤用に。

ゲームの作り方  Unityで覚える遊びのアルゴリズム
加藤 政樹
ソフトバンククリエイティブ
売り上げランキング: 5,883

あんまり目新しい事は書いてないけど、こういうときの実装はこうしたら良いよ、のサンプルが多いので経験値稼ぎとして良い本だと思う。

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
Dustin Boswell Trevor Foucher
オライリージャパン
売り上げランキング: 2,055

再読した。

[Unity][C#]StopCoroutineが動かない

Coroutineの挙動が不信だったので調べてみたのでメモ。

当初の状況

あれ?yield return www;してるからwwwインスタンスがデータ取得してからでないと次進まないはず

にも関わらずwww.textよめねーぞって怒られる。なんでだ…?

Reset()もできずハマる。

今回の問題点と目的

  1. coroutineはStopCortoutineした後に同じメソッドをStartCoroutineするとStopしたところから再開するんじゃ?疑惑の解消
  2. Start/Stopの動きを先ず確認
  3. 進む原因は?

ダメなソース

using UnityEngine;
using System.Collections;

public class coroutine : MonoBehaviour {
	
	// Use this for initialization
	IEnumerator Start () {
		
		StartCoroutine(Test());
		Debug.Log("StartCoroutine 1");
		
		yield return new WaitForSeconds(2f);
		
		StopCoroutine("Test");
		Debug.Log("StopCoroutine");
		
		
		yield return new WaitForSeconds(2f);
		
		StartCoroutine(Test());
		Debug.Log("StartCoroutine 2");
		
	}
	
	IEnumerator Test() {
		
		Debug.Log("Test Start");
		
		yield return new WaitForSeconds(1f);
		Debug.Log("1 second");
		yield return new WaitForSeconds(1f);
		Debug.Log("2 second");
		yield return new WaitForSeconds(1f);
		Debug.Log("3 second");
		yield return new WaitForSeconds(1f);
		Debug.Log("4 second");
		yield return new WaitForSeconds(1f);
		Debug.Log("5 second");
		
		
		Debug.Log("Test End");
		
	}
	
	
	// Update is called once per frame
	void Update () {
	
	}
}

結果

コンソールにはこんな表示が。
StopCoroutine doesnt work

StopCoroutine()した後も元気に走り続けるTest()の姿が!

原因は、文字列ではなくハンドラを直接StartCoroutine()に渡していた事。
StopCoroutine()は文字列で受取った指定のCoroutineしか参照できず、あたかも処理を完遂したかの様にエラーも出さなきゃ警告も出ない。

修正

using UnityEngine;
using System.Collections;
using System.Collections.Generic;


public class coroutine : MonoBehaviour {
	
	// Use this for initialization
	IEnumerator Start () {
		
		StartCoroutine("Test");
		Debug.Log("StartCoroutine 1");
		
		yield return new WaitForSeconds(2f);
		
		StopCoroutine("Test");
		Debug.Log("StopCoroutine");
		
		
		yield return new WaitForSeconds(2f);
		
		StartCoroutine("Test");
		Debug.Log("StartCoroutine 2");
		
	}
	
	IEnumerator Test() {
		
		Debug.Log("Test Start");
		
		yield return new WaitForSeconds(1f);
		Debug.Log("1 second");
		yield return new WaitForSeconds(1f);
		Debug.Log("2 second");
		yield return new WaitForSeconds(1f);
		Debug.Log("3 second");
		yield return new WaitForSeconds(1f);
		Debug.Log("4 second");
		yield return new WaitForSeconds(1f);
		Debug.Log("5 second");
		
		
		Debug.Log("Test End");
		
	}
	
	
	// Update is called once per frame
	void Update () {
	
	}
}

これだと以下のように動く。

StopCoroutine work

ちゃんとStopCoroutineで止まってくれた。

そして疑惑だった途中再開もされていない。文字列で指定すればStopCoroutine()もちゃんと機能するということも分かった。

おまけ

  • Startが今回のサンプルの様にIEnumeratorを返すタイプなのにStopAllCoroutines()をするとStartまで止めてしまうので注意。
  • Resetは必要無い。
  • IEnumeratorにparameterを渡す場合は第二引数に入れて上げれば機能する。

参考

C#本

[iOS]Json形式のテキストを読み込んでNSDictionaryにする

このメモはSBJson frameworksに関するもの。
記述時点での正式リリースバージョン3.0.4
参考:http://stig.github.com/json-framework/api/3.0/
ARC適用する場合は3.1α以降でなければ動作しない。
http://ip7.biz/wordpress/?p=1008

導入手順

  1. ターミナルを立ち上げる
  2. gitから入手すべく以下を入力してENTER
    • git clone git://github.com/stig/json-framework.git
  3. DLしたファイルを解凍し、解凍したファイル下のClassフォルダ内のファイルを自分のプロジェクトフォルダにD&Dしてコピーする。
    • もしビルドが通らないのであれば、、Build Phases のCompile SourcesにSBJon関連全ファイル(.m,.h)を追加することでBuildを通す事が出来る。
    • この時のエラーメッセージ
      _OBJC_CLASS_$_SBJsonParser", referenced from:
  4. Json形式のファイルを扱うクラス(.m)内で以下を記述
    • #import 
  5. JSON形式のファイルを扱うクラスヘッダ内で以下を記述
    • @class SBJsonStreamParser;
    • @class SBJsonStreamParserAdapter;

テキストファイルから読み込むんでデータ化

テキストファイルから読み込む

        //read file
        NSString* fileName  = [NSString stringWithFormat:@"dummyData"];
        NSString* path      = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Documents"];
        path = [path stringByAppendingPathComponent:fileName];
        NSData* data = [NSData dataWithContentsOfFile:path];

読めてなかったら強制終了

if(data == nil) abort();

データを文字列にエンコード

        //Data encode to NSString.
        NSString* dataStr = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
        NSLog(@"data = %@",dataStr);

SBJsonでパースする

        //SBJson parse to NSDictionary.
        SBJsonParser* sbjsonparser =[[SBJsonParser alloc]init];
        NSError* error;
        error = nil;
        NSDictionary* dic = [sbjsonparser objectWithString:dataStr error:&error];
        NSLog(@"JSON dictionary=%@", [dic description]);

テスト

読み込んだテキストファイルの中身

{
"buttonArray":[
    {
      "word":"キウイ",
      "imgPath":"greenButtons_0000s_0003.png"
    },
    {
      "word":"うみがめ",
      "imgPath":"redButtons_0000s_0003.png"
    }
    ]
}

動作確認した際に出た文字列

CoreData[39477:fb03] JSON dictionary={
    buttonArray =     (
                {
            imgPath = "babylogButtons_0000s_0003.png";
            word = "U30adU30a6U30a4";
        },
                {
            imgPath = "babylogButtons_0000s_0003.png";
            word = "U3044U3061U3054";
        }
    );
}

JavaScript本格入門 ~モダンスタイルによる基礎からAjax・jQueryまで

[Blender]事始めのチュートリアル動画まとめ

Blenderを触り始めたものの、どうも操作周りが気持ち悪くて色々調べてたらビデオチュートリアル(日本語)を発見した。

1:Blender入門講座|導入編|Macユーザの方へ

/tmp/というディレクトリ指定は全部//(CurrentDirectory)に変更しましょう。という話。

File -> Save User Settings (Ctrl + S)

これでユーザ設定として保存されるので次回起動以降も設定が保持され、毎度設定しなくてもよくなる。

2:Blender入門講座|導入編|初心者の方へ-1 キー操作

よく分け分からなくなる原因になるキー

Tabキー

EditModeに切り替わるキー。
他のObjectを選択できなくなる。
TabkeyによるEditModeとObjectModeの変更に気をつける。

/キー

他のものが消えてなくなる。
ローカルモード。
もう一度押すと戻る。

Hキー

触ると選択中の物体を消す。
Hideの意。
Alt + Hで戻る。
EditModeでもMeshの一部を選択してHキーを押すと選択部分だけ消える。

Zキー

画面のプレビューモードの切り換え。
Zを押すとワイヤーフレームモード(面非表示)に切り替わる。
もう一度押すとソリッドモード(面表示)に戻る。

トラックパッド

動画では解説されてないので補足。
トラックパッドで二本指で上下にスワイプ(ドラッグではなくスワイプ。シャー!シャー!って勢いつけるやつ)をするとカメラが拡大縮小をする。
この操作は何故か微調整できない。というかする方法が分からない。
そしてAnimationのタイムフレームまでも一緒に移動するし、仕様がコンフリクトしてるまま実装したとしか思えない様な有様…。どうしてこうなった。回避策は?!

※この後で判明するんだけど、上下スワイプはマウスホイール回転と同じ判定だった。

3:Blender入門講座|基礎編|ユーザーセッティング

ユーザセッティング保存まわりに関する注意等。

変なユーザセッティングをしてしまった場合は初期設定に戻す。
File -> Load Factory Settings
を選択すると工場出荷時に戻されるので再度保存しておきましょう。

4:Blender入門講座|導入編|ノートPCの方へ

Ten-keyが無い人/マウスの中ボタン無い人用の設定。

動画では10キーの設定だけだったので捕捉。
3ButtonMouseエミュレート時の内容は以下の通り。

[TABLE=2]

いずれにせよマウスがボタン式でないとやりずらいし、上で書いた様に不具合的な動きをするのでやってられなくなる。

Save as Defaultをクリックして設定を初期設定として保存しておく。

5:Viewまわりの操作 キーボード操作編

ten key で操作。

1:X軸から
3:Y軸から
5:perspective / 平行投影
0:でカメラビュー。
+拡大
-縮小

Home:全体が見える位置に戻る。

マウスの”位置”でアクティブなウィンドウが切り替わる。
マウスカーソルがへんな範囲は行ってると変更がかからない。

6:Viewまわりの操作 マウス操作編

マウスのボタンは3つ必要、という話。

マウス操作は中スクロールができないとダメ。
Homeキーはフルキーボードにしか付いてないのでBlenderそのものがフルキーボード操作向き。
家にはiMacでワイヤレスのアルミキーボード+マジックトラックパッドで外ではMBAという僕の環境には合致するポイントが一切無い操作系です。本当にありがとうございました。

最後に

横にあったWinに接続していたMX518を引っこ抜いてMBAに接続してみると…

あり得ない程快適に…。いいじゃんBlender!ぬるぬるじゃん!

結論:素直にマウスを買いましょう。

そしてもう一個MX518を購入しようと思ったらもう作られてない。
なので後継機と言われているこの機種を購入する。


ついでに書籍のリンクを張る。

iOS5.1 + XCode4.3.1 + Unity3.5 で実機テスト不可?【3月12,16日追記】回避策あり

実機では動かない。
詳しくは調べてないけど現象としては動かない。

★3月16日追記

回避策としてXcodeをDownGradeして4.3にすると実機確認できるようになります。

https://developer.apple.com/downloads/index.action

また、4.3だとiPadがiOS5.1βまでしか対応しておらず、必然的に非プロUnityはiPad版をビルドする事ができなくなります。

なのでiOSをおいそれとアップグレードするとチェックできなくなるどころかりいrースできなくなるので注意です。

とはいえ、今日は新iPadの発売日。Unity非Proユーザが初iOS向けアプリとして新デバイスを用いようと購入した場合は残念な結果が待ってますね。

★3月12日追記

現状でも相変わらず原因特定には至って居らず、iOSデバイス実機上での確認は出来ていない。

コンパイル後の動作で出ているメッセージはSplashScreenを消す権限は無いよ、との事。

しかし件の部分は差し替えを行っておらず、デフォルトのまま。

■仮説1:3.4以前のUnityProjectデータをUnity3.5がコンバートした際に壊れたのでは?

検証:ならば3.5でゼロから作って試す。

試したのはgameObjectが回転するスクリプトを搭載したキューブを写すカメラがあるだけのシーン。

Unity3.5でビルド -> Xcode4.3.1でビルド- > 実機iOS5.1へ。

Xcodeでのビルド、転送ともに上手く行くものの起動直後(UnityのSplashScreenは出る)のタイミングで停止。

abort()がかかったような挙動。

停止時のメッセージは”You are using Unity iPhone Basic. You are not allowed to remove the Unity splash screen from your game”と。

■仮説1の結論

Unity3.5が行ったコンバートに問題があるわけではない、ということは分かった。

コンバートしてないUnity3.5自体が生成したプロジェクトもiOS5.1実機では動作不能。

■仮説2:iOS5.0ならどうなの?

iOSは5.1にアップグレードされたばかりだし様々な問題により実機で動作でいなくなってしまったのでは?

■仮説2の結論

iOS5.0でも全く同じ挙動でメッセージも同じ。

他にもXcodeをダウングレードさせる方法なども試したものの、iOS向けUnityPro使えばいけるよーという話しか見当たらず現在にいたる。

FBでも質問を立てさせて頂いたが同様の事例は1件だけで他の方々はProを使ってるからなのか起こらないみたい。

■仮説3SplashScreenが何かしらの理由により消滅したのでは?

■仮説3の結論

正常に起動するXcodeProjectファイルを解析してみないと何とも言えない…。

で、件のメッセージの2センテンス目をグーグル先生に聞いてみると似た様な現象がちらほら。

http://answers.unity3d.com/questions/26826/tracking-down-a-sigabrt-on-startup.html

ページ中央らへん。つい先日にも投稿が。

以下に似た様な事例が…。

http://answers.unity3d.com/questions/226257/35-free-version-so-not-work-on-my-iphone.html

こっちも同様。

”おれ、Splash Screen変えてないのに、でも同じメッセージでとまっちゃうんだよなぁ。”

”2ヶ月前にプロ版をお試し1ヶ月やってみた時のコードはちゃんと動くんだぜ”

と。

プロ版で出力する分には大丈夫なことはどうやら確定。

でもUnity3.5だったのか前のバージョンだったのかは分からない。

2ヶ月前は出てなかった。

3.5は2月15日にプレスリリースされている。

いずれにせよこの質問に対して回答が一つも無い。

よくみたら6時間前に投稿されたばかりだ。

http://answers.unity3d.com/questions/225504/ios-splash-screen-error.html

二つ目のリンク、回答というか解決がなされた訳ではないもののレスが一つ。

読んでみるとRetinaディスプレイ向けのSplashScreenがUnityからは吐出されない模様。

それが前述のメッセージの原因になってたので既にUnityにメールしたよーって書いてある。

なんと!

ということはUnity3.5ではXcode4.3のプロジェクト構成に対応しきれてなかったということか。

とはいえ、これも予測の域を出ず、Unityオフィシャル側からのメールの返答は未だ無い模様。

※このレス投稿者がメール着たらまた書き込むよ、と書いてるがまだ追加の投稿が無い。

とりあえずこれは放置するしかない問題だということか。

最後に発見。(FB助け合い所で質問したら指摘を頂いた)

http://forum.unity3d.com/threads/126905-Xcode-4.3.1-iOS-SDK-5.1-Known-Issues-(postpone-upgrade)

Xcode4.3.1では無理だよーって確定、オフィシャルが言ってた残念。

ちなみにこのリンクに記述されているBack IssueはDLできませんでした。