前回は何もしないコンポーネントを1行で作成しました。この記事では、コンポーネントの中身を記述していきます。メソッドの書き方を説明した後、Start
メソッドを用いて文字列をコンソールビューに表示する方法を解説します。
Unityプログラミング講座一覧はこちら
メソッド(関数)の書き方
メソッドはクラス内に記述するメンバの1つです。メソッドではコンピュータに行わせる処理を記述します。
メソッドの書き方は次の通りです。
戻り値の型名 メソッド名(引数) {処理}
戻り値の型名は、メソッドが返す計算結果(戻り値)のデータの種類を表します。例えば、結果を整数で返す場合にはint
を用います。何も値を返さない場合にはvoid
を用います。
メソッド名は、メソッドの名前です。命名規則はクラスと同じです。
引数は、メソッドに渡すデータです。計算に必要な値を渡すときに使います。何もデータを渡さない場合には()のみ記述します。
処理に、計算などの処理を書きます。メソッドの中身を記述する場所になります。
特別なStartメソッド
MonoBehaviour
を継承したクラスでは特別な意味をもつメソッドがいくつか存在します。(「あらかじめ組み込まれた」という意味でビルトインメソッドと呼ばれます。)そのうちの1つにStart
メソッドがあります。このメソッドは開始時に1度だけ自動的に呼び出されます。
Start
メソッドは戻り値なし、引数なしのメソッドです。したがって、戻り値の型はvoid
、引数はないので()
のみになります。何もしないStart
メソッドは以下のように記述します。
void Start() {}
メソッドはクラスのメンバの1つですので、クラスの中に記述しましょう。
プログラムのフォーマット
C#の記述形式
プログラミング言語で書かれたコードの中で、これ以上分解できない意味のまとまりをトークンといいます。英文における単語のようなものです。
C#ではトークンは(){}:.
などの記号やclass
などのキーワード、クラス名やメソッド名などになります。トークンは分離して書かれる必要があります。
例えば、以下のようにキーワードvoid
とメソッド名をつなげるとエラーになります。
voidStart() {}
逆にトークンが分離できていれば、改行やタブ、スペースを好きなだけ使えます。極端な話、以下のコードでもエラーになりません。
class
Test
:
UnityEngine
.
MonoBehaviour
{
}
インデントを使って見やすくする
さすがに、自由に書きすぎると読みにくいコードになってしまうので、ある程度書き方があります。
階層を表現するために文の頭にスペースやタブを入れて見やすくする慣習があります。これをインデントといいます。
クラスのメンバとしてStart
メソッドを書く場合、インデントするとこんな感じになります。
class Test : UnityEngine.MonoBehaviour
{
void Start()
{
}
}
インデントはプログラミングにおいて必須といってもいいです。必ず習慣づけましょう。
コメントを入れてわかりやすくする
プログラムにはコメントを入れる機能があります。コメントはプログラムの動作には影響がありません。複雑なプログラムになると、斜め読みしただけではその内容がわかりません。コメントは説明を入れるためのものです。
1行の場合は//
を使います。複数行にわたる場合には/*
と*/
で挟みます。
class Test : UnityEngine.MonoBehaviour
{
// これはコメントです。
void Start()
{
/*
複数行のコメントです。
ここにメソッドの中身を書きます。
*/
}
}
文字列の表示
これから文字列を表示する方法を解説します。これはプログラミングをする上で大切なものになります。プログラムでいろいろな処理をさせても、その結果を表示できなければ意味がないからです。
Debug.Logメソッド
C#で文字列を表示するためのメソッドはいろいろあるのですが、UnityではクラスDebug
のLog
メソッドを使用することが多いです。
例えば、Hello Worldと表示させたい場合は、文字列"Hello World"
を引数としてDebug.Log
メソッドを実行します。このメソッドは名前空間UnityEngine
の中にあるので、以下のように書きます。
UnityEngine.Debug.Log("Hello World");
※C#では文の終わりにセミコロン;
を書きます。英語でのピリオド、日本語での句点と同じようなものです。
処理を書く場所
処理を書く場所はメソッドの中になります。Start
メソッドの中に書けば開始時に呼ばれます。以下のコンポーネントを作成して適当なゲームオブジェクトにアタッチしてください。
class Test : UnityEngine.MonoBehaviour
{
void Start()
{
UnityEngine.Debug.Log("Hello World");
}
}
スクリプトが書けたらCtrl+S
で変更を保存した後、ゲームを再生してください。コンソール(Console)にHello Worldと表示されていたら終了です。
Hello Worldの箇所を別の文字列に変えれば、いろいろ出力できます。
※前にも述べたように、コンポーネントとスクリプトのファイル名は同じにしてください。
usingを用いた名前空間の指定
MonoBehaviour
とDebug.Log
はどちらも名前空間UnityEngine
に属しています。何度もUnityEngine
と書くのは大変です。using
を用いて名前空間を指定することで省略することができます。
using UnityEngine;
class Test : MonoBehaviour
{
void Start()
{
Debug.Log("Hello World");
}
}
Unityでスクリプトを作成すると先頭にusing
で始まる行が数行続いていますが、これはよく使う名前空間をあらかじめ記入しているというわけです。
まとめ
この記事ではStart
メソッドにDebug.Log
を書くことで文字列の表示を行いました。文字列を表示するだけでは不十分ですので、次回は数値を取り扱って計算結果を出力してみましょう。
Unityプログラミング講座一覧はこちら