LoginSignup
3
3

More than 5 years have passed since last update.

Unityについて紹介メモ

Posted at

「それUnityでよくない?」的な話が多いので紹介メモ。

主観

iPhone/Android のクロスプラットフォーム対応を考えると、最近は以下でいいんじゃないかと思っている。
それ以外を学ぶ余裕があるのなら、積読の一冊でも消化したほうがよい。

  • Unity - 高いインタラクティブ表現が必要とされるもの
  • Monaca - Unityほどのインタラクティブ表現が必要ないもの
  • 要件によっては、Swift(Objective-C)、Javaなどのネイティブで作成

ゲームエンジン(或いはインタラクティブなフレームワーク)

あって当たり前のものは当たり前にある。

  • フレーム単位処理
  • 衝突判定
  • 落下や衝突などの2D/3D物理演算
  • アニメーション
  • 2Dスプライト
  • 3Dでのカメラ視点や光源
  • 3Dオブジェクトへのレンダリング

あと、パーシャル、マルチプレーヤー、経路探索、VRとか諸々。

カジュアルな2Dゲーム

Unityというと、ハイエンドな3Dゲーム用開発キットというイメージが大きいが、カジュアルな2Dゲームも普通に作れる。そもそも新規作成時に3Dか2Dを選択する。
実際には「オブジェクトをZ座標0に配置」「カメラ視点をZ軸に対し固定」なので、純粋な2Dというわけでないが、開発上あまり問題にならない。

AssetStore

Unityの魅力の半分は「AssetStoreの充実度」。
2D/3Dオブジェクト、音源、背景、アニメーション、スクリプト、開発ツールなどが膨大にあり、無料/有料で入手できる。

Personal版、Professional版

Presonal版(無料)とProfessional(有料、18万ぐらい)があるが、ゲームエンジンとしての機能差は実は殆どない。
「収益による制限」「スプラッシュスクリーンの変更」等には注意する必要がある。

mBaaSとの連携

Parseや Nifty Cloudのmobile backendはUnity用SDKを出している。デファクトであることの強み。

開発

Unityの開発作業はGUI上での調整が多い。元々、コード主体のIDEでの開発が多いと、違和感があるかもしれない(が、慣れればどうってことはない)。

ざっくりな実装の流れ

  • 1つのプロジェクトは複数のシーン(メニュー画面、メイン画面など)を持つ。
  • シーンにオブジェクト(GameObjet)を配置し、見た目(大きさとか向きとか)や衝突範囲を調整する。
  • ある程度、調整が済んだら、prefab化し、再生成可能にする。自機や固定障害物など複製されないオブジェクトなら、prefab化しなくてもよいかもしれない。
  • オブジェクトにコンポーネントやビヘイビアスクリプトをくっつける(アタッチ)。
  • グローバルな処理がしたいのであれば、シーンにそれ専用のオブジェクトを作成する(GameController的なやつ)。

ビヘイビアスクリプト

パラメータはGUIから設定するが、ロジックはビヘイビアスクリプトに記述する。
言語はC#。JavaScriptも使えるけど、サンプルの入手容易性を考えると、C#に寄せたほうが良い。

Enemy.cs
using UnityEngine;
using System.Collections;

public class Enemy : MonoBehaviour {

    // publicパラメータはGUIから上書きが可能
    public int point = 10;

    // 初期化時処理
    void Start () {
    }

    // フレーム毎処理
    void Update () {
    }

    // colliderコンポーネントをアタッチした場合、衝突時呼び出される。
    // 通常、イベントは自動で紐付けられるが、UIの場合、手動で行うこともある
    void OnTriggerEnter(Collider collider) {
    }
}

コルーチン

コルーチンを利用することにより、フレーム単位処理が容易になる。

void Start() {
  StartCoroutine("Wave");
}

IEnumerator Wave(){
  while(true){
    FirstAction();
    // 1フレーム待機後再開
    yield return null;
    SecondAction();
    // 20秒後再開
    yield return new WaitForSeconds(10);
  }
}

管理画面

標準のUIコンポーネントやwebviewプラグインもあるにはある。
が、データの一覧とか入力フォームとかそういった管理画面っぽいものを作りたいなら、HTMLのほうが楽。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3