万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

WaitForSecondsではまった in Boo Unity

import System.Collections
    def Do() as IEnumerator:
        print('Do now')
        yield WaitForSeconds(2)
        print('Do 2 seconds later')

http://unity3d.com/support/documentation/ScriptReference/WaitForSeconds.html
Booはわざわざ「 as IEnumerator:」がいる。
このimport System.Collectionsも忘れないように!!!実行中にimportを抜けてたら上手く動いてたりするからわかりづらい
これに気がつかずはまった…
こんな違いなくして欲しいものだ。まあBoo使うなってことか?

Androidライセンス購入 Unity

iPhoneしかないけど買ったw
でもiPhoneライセンスも買うと高いから購入していない

■買うときにはまったこと
IDを入れる覧があった。
→これは既に買った人用だと思う。(Unity→About Unityの右下のLicense keyを入れても無理だった)
買った経験のない人は今のUnityを入れなおしなのかと思ったが、そうではなかった。

Android用のビルド

CE0051: Operator '/' cannot be used with a left hand side of type 'Object' and a right hand side of type 'int'.

型をしっかりやっておかないとエラーになる。
Objectへ/とか+=とかだめ。
JSであればvarとかきちんと型宣言しよう

function Hoge(x, y)
  hoge += x;

↑だめ

function Hoge(x:int, y:int)
  var hoge:int += x;  

↑こうする

ダックタイピングできないならUnityの恩恵はプログラミングでないな。
ぶっちゃけObjective-CとかJavaの敷居が下がってないよ。

音の流し方 Unity

こんな感じであったがよく分からない。

audio.Play();
audio.PlayOneShot(hoge);
audio.Play(hoge);

おそらく、↑はステージの音楽とかの再生用なの?
「ゲームオブジェクトへ音声ファイルをドラッグ」すればその音楽が再生できる。
しかし、このやりかたでは、「複数の音楽(・・というか音)」を再生させたいのに、
1つのゲームオブジェクトへ1つしか音声が追加できない・・。


キャラクターに音を載せたいときは
宣言にAudioClipでやって(AudioSourceでなく)

var hoge : AudioClip;
var bar : AudioClip;
if (x = 1) {
  AudioSource.PlayClipAtPoint(hoge, transform.position);
} else if (x = 2) {
  AudioSource.PlayClipAtPoint(bar, transform.position);
}

こんなかんじでやる