たぶん週刊「今週の進捗」

1週間に勉強したことや実装したことをネタに、週に1回(主に土日に)更新していく予定です。「多分」なので、臨時休刊があってもご海容ください。

東ゲ部の進捗

先週挙げた要修正箇所は以下の通りでした。

  • SEをつける
  • 連鎖数を数える機能を追加する
  • せり上がりが連鎖を組み立てるシステムと噛み合ってないので上から降ってくるようにする
  • タイムアタックモードを作る
  • チュートリアルを作る
  • 難易度調整で色数を変えられるようにする

まずは第一歩ということで、ブロックをクリックしたときの効果音をつけました。

unityroom.com

効果音の素材はこちらからお借りいたしました。

taira-komori.jpn.org

OnSortiePointClick() 内で効果音を鳴らす

備忘録として。

どのブロックがクリックされたかを OnSortiePointClick 関数で検知しているのだけれど、
ブロックの色を変える処理の前で <AudioSource>.Play() を実行すると
そこで「参照したAudioSourceがassignされてない」とかでエラーになる。

スクリプトをアタッチしたオブジェクトにちゃんと AudioSource も AudioClip もアタッチしてあるのに何故…?
と思いはしたが、関数内からオブジェクトを参照できないのかもしれない、
だったらオブジェクトを参照できれば解決するだろうと思って以下のようにしてみた。

    public void OnSortiePointClick(...)
    {
        // スクリプトがアタッチされているオブジェクトを探す
        GameObject tmp_game_object = GameObject.Find("object_name");

       // 探したオブジェクトにアタッチされている AudioSource を探す
        AudioSource tmp_audio_source = tmp_game_object.GetComponent<AudioSource>();

        // 略
 
        // クリックされたブロックの色を変える(Voidのときはそのまま)
        if ( /* ブロックがクリックされたときの処理 */ )
            tmp_source_sound_clicked.Play();

    }

これでOKだった(最適だったかは知らぬ)