これからのゲーム開発はUnityエンジン!!

最終更新日

PS3からPSP,XBOX,iPhone,Androidと幅広いゲームの開発ができる「Unity」の開発用メモ。
しかも無料で使えます!

公式

UNITY: Game Development Tool
Unity – Japanese information

フォーラム系

Unity Community
Unity Answers – Unity Answers

日本語ブログ/Wiki

Radium Software
ゲームの神の子 daiのキセキ
ユニッコ – Unity3D初心者の日記
強火で進め
DIZGID | POLYGON LOVE
MURAKUMO.NET – Unity3D
Unity(Unity3D)に関する情報を扱うWiki
Unity 2ch Wiki – トップページ
nakamura001 @ ウィキ – トップページ/Unity(Unity3D)

チュートリアル

YouTube – bugzilla2001 さんのチャンネル
2010年9月あたりからUnityのわかりやすいビデオが。
Unity – Documentation

このドキュメントは有志により翻訳されたもので、オフィシャルではありません。オリジナルのページはこちら。
This document is unofficially translated by users.Please see the original document here.

UNITY: 3D Platform Game
3DGame作成の公式チュートリアル
Unity 3D Selfish Training
はえたたきゲームのチュートリアル記事。サンプル有
[Unity]用語解説? | iPhoneアプリをつくりんぐ
Vector3、RigidBody、Transform、Mesh、Collider(Collision)、instantiate、Quaternion、Time.deltaTime、RayCast
[Unity]基本的なJavaScriptコマンド集 | iPhoneアプリをつくりんぐ
YouTube – TornadoTwins さんのチャンネル
Richard Hart’s videos on Vimeo
Unity for Flash Developers – Tutorial 1〜7
iPhoneゲームを20分間で作る【メダルプッシャー編】 ‐ ニコニコ動画(原宿)
短時間でざっくり掴むにはコレが一番わかりやすいかも

GUI関連

Unityの主なGUIパーツの使い方 – 強火で進め
YouTube – Unity-Using GUISkin YOUTUBE
GUISkinの基本的な使い方のチュートリアルビデオ
ざんないプログラマァのiPhoneアプリ開発日記 Unity 3D グラフィカルボタン
サンプル有り

【GUI Skin を利用する方法】
GUI Skin を作成して Custom Styles にボタンの数分スタイルを登録する。
それぞれのスタイルに、それぞれのテクスチャを指定するればよい。
実行はスクリプト GUI.Button でスキンのスタイルを指定する。
・GUI.Button
・GUI Skin
・テクスチャについて
PC の場合
Normal:通常の状態(初期状態)
Hover:マウスカーソルが上にある時の状態
Active:クリックしている状態
iOS の場合
Normal:通常の状態(初期状態)
Hover:タッチ状態から離した時
Active:タッチしている状態
※iOS での Hover
Hover 状態の時、他のボタンがアクティブになるまでこの状態が継続されるようだ。
これは最後にタッチしていたボタンを示すことができるが、それを望まない場合は Normal と Hover は同じテクスチャを指定する。

Unityで2D描画物を扱う (Graphics.DrawTexture)
GUI.DrawTexture or Graphics.DrawTexture
sehm@メモ 3軒目  Unity iPhone4 Retina ディスプレイ対応:GUI 部分
Screen.widthからサイズ指定。
Reading 3DPlatformTutorial 3rd – だらだら?無味無臭?
Adding iPhone Touch Scrolling to a UnityGUI ScrollView | MindTheCube

iOS関連

Unity – Getting Started with iOS Development
Unity (iOS)で画面の回転を封じる

これを防ぐための強力な方法として、AppController.mmを書き換えるというものがある。次の一行をコメントアウトすればいい。
//KeyboardOnScreen::Init();

Unity (iOS)で言語設定を拾うことができない

これを正しく取得するにはプラグインを書く必要がある。

Unityで作ったiOSアプリを60fpsで動かす – Radium Software
Unityから出力されたソースのAppController.mmにある定数kFPSを60に変更する
【3Dゲームエンジン】Unity 2 | 801 | 2番街.net

iOS用のパフォーマンスTips読んでたら、加速度センサ使わないときはOFFにしろって書いてあってそのとおりにしたら明らかに早くなってわろた

UIKit連携

UnityとUIKitの合成表示
gitにコード有。これ使えれば、いろいろ捗りそう。

このサンプルプログラムでは、Unity画面の上にテキスト(UITextView)とボタン(UIButton)を重ねて表示している。インタラクションの確認のために、Unity側ではタッチ入力に対して黒い丸を表示している。

Unityで日本語フォントを使う(モバイル編)

まず、日本語云々の前にいくつかの前提を確認しておこう。モバイル向けのUnityではフォントのダイナミックレンダリ
ングをサポートしていない。これはつまり、フォントはあらかじめビットマップ化しておく必要があるということだ。そしてそのビットマップは1枚の
alpha 8テクスチャに収めなければいけない。

もし、使える文字を減らしてでもフォントを大きくしたい、という場合には、Masashi
Wadaさんの作られたSelected U3D Japanese Fontを使うといいだろう。こちらは同じM+
FONTSをベースとしていながらも、格納文字を教育漢字+αに限定することによって、25ピクセルで1024×1024に収まるよう調整されている。

あ、そうだ。最後に一言。Unityのスクリプト内でUnicodeを使うにはエンコーディングにUTF-16を指定する必要がある。普段UTF-8を使っている人は注意が必要だ。

画面遷移

FadeInOut – Unify Community Wiki
SceneのFadeInOutの方法
Unity Script Reference – Application.LoadLevel
これを使ってScene切り替えを行う

外部読み込み

Resources外部読みこみ

やっとFBXをResourcesフォルダーから出せたので、報告。(C#)
//外部FBXのスポーン
private GameObject obj;
string FBXFileName=”Corn”;
obj = Resources.Load(FBXFileName) as GameObject;
Instantiate(obj, Vector3.zero, Quaternion.identity);
obj.transform.localScale = new Vector3(100, 100, 100);
obj.name = “HelloCorn”;

あとは、おまけ

画像
private Texture2D ImageTex;
string ImageFileName=”title”;
ImageTex = Resources.Load(ImageFileName, typeof(Texture2D)) as Texture2D;

サウンド
private AudioClip mySound;
string SoundFileName=”bgm”;
mySound = Resources.Load(SoundFileName, typeof(AudioClip)) as AudioClip;

シェーダ
private Material newMat;
string MaterialFileName=”stone”;
newMat = Resources.Load(MaterialFileName, typeof(Material)) as Material;
renderer.material = newMat;

sehm@メモ 3軒目  Unity : iPhone アプリリソースに AssetBundle ファイルを持つ方法
Unity Script Reference – BuildPipeline.BuildAssetBundle
Unity Script Reference – AssetBundle
Load Asset Bundle in Editor – Unity Answers
Unity – Loading Resources at Runtime
Unity3D File Based Assetbundles on the iPhone ? Chris Danielson’s Blog
AssetBundleのビルドとロード方法
Unity asset streaming | netobrev
Possible for one web player to load scenes created in different projects? – Unity Answers
LoaderSceneでAssetBundleを読み込んでから、loadLevelを実行する。
Build asset bundle .unity3d
Asset Bundles failing to load (on iOS)
Instantiate(www.assetBundle.mainAsset) cause EXC_BAD_ACCESS(SIGABRT)
Strippingを使ってコンパイルするクラスの量を削減できるけど、AssetBundleを使うときはdummyの変数を作っておいて、読み込み側にAssetBundle内のクラスをコンパイルしておきなさいという話

There are several ways to deal with this problem:
a) Add dummy variables to your scripts that reference Types that are
included into your assetbundles and so preserve parts of Unity runtime
from stripping.
b) Include dummy scene into build that references all the Types that are included into your assetbundles.

開発TIPSなど

ざんないプログラマァのiPhoneアプリ開発日記 Unity 3D ライセンスについて
ざんないプログラマァのiPhoneアプリ開発日記 Unity 3D セーブデータ(1)
セーブデータ管理の基本処理。サンプルリンク有。
設定保存に使えそう?
ざんないプログラマァのiPhoneアプリ開発日記 Unity3D Singleton
Unity3D上でSingletonを実装する方法
ざんないプログラマァのiPhoneアプリ開発日記 Unity3D Sound
Unity3Dのサウンド処理の注意点
UnityとC#とJavaScript – Radium Software

例えば、構造体(struct)をJavaScriptで書くことはできない。Vectorクラスなどのように、代入で値コピーが発生して欲しいようなデータ構造を作成するには、C#で書くしかない。AIなどもC#で書いた方がすっきりするだろう。

結局、UnityのプロジェクトにはJavaScriptとC#が混在することになる。とてもグロい状態だ。グロいプログラミングが好きな人にはたまらない。

Unityプロジェクトのバージョン管理 – Radium Software

Editor Settingsの”External Version Control
Support”をenableした後に、Assetディレクトリだけをバージョン管理に入れればOKだ。他にセッティング関連のファイルがいくつか
Libraryディレクトリの中に存在するので、それもバージョン管理に入れるとなお良い。

[Unity]使えるライブラリiTween | iPhoneアプリをつくりんぐ

主にオブジェクト操作に関するライブラリなんですが、
サンプルとかがかっこいいし、なかなか使いやすそうなので、
知らない方は是非試してみてください☆

[Unity]基本的な衝突判定 | iPhoneアプリをつくりんぐ
FramesPerSecond – Unify Community Wiki
FPS表示用Script
Unity Script Reference – Overview: Accessing Other Game Objects
他のゲームオブジェクトの参照取得方法3種類
loaded assetbundle new scene – Unity Answers
loadLevelしたあとに変数を保持したままに出来る方法
[Unity] 無名関数とコルーチン

例えば「数秒待つ、ただし何らかの入力で短縮可能」なんてコルーチンを生成する関数を書いてみる。

Game Center using Unity
Unityのコードサイズと戦う
空のSceneでiOSBuildした際に、appファイルが13.9MBまで落ちることを確認
iOS 4.3 App Rejected

apple rejected my build using iOS SDK 4.3 with Xcode 4.
I built the application again on iOS SDK 4.2 with Xcode 3.x and it got approved right away.
Something is wrong with Unity3D and iOS SDK 4.3 w/ Xcode 4

その他

Unity3d Archive – Everyday 3D
3Dに強い海外ブログのUnity3Dカテゴリ
GamePrefabs – Products
プレハブ素材販売サイト
Prime31 – Unity iPhone Plugins
UnityのPlugin販売サイト

書籍

日本語版の書籍はまだなさそう・・・。

とりあえずこれが入門本。入門本だけだとアプリ開発はつらいかも。