Unity入門 - C#スクリプトの構造を見てみよう -
C#スクリプトを見てみよう
上の画像はUnityで "Hello, world." とTextに表示するための、C#スクリプトになります。これをもとに、文構造を見ていきます。
C#のスクリプトは上画像の①、②、③で作られています。それぞれ
と呼ばれます。
namespace(名前空間)とは
プログラムにおけるフォルダのようなものです。
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;
Unityでは、C#スクリプトを作成するとデフォルトで上の3つが書かれています。今回は、UIの一つであるTextを使いたいので、UIが入っているUnityEngine.UIを自分で書き足しました。このように、プログラムは使うものをすべて書いておく必要があるのですが、その必要なものが入っているフォルダのようなものを名前空間と呼びます。
この名前空間は自分で定義することもできますが、上の4つのように既に定義されているものもあります。初めのうちは自分で定義することもありません。とりあえず、使いたいものにアクセスするために、usingを使い、名前空間を書いておくと思っておきましょう。
class(クラス)とは
public class Helloworld : MonoBehaviour { public GameObject OutputText; private Text _outputtext; // Start is called before the first frame update void Start() { _outputtext = OutputText.GetComponent<Text>(); _outputtext.text = "Hello, world."; } // Update is called once per frame void Update() { } }
クラスとは、"オブジェクトの設計図のようなもの" と紹介されることが多いです。しかし、これはオブジェクト指向の概念を知らなければピンとこないと思います。そこでいったんオブジェクト指向について解説します。
〇オブジェクト指向とは
オブジェクト(モノ)を組み立てるようにプログラムを書き、モノとモノの関係性を定義することでシステムを作り上げようとするシステム構成の考え方のことです。プログラミング言語の中には、オブジェクト指向の考え方をするものが多くあり、C#言語もその一つです。
詳しくは下記リンクを見てください。
robo-done.com
〇クラスとは
先ほど、クラスとは、"オブジェクトの設計図のようなもの" とご紹介しました。別の説明の仕方をするのであれば、"データや処理を一つにまとめるためのもの" です。
上の例では、"public class Helloworld" と書いてあるため、Helloworldという名前のクラスがあることが分かります。これは、Text に "Hello, world." という文章を入力させる処理をまとめています。
設計図とよばれたのは、クラスを使うことで、Text が何個あっても、すべてのTextに "Hello, world." と入力することができるためです。オブジェクトに同じ処理をする、同じオブジェクトを何個も作ることができるという意味で "設計図" と説明されています。
また、"MonoBehavior" という文字が書いてあることが分かります。これは、基底クラス(親クラス)であることを表しています。クラスの中にクラスを作ることができるのですが、その一番大元のクラスであるということです。
Monobehaviorについては、下記リンクの説明がわかりやすかったので載せておきます。
gimo.jp
method(メソッド、関数)とは
クラスの中に書かれた複数の処理を一つにまとめたものです。私は関数という名前で言い慣れていますので、今後は関数と書かせていただきます。
関数は大きく次の2種類に分けられます。
- C#やUnityであらかじめ用意されている関数
- 自分で新たに定義する関数
void Start() { _outputtext = OutputText.GetComponent<Text>(); _outputtext.text = "Hello, world."; } void Update() { }
先ほどのスクリプト内にあった "Start" と "Update" はあらかじめ用意されている関数になります。UnityでC#スクリプトを作成するとデフォルトで書かれています。あらかじめ用意されている関数は特殊な関数でそれぞれ機能が与えられています。たとえば、
- Start:クラスがインスタンス化(実体化)した瞬間に1度だけ呼び出される関数
- Update:クラスが有効な時に、1フレームに1回呼び出される関数
となっています。上のスクリプトでは、はじめに1回 "Hello, world." と入力され、1フレームごとの処理はなにもないことがわかります。