見出し画像

UnityLearn Scripting Tutorials -Namespaces-日本語

UnityLearnのチュートリアルを日本語に翻訳しました。
素人の翻訳なので間違いがあると思います。
間違いを見つけた人はコメントでおしえていただけると嬉しいです。

ネームスペースとは、クラスのコンテナのようなものです。

ネームスペースを使う目的は、スクリプトを整理し、各スクリプト間での衝突を避けることです。

例えば今、アプリケーション開発で役に立つツールを作っているとします。

ツールと実際のアプリケーションを別のネームスペース(名前空間)に保持できるので、入力補完で不要なクラスが提案されることが少なくなります。

おそらく、これまでに書いてきたスクリプトはネームスペースを使っています。

デフォルトのUnityのC#スクリプトの上部には、
using UnityEngine;
using System.Collections;
というのが表示されています。
この、UnityEngine と System.Collections はどちらもネームスペースです。

この「using」キーワードは、その後に続いたネームスペース内の全てをこのスクリプトでも使える、ということを意味します。

スクリプト上部に指定してある 「using」をコメントアウトしてみると、入力補完されるクラスがはるかに少ないことがわかります。

その理由は、GameObject、Transform、RigidBody、などのクラスは全てUnityEngine ネームスペースにあるからです。

クラスをネームスペース内に置くためには、namespace構文でクラスを囲う必要があります。

「namespace」キーワードで始め、ネームスペースの名前を続けます。

この時ネームスペース名は、既存のものでも新しいものでも構いません。

今回は、「SampleNamespace」と呼んでいこうと思います。

そして、クラスの前に “ { “ 、クラスの後に “ } ” があります。

クラスがSampleNamespaceに属しているので、所属を示すためにインデントします。

特定の名前空間のクラスを使用する方法は3つあります。

スクリプトの先頭に「using」ディレクティブを書く、という方法はすでに見ました。

クラスにアクセスする、2つ目の方法はドット演算子を使用することです。

たとえば、” using SampleNamespace; “と書く代わりに、 毎回SanpleNamaspaceから参照したいクラスを
“SanpelNamespace”+”ドット”+”クラス” と、いうように書きます。

この方法は曖昧さを回避しますが、SampleNamespaceのように長い名前のネームスペースの場合、効率が悪くなります。

最後の方法は、作成中(書いている)のクラスを、アクセスしたい名前空間に置くことです。

そのクラスを同じネームスペースに置くつもりがない限り、この方法は一般的におすすめできません。

クラスが異なるネームスペースにあるならば、同じクラス名を付けることができます。

ただし、スクリプトの名前はスクリプトのクラス名と同じなので、同じクラス名を使用するには、スクリプトを別のフォルダーに入れる必要があります。

ネームスペース使用する時、曖昧な定義に気を付けなければいけません。

例えば、「System」と「UnityEngine」という2つのネームスペースは、とても一般的に使われます。

これらには共に「Random」というクラスが定義を含んでいます。

両方を使っている場合は、ドット演算子を用いてクラスを明確にする必要があります。

「System.Random」もしくは「UnityEngine.Random」です。

2つ目のデフォルトのusingディレクティブが「System.Collections」ネームスペースであることにお気づきかもしれません。

これはネームスペースがネスト可能であることを示しています。

ネームスペースをネストさせるには1つのネームスペースに他のネームスペースを入れるだけです。

<終>
———————————————————————

そのほかの日本語訳の記事はこちらから。


この記事が気に入ったらサポートをしてみませんか?