[Unity]スクリプティングを始めるにあたって-継承-

Unityでスクリプトを使って、ゲームを制作する第一歩として必ず知っておかねばならない”リファレンスの読み方”を簡単に説明します。残念ながらスクリプト言語のお話はしませんので、あしからず。

C#を知らない人へ

C#を解説するのは本ページの趣旨から離れますので割愛します。が、やはりそれでは不親切なので、以下のスライドが非常によくできていますので、参考までにどうぞ。ただし、プログラミング経験者である必要があります。


生成されたスクリプトを理解する

UnityのAssetにスクリプトファイルを生成すると、すでに雛型が用意されています。この雛型が何をしているのかがスクリプティングの第一歩です。以下が生成したスクリプトです。今回は「ExampleScript」というスクリプトファイルを生成した結果です。

using UnityEngine;
using System.Collections;

public class ExampleScript : MonoBehaviour {

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

1,2行目は利用するライブラリを読み込んでいます。
UnityEngineはUnityの機能を利用する上で必要なライブラリ、System.CollectionsはC#を利用する上で便利なライブラリ群です。

public class ExampleScript : MonoBehaviour {

この行では、「MonoBehaviourクラスを継承したExampleScriptクラスを中括弧({,})の範囲に定義します」と宣言しています。この「MonoBehaviourクラス」が非常に大切な役割をもったクラスです。

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

さて、これら2つのメソッドはどういったメソッドでしょうか。
Startメソッドはこのスクリプトを付加したオブジェクトが生成され、Updateメソッドが実行する直前に一度だけ実行されるメソッドです。
Updateメソッドはフレーム毎に実行されるメソッドです。
これらは一体どこでそう決まっているのでしょうか。それこそがMonoBehaviourクラスを継承した結果なのです。

スクリプトリファレンスのMonoBehaviourを読んでみると確かに、StartとUpdateが書かれています。これらは「Messages」に属しています。

リファレンスの読み方

リファレンストップページ

http://docs.unity3d.com/Documentation/ScriptReference/index.html

Unity Script Reference:
http://docs.unity3d.com/Documentation/ScriptReference/index.html

上記のスクリプティングリファレンスを開いてみると、左側になにやらリストがあります。

classlist

「Scripting Reference using」の所で、利用するスクリプト言語を選択すると、対応した言語の書き方を提示してくれます。今回は「C#」としました。
検索窓でクラスを絞り込むことができます。また、その下のドロップリストは表示する内容を選ぶ事ができます。具体的には実行用のスクリプトで利用する「Runtime ***」、エディタなどを拡張する時に利用する「Editor ***」です。今回は実行時に利用するクラスを調べたいので、「Runtime Classes」としてください。

クラスのリストには字下げされたクラスがあります。例えば、上図では「AndroidJavaClass」が地下げされています。これは字下げされたクラスの一つ上のクラスを継承したクラスという意味です。つまり、「AndroidJavaClass」は「AndroidJavaObject」を継承したクラスということになります。
それでは、MonoBehaviourを探してみましょう。すると、MonoBehaviourはBehaviourクラスを継承したクラスであることがわかります。また、BehaviourクラスはComponentクラスを継承しています。つまり、自作するスクリプトはMonoBehaviourクラスを継承していますから、「Component」「Behaviour」も継承することになります。なので、自作スクリプトはComponentクラスを継承しているため、コンポーネントとして扱うことができるのです。

extendmonob

リファレンスの構成

MonoBehaviourのページを開いてみると、いくつかの分類にわかれていることに気づくと思います。

Variables クラスが保持する変数(メンバ変数)
Functions クラスが保持する関数(メソッド)
Static Functions クラスから独立した関数
Messages システム(Unity)によって実行されるメソッド
Operators 独自演算子

上記の表のように、いくつかのグループに分かれています。さらに、継承元が提供しているメンバ変数やメソッドなどは、「Inherited members」という箇所に分けて書いています。MessagesはUnityによって実行されるメソッドです。ですので、Unityに実行して欲しい内容を記述しておきます。(オーバーライド)どのタイミングで実行されるかは、メソッドによって異なります。StartやUpdateもこのMessageに属します。

詳細の読み方

メンバ変数

メンバ変数のページを開くと以下の様なレイアウトになっています。

membervariable

このページでは、変数名、所属するクラス、型、説明が記述されています。特に大切なのが、です。様々な情報のやり取りをする場合、この型を知らなければ何もすることができません。利用する場合は必ずチェックしましょう。(開発環境のMonoDevelopでも表示されますが)

メソッド・演算子等

メソッドや演算子のページを開くと以下の様なレイアウトになっています。

memberfunction

このページでは、メソッドや演算子などの定義と、サンプルが記述されています。このサンプルはあったり、なかったりしますが、あった場合、選んだスクリプト言語のサンプルが表示されています。

おわりに

今回はリファレンス・マニュアルの簡単な読み方を説明しました。Unityは豊富なサンプルが収録されていますので、使い方も困ることは少ないです。新しいクラスやメソッドを利用するときは一度きちんとマニュアルを読んでみることをおすすめします。

関連ページ