お役立ち情報

【unity入門】ゲーム開発だけじゃない、Unityで出来ること

Unityのイメージ

Unityは基本的にゲーム開発用の環境として認識されていますが、もともとゲーム専用の環境というわけではありません。たしかに2Dにも3Dにも対応していてなおかつゲーム開発用のインターフェースをGUIで呼び出すことが可能なのですが、それはUnityの一部の機能に過ぎません。

またゲーム用のグラフィック等はWebシステムにも流用可能で、簡単に高機能なグラフィックを実現できます。つまり、ゲームだけではなくグラフィックのクオリティが高いWebシステムを開発したい方にもUnityは最適なのです。

それでは、具体的にUnityで何ができるのかを解説していきます。

Unityの特徴

まずUnityの大まかな特徴として以下のようなものが挙げられます。

  • マルチプラットフォームに対応している
  • アセットストアが充実している
  • GUIで操作できる

以上のような特徴があります。

まずマルチプラットフォームについてですが、これは主にOSの話です。Windows、Mac、Linux、iOS、Android、と様々なOSに対応しています。最近はソーシャルゲームに注目が集まっていますが、パソコン用のオンラインゲームなどでもUnityはフル活用されています。

次にアセットストアについてですが、アセットストアとはユーザーが独自に作成したプログラムを部品として販売するものです。この仕組みによって自分がプログラムを販売することも可能ですが、購入して機能拡張することも可能です。

また無料で提供してくれているユーザーも多いので、有効活用しましょう。すべて自分の手作業だけで作るのも勉強になりますが、便利なツールを使用することも勉強になります。

ソースコードをまったく見ずに使っているだけではたしかにあまり成長できないのですが、ソースコードを見て参考にしつつツールを利用すれば、凄腕プログラマーが開発したツールを自分のスキルアップに役立てつつ有効活用することができます。

GUI操作については、プログラミングなしにグラフィックを動かすことなどが可能です。もちろん細かい部分は自分でプログラミングして書き換える必要がありますが、大まかな動作はもともとツールとして提供されています。

仮にマニアックな動作を求めるとしても、既存のツールを書き換えて使用することが可能なので、そういった意味でも利便性が高いです。ちなみに、Unityで使用できるプログラミング言語はJavaScript、C#、Booの三つです。

Booについては初めて聞く方も多いかと思いますが、言語仕様はPythonに近いです。

トライ&エラーによる開発

Unityの特徴は上記の通りですが、具体的な開発の進め方としてトライ&エラーでの開発が進めやすいというメリットがあります。その理由は、Unityがもともとゲーム開発用の環境だからです。

ゲーム開発の経験がある方はわかるかと思いますが、ゲーム開発はその他のシステムに比べてコードを書いてすぐに挙動を試すことが多いです。ゲーム開発がメインのUnityでは書いてすぐに実行して修正しながら開発することを前提としているため、ほぼゲームの実機そのまま操作していくイメージになります。

ゲームの場合挙動を確認しながら作業しないと完成しないのですが、Webシステムでもトライ&エラーで開発を進めるメリットは大きいです。挙動の推測が付く部分はどんどん記述を進めれば良いのですが、挙動の詳細が気になる部分はトライ&エラーで進めていくと良いでしょう。

スクリプトでの処理実行

アセットのインポートやビルドはGUIからでも可能ですが、スクリプトから処理を記述して実行することも可能です。

たとえば、C#でAndroid、iOSをビルドする処理は以下のようになります。

using UnityEditor;
using UnityEngine;
using System.Linq;
public class NewBehaviourScript
{
     [MenuItem("Build/Android & iOS")]
     public static void Build()
     {
          BuildPlayer("Android.apk", BuildTarget.Android, BuildOptions.None);
          BuildPlayer("iOS", BuildTarget.iPhone, BuildOptions.None);
     }
     static void BuildPlayer(string location, BuildTarget target, BuildOptions options)
     {
          Directory.CreateDirectory("Build");
          BuildPipeline.BuildPlayer(GetLevels (), "Build/" + location, target, options);
     }
     static string[] GetLevels()
     {
          return EditorBuildSettings.scenes.
               Where(scene => scene.enabled).Select(scene => scene.path).ToArray();
     }
}

上記ソースコードの内容はGUIでも実行可能ですが、このようにスクリプトを記述して実行することも可能です。

画面の機能

Unityで実際にソースコードを記述する際は、四つの画面に分かれています。

具体的には、「Hierarchy」「Scene」「Project」「Inspector」の四つです。まずHierarchyはSceneに配置するオブジェクトを一覧表示する部分です。

次にSceneはオブジェクトを配置する場所で、実際に開発を進める場所でもあります。Projectはオブジェクトに付ける色や重力などの要素が置かれる場所です。Inspectorはオブジェクトの位置を調整するものです。

Event Triggerの使い方

Unityはグラフィックを動的に実装できることに強みがありますが、その結果Event Triggerの使い方が重要になります。Event Triggerとはユーザーが何かアクションを起こした際に発動させるためのコードです。

ゲームだと基本的にユーザーが何か操作をした際に動くプログラムがWebサービスよりも多いので、Event Triggerが充実しています。具体的には以下のようなコードが存在します。

PointerEnter
ポインターがオブジェクトに乗ったとき
PointerExit
ポインターがオブジェクトから離れたとき
PointerDown
ポインターがオブジェクトを押下したとき
PointerUp
ポインターを押下状態から離したとき
PointerCheck
オブジェクト上でポインターを押下し、同一のオブジェクト上で離したとき
Drag
オブジェクトがドラッグされている間
Drop
ドラッグされてきた他のオブジェクトが、範囲内でドラッグ解除されたとき
Scroll
オブジェクトの範囲内でマウスホイールスクロールをしたとき
UpdateSelected
選択中のオブジェクトで毎フレーム発生
Select
オブジェクトが選択されたとき
Deselect
選択中のオブジェクトで、選択状態が解除されたとき
Move
キー入力による移動イベント(左、右、上、下など)が起こったとき
InitializePotentialDrag
ドラッグ対象が見つかったとき
BeginDrag
ドラッグを開始したとき
EndDrag
ドラッグが終了したとき
Submit
サブミットボタン(リターンキーやスペースキー)が押されたとき
Cancel
キャンセルボタン(エスケープキーなど)が押されたとき

Unityはゲーム以外のシステムでも幅広く利用されていますが、基本的にはゲーム開発がメインの環境です。

そのため、ゲームに使えるツールやコードをなるべく活かすと他のシステムでも高い機能性を実現できます。

キャリアカウンセリングのプロとして
あなたに合った案件をご案内します。

まずはお気軽にお問い合わせください!

イメージ