スクリプティング概要
Variables and the Inspector

スクリプトの作成と使用

ゲームオブジェクトの動作はアタッチされた Component により制御されます。Unity ビルトインのコンポーネントは多目的で使用できるものの、カスタムのゲーム機能を実装するには十分でない場合が多いです。Unity により Script を使用してカスタムのコンポーネントを作成し、ゲーム中のイベント開始、時間の経過に伴ったコンポーネントプロパティーの修正、ユーザー入力操作への反応ができます。

Unity supports the C# programming language natively. C# (pronounced C-sharp) is an industry-standard language similar to Java or C++.

In addition to this, many other .NET languages can be used with Unity if they can compile a compatible DLL - see here for further details.

プログラミング技術および個々の言語の使用法をマスターすることは入門編の範疇を超えます。しかし Unity でプログラミングを学ぶための多くの本、チュートリアル、および他のリソースがあります。詳細は Unity Web サイトにある Learn セクション を参照してください。

スクリプトの作成

Unlike most other assets, scripts are usually created within Unity directly. You can create a new script from the Create menu at the top left of the Project panel or by selecting Assets > Create > C# Script from the main menu.

新規のスクリプトはプロジェクトパネルで選択した任意のフォルダーに作成されます。新規のスクリプトのファイル名が選択状態となり、新規の名前を入力するように促されます。

新規スクリプトに名前をつけるのは後まわしにせず、この時点で行なうとよいです。後で説明するように、ここでつけた名前は初回のテキスト作成に使用されます。

スクリプトファイルの構造

When you double-click a script Asset in Unity, it will be opened in a text editor. By default, Unity will use Visual Studio, but you can select any editor you like from the External Tools panel in Unity’s preferences (go to Unity > Preferences).

新規作成後、ファイルは次のように表示されてます。

using UnityEngine;
using System.Collections;

public class MainPlayer : MonoBehaviour {

    // 初期化に使用
    void Start () {
    
    }
    
    // Update はフレームごとに1 回呼び出されます
    void Update () {
    
    }
}

スクリプトは Unity 内部処理と連携するため 、MonoBehaviour と呼ばれるビルトインクラスの派生クラスを実装します。クラスはゲームオブジェクトにアタッチできる新たな種類のコンポーネントを作成するための青写真と捉えることができます。スクリプトコンポーネントをゲームオブジェクトにアタッチするたびに、青写真にもとづいてオブジェクトの新規インスタンスが作成されます。作成ファイル名と一致するようクラス名がつけられます。クラス名とファイル名が一致しないとゲームオブジェクトにアタッチされたスクリプトコンポーネントは無効となります。

クラスで定義された二つの関数に注目してください。Update 関数はゲームオブジェクトのフレーム更新をハンドリングするコードを配置する場所です。何か動作させたり、何かを起動させたり、あるいはユーザー入力操作に反応したり、時間の経過とともにハンドリングされるゲーム中のあるゆるものを含みます。Update 関数で必要な処理を行なうためには変数のセットアップ、設定を読み取ったうえでゲーム中のアクションが行なわれる前に他のゲームオブジェクトとの結びつけを行ないます。Start 関数はゲームプレイの直前に Unity により呼び出され、任意の初期化を行なうのによい場所です。

プログラミング上級者への注意:オブジェクトの初期化がコンストラクター関数でないことが意外かもしれません。この理由はオブジェクトの作成はエディターによりハンドリングされて意外にもゲーム開始直後に行なわれないためです。スクリプトコンポーネントでコンストラクターを定義しようとすると、Unity の通常処理と干渉するため、プロジェクトで問題を発生させます。

ゲームオブジェクトの呼び出し

すでに述べたように、スクリプトはコンポーネントのブループリントであり、ゲームオブジェクトにスクリプトがアタッチされるまではコードは実行されません。ヒエラルキービューでスクリプトのアセットをゲームオブジェクト上へドラッグするか、現在選択されているゲームオブジェクトのインスペクター上へドラッグすることで、スクリプトをアタッチできます。コンポーネントメニューにはスクリプトサブメニューがあり、プロジェクトで利用可能なすべてのスクリプトが含まれています。スクリプトのインスタンスは、インスペクター上では見た目は他のコンポーネントと同じです。

一回アタッチした後、Play ボタンを押してゲームを起動するとスクリプトが動作します。試すには次のコードを Start 関数に足します:

// Use this for initialization
void Start () 
{
    Debug.Log("I am alive!");
}

Debug.Log is a simple command that just prints a message to Unity’s console output. If you press Play now, you should see the message at the bottom of the main Unity editor window and in the Console window (menu: Window > General > Console).


  • 2018–03–19 限られた 編集レビュー で修正されたページ

  • MonoDevelop replaced by Visual Studio from 2018.1

スクリプティング概要
Variables and the Inspector