レッスン 4

目次

Wwise-Type Eventプロパティを作成する

最初にUnityでスクリプトを作成し、Wwise-Type Eventクラスの変数を作成します。変数とは、スクリプトに情報を格納してInspectorで公開する方法で、Unityエディタで、その値を簡単に設定できます。これを実現させるために、新しいスクリプトを作成してそのコンテンツを編集し、コードを1行追加していきます。コードエディタを使うのが初めてでも大丈夫です、コードやコードエディタの使い方も同時にみていきます。

  1. Unityで Audiokinetic > Certification > 301 > Lesson 4 を選択し、 Posting Events using Wwise-Types を選択します。

  2. Hierarchyで Player ゲームオブジェクトを選択します。

    ここで、今までのように既存コンポーネントを追加するのではなく、自分で作成します。

  3. Inspectorで Add Component をクリックし、 New Script を選択します。

    New Script を選択すると、スクリプト名を自由に変更できます。スクリプトの名前をあとから変更するのはやや複雑なので、スペルミスがないように注意してください。このスクリプトは再利用するので、本技能検定のスニピットと、あなたのスクリプトを、比較できるようにしておくといいかもしれません。スクリプトを書くのにC Sharpを使いますが、Languageプロパティを変えないように気をつけてください。

  4. PostWwiseEvent と入力し、 Create and Add をクリックします。

    Inspectorに、今作成した、PostWwiseEventコンポーネントが表示されます。このスクリプトはあなたのプロジェクトに自動的に保存され、Projectウィンドウでアクセスできるほか、ダブルクリックしてもアクセスできます。

    [注釈]

    Unityであなたのスクリプトをプロジェクトに完全にインテグレートするのに時間がかかるかもしれないので、チェックボックスの横に、あなたの新スクリプトの名前が確かに表示されるまで待ってください。

  5. Scriptプロパティの、 PostWwiseEvent 部分をダブルクリックします。

    Unity Installationで一緒に入ってくるコードエディタVisual Studio(Macの場合はMonoDevelop)がここで開き、スクリプトの中身が、新しいタブに表示されるはずです。Visual StudioやMonoDevelopは一見、ベーシックなテキストエディタに非常に似ていて変更もテキスト入力で行いますが、Unityスクリプトの中身などコードの編集専用のエディタです。分かりやすいように各行に番号がふられ、シンタックスハイライトでテキストが表示されるので、コードのカテゴリ(クラス、ファンクション、プロパティなど)によってテキストが色分けされます。また、コードを書いているとファンクション名やプロパティ名を予測入力して助けてくれるほか、エラーのあるコードは赤線で示してくれます。

    [注釈]

    Visual Studio(Macの場合はMonoDevelop)は、Unity Installationに入っています。不用なコードエディタが開いたり、コードエディタが開かなかったりした場合は、 Unity menu > Edit > Preferences > External Tools を選択し、自分の好きなコードエディタを選択してください。もしまだインストールしていなければ、 はじめに の章のUnityのインストール手順を参照してください。

    それでは、デフォルトのスクリプトを見てください。スクリプトは空ではなく、中身が少し入っています。

    上図のスクリーンショットはコードエディタに表示されたスクリプトですが、本コースでは、スクリプトを主に下図ようのな形式で表示します。

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
        
    public class PostWwiseEvent : MonoBehaviour {
        
        // Use this for initialization.
        void Start () {
        
        }
    
        // Update is called once per frame.
        void Update () {
        
        }
    }

    [注釈]

    利便性のために、この技能検定に記載されたスクリプトは、あなたが作成するスクリプトにコピー&ペーストできるようになっています。もし誤ってスクリプトを削除したり、演習を飛ばしてしまったり、何らかの問題であなたのスクリプトがうまく動かなければ、あなたのコードエディタのテキストをすべて削除してから、後述のリファレンススクリプトから、関連性のあるスクリプトをコピーし、コードエディタにペーストすることができます。

    それでは、このスクリプトの各パートをみていきます。

    • Namespaces: スクリプトの最上部にあるのは、最初に 'using' とあるライン数行です。このキーワードはnamespace、つまりクラスのコレクションを意味し、スクリプトを書きやすくしてくれます。

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

    • Class : namespacesの下に、 MonoBehaviour と設定されたクラスがあります。これは、あなたが使うすべての変数、プロパティ、ファンクションのための、入れ物です。このクラスで宣言されるものをすべて、最初の波括弧 '{' と終わりの波括弧 '}' の間に入れ、スクリプトのどの部分が範囲かをクラスが分かるようにします。

      public class PostWwiseEvent : MonoBehaviour {
          // Use this for initialization.
          void Start () {
          
          }
          
          // Update is called once per frame.
          void Update () {
          
          }
      }

      スクリプトをSceneに追加した時に、スクリプトのname classの中で宣言した内容が使えます。見える変数は、すべてスクリプト名の下に表示されます。

    • Functions: クラスの中に、Start() と Update() の2つのファンクションがあります。これらはコードのカプセル化される部分で、Unity、またはほかのスクリプトからコールされます。Start() はScene実行時にコールされます。UpdateはStart() がコールされたあとに、ゲーム実行中に、フレームごとにコールされます。

      ファンクション名の前にリターンタイプがありますが、この技能検定では最後まで、これを void のままにし、何もリターンされないようにします。

          // Use this for initialization.
          void Start () {
      
          }
          // Update is called once per frame.
          void Update () {
          
          }

      各ファンクションの上に、ダブルスラッシュ '//' で始まるテキストが1行あります。これはシングルラインコメントと呼ばれ、開発者がそのプロパティやファンクションなどについてのコメントや概要を追加するために使いますが、Unityはこの '//' 記号の右のテキストをすべて無視します。

    [注釈]

    始め波括弧 '{' は、クラス名またはファンクション名と同じ行にあります。これは単に本技能検定で使うコーディングスタイルで、スクリプトのスニピット長さを短くするためですが、スクリプトに特に得響しません。

    Inspectorで使えるようにプロパティを公開するには、そのプロパティをPostWwiseEventクラスに追加する必要があります。つまり、コードでは、クラスの始めと終わりの波括弧の間に入れなければなりませんが、同時に、Start() と Update() の両ファンクションの外になければなりません。

    [注釈]

    この技能検定の教材以外に、Unityの初心者用のプログラミング入門である Learning C# in unity for beginners も確認してみてください。

    さて、あなたがスクリプトに追加するのは、何だと思いますか?ここで、あなたのEventの情報が入ったプロパティを、作成します。プロパティ宣言を構成するのは、access modifier(アクセス修飾子)、プロパティタイプ、そしてあなたがアサインする名前の3つです。

    Access Modifierは、このプロパティをスクリプト外でも見せるかどうかを示します。Unityがこのプロパティを認識し、Inspectorに追加してもらいたいので、public(公開)とする必要があります。

    [注釈]

    Visual Studioを使っていると、文字列の下にドロップダウンメニューが表示され、何を入力すべきかをエディタが提案してくれることに気づきます。これは IntelliSense と呼ばれるものです。この機能はすべてのコードエディタにあるわけではないので、スクリプトを作成するにあたり、ドロップダウンメニューでなく、自分でテキスト入力する必要があるかもしれません。

  6. PostWwiseEvent : MonoBehaviour クラスの中の、ファンクション外の空白の行を選択し、 public と入力します。

    [注釈]

    この技能検定では、以下のように、スクリプトの変更すべき箇所を、オレンジ色の文字で示しています。

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
        
    public class PostWwiseEvent : MonoBehaviour {
        public 
        // Use this for initialization.
        void Start () {
        
        }
        
        // Update is called once per frame.
        void Update () {
        
        }
    }

    今回は、プロパティを 'Event' Wwise-Type クラスにする必要があります。どのWwise-Typeクラスも、'AK.Wwise.' と書き、そのあとにクラスのタイプ(Event、RTPC、Stateなど)を続けると、取得できます。そこでWwise-Type Eventクラスを宣言するために、 'AK.Wwise.Event' と書きます。

  7. public のあとに半角スペースを1つ入れてから、 AK.Wwise.Event と続けます。

    public class PostWwiseEvent : MonoBehaviour {
        public AK.Wwise.Event 
        // Use this for initialization.
        public void Start () {
        
        }

    これでプロパティタイプを宣言できましたが、内容が分かるように、Inspectorで表示するプロパティ名を提示する必要があります。

    [注釈]

    プロパティ名は、あなたがこれから選択するWwiseプロジェクトの中の、特定Eventに関連する名前にする必要はありません。property drawerで見せるラベルのようなものなので、サウンドデザイナーに、どのようなタイプのWwiseオブジェクトが該当するのかを伝えます。例えば、Wwise Eventの名前は、そのサウンドを表すもの(例 Enemy_Explosion、つまり敵の爆発)にして、ゲーム内では、そのサウンドがいつ再生されるのかを表すもの(例 EnemyDeath、つまり敵の死亡)にすれば、いつ、そのサウンドをコールするのかが、レベルデザイナーに分かります。

  8. Ak.Wwise.Event のあとに半角スペースを1つ追加し、 MyEvent と書きます。

    public class PostWwiseEvent : MonoBehaviour {
        public AK.Wwise.Event MyEvent

    最後に、とても重要な点ですが、このようなプログラミング言語(C#)では、行の終わりをセミコロン(;)で宣言します。文の終わりがあれば、コードエディタがあなたのコードの始まりと終わりを認識できます。つまり、セミコロンが不足するとコードエディタがエラーの場所を検知できないかもしれないので、場合によって、誤ったヘルプメッセージが表示されることもあります。妙なヘルプメッセージが出たり、コードに赤線がひかれたりしたら、あなたのスクリプトのどこかでセミコロン、または波括弧が、不足しているのかもしれません。

  9. AK.Wwise.Event MyEvent のあとに セミコロン(;) を追加します。

    public class PostWwiseEvent : MonoBehaviour {
        public AK.Wwise.Event MyEvent;

    以上で、あなたの初めてのプロパティ、 'MyEvent' という公開されたEventプロパティを作成できました。ただしスクリプトに対する変更点を保存するまで、Unityはそれを認識しません。

  10. Windowsでは CTRL+S 、Macでは CMD+S を押し、 スクリプトを保存 します。

[ヒント]

コードエディタでスクリプトを保存してからUnityに戻ると、Unityはあなたが加えた変更点をロードしますが、ロードし終わるまでのしばらくの間、無反応になることがあります。

Unity InspectorのPostWwiseEventスクリプトの下に、property drawerが表示されます。

Wwise-Type Eventクラスを使ったので、あなたのWwise ProjectのすべてのWwise Eventを選択できるボタンが、自動的に表示されます。ただし、まだコードは不完全で、Event Wwise Typeを使えることをコードが認識できても、それで何をやるのかが分かりません。

次のセクションで、このスクリプトに機能性を追加してゲームオブジェクトにEventをポストできるようにしてから、Inspectorで特定のEventを選択してみます。