SublimetextのBeautifyRubyでrbやerb保存時にエラー

Sublimetext2のRubyパッケージであるBeautifyRubyをインストールしました。

が、rbファイルを保存する時に下記のようなエラーがポップアップ…

Error: invalid output. Check your ruby interpreter settings

色々調べてみたところ、Sublime text 2 -> Preferences -> Package Setting -> BeautifyRuby -> Settings Defaultで表示される設定ファイルに下記を記入したら動きました。

"ruby": "~/.rvm/bin/rvm-auto-ruby",

これは私がrvm使ってるからこう書いているのですが、個別にインストールしている場合はrubyコマンドのパスを書けば大丈夫ぽい。

さて、これで解決!と思っていたらerbファイル保存時にも同じ問題が起こりました。

どうやらこちらは、htmlbeautifierというgemをインストールしたらおさまりました。

参考にしたURLはこちら。
https://github.com/CraigWilliams/BeautifyRuby/issues/30

Unityで音を再生する

オブジェクトに対してマウス押下時再生するコード

using UnityEngine;
using System.Collections;

public class HogeScript : MonoBehaviour {

	private AudioSource a1;
	
	void OnMouseDown () {
        // sampleというパスはAssets配下のResourcesというフォルダからの相対パス
		AudioClip audio = Resources.Load("sample",typeof(AudioClip)) as AudioClip;
		a1 = gameObject.AddComponent<AudioSource> ();
		a1.clip = audio;
		a1.Play();
	}
}

JavascriptかC#か?

海外向けの書籍にはjavascriptで書かれているものも多いですが、個人的にはC#じゃないかと思います。
理由は、Unityのjavascriptjavascriptではなく、javascriptにかなり似た独自の言語だからです。
また、その言語仕様について断片的なまとめは存在するものの、包括的なドキュメントも無いので結構厄介です。

例えば下記のコード

var hoge1 = obj.prop;
var hoge2 = obj["prop"];
通常のjavascriptだとhoge1もhoge2も同じになるのですが、C#のjsだとhoge2の書き方が許可されておらず、エラーになります。 その他にもダックタイピングが使えないとかthisの使い方がおかしいとか、諸々特殊なところが多いです。下記のサイトたちによくまとまっています。 javascriptの大きなメリットはコードの記述量がC#のような静的型付け言語に比べると少なくなるところですが、それもUnityの場合はほぼありません。実際チュートリアルC#のコードをjavascriptで書いてみるとほぼ同じような書き方になります。というかそれしかできない。
こんな謎の言語仕様を勉強するよりC#で素直に書いた方が、自動補完も効くしむしろ早いと思いました。

cocos2d-xでiPhone5実機テストの際にリンクエラーでコケる

cocos2d-xのサンプルプロジェクト(cocosDragonJSとか)をiOSの実機で動かそうとしたところ、cocos2dライブラリがことごとくリンクエラーになってしまい起動できない事態になりました。

よくよく見ると、対象プロジェクトとその中に入っているcocos2dx.xcodeprojプロジェクトのBuild Settingが異なっていたようでした。

Xcode5のProject NavigatorでプロジェクトRootを選択し、Build SettingのArchitectureを見るとcocos2dライブラリとサンプルプロジェクトの設定が異なっていたので、サンプルプロジェクトの方に合わせました。下記にサンプルプロジェクト側の設定を載せます。
f:id:bildart:20131019165605p:plain
私の時は、cocos2d側のBuild SettingでArchitectures、Build Active Atchitecture Only、Valid Architecturesの項目が異なっていたのでそこを修正しました。これで再度Buildしたらめでたく動きました。

第2世代iPadでテストしてた時は何の問題も無かったのですが…