unity information for new developer
TRANSCRIPT
初めてのUnity
2016/5
Unityとは?・ゲーム開発環境
・Unityそのものは無料で入手可能(一定以上の収益を持つ企業は有料)
・ライセンスは「ユーザ単位ライセンス」
・マルチプラットフォーム対応と汎用性の高さから、ゲームだけでなく、 ウェアラブルやVRなど、最近の新技術の開発手段としても注目されている
・Asset Storeというマーケットがあり、開発者が機能追加できる
マルチプラットフォーム
Windows,Mac,Linux,iOS,Androidなど、およそ一般的なプラットフォーム向け の実行ファイルを生成可能
WiiU,PS4など、家庭用コンソール向けにも出力可能だが、特殊な契約が必要 (一般開発者は原則契約できない)
・Unityの基本機能は意外に少ない。 →アセットという形で機能追加ができる。 (eclipseの「プラグイン」みたいなもの)
・Unity Asset Store というサイトで、誰でもアセットの売買が可能(無料もある)
・Asset Storeには、Unityか Webブラウザでアクセス可能 (アセットのインポートはUnity のみ可能)
アセットとは(1/2)
アセットの種類は多様。やりたいことはだいたい揃っているアセットとは(2/2)
【動き制御】
【状態制御】
【モデリング】
開発時のTips
基本的な考え方(1)
Scene View
Game View
Hierarchy View
Project View
空間構築用
シーン実行時に 表示される画面プレビュー
空間内に配置されている オブジェクト一覧
準備しているオブジェクト、 スクリプト、ファイル一覧Viewの並びは変更可能
基本的な考え方(2)・Unityはシングルスレッド
・開発空間上(SceneView)に配置したオブジェクトに スクリプトをアタッチすることで、プログラム制御ができる
・単位時間にオブジェクト毎のスクリプトが次々呼ばれ、結果的に処理が並行して進むように見える
・特殊APIの中に処理を書くのが基本 (C言語のmainや、Android(Java)のOnCreateのような関数を、開発者が使うことはない)
プログラマ向け
参考:特殊APIの例Void Awake(){}
Void Start(){}
Void Update(){}
Void FixedUpdate(){}
Void LateUpdate(){}
シーン実行時、オブジェクトが生成される前に 1回だけ呼ばれる。
シーン実行時、オブジェクトの初期化時に呼ばれる 他オブジェクトの情報を取得するGetComponent は、この中で呼ぶとよい
シーン実行時、毎秒50回程度呼ばれる。通常処理 を呼び出すときに使う(回数は環境依存)
シーン実行時、固定回数呼ばれる。物理エンジン 処理を呼び出す時に使う(回数は環境非依存)
シーン実行時、Updateの後に呼ばれる。 (普段使わないので詳しくはわかりません。。)
プログラマ向け
参考:Updateの呼ばれる回数
コンピュータの環境やCPU使用状況によって、1秒間に呼ばれる回数は変わる
基本的な考え方(3)・プログラム用言語としては、C#とUnityScript(Javascriptベース)があるが、最近はC#での記述の方が主流(と思われる)
・変数宣言には、int,float,enumなど、他言語と同様の型が ある。それ以外に、コンポーネント型でも宣言ができる
・コンポーネント型は、他クラスの名前そのもの。他クラスに アクセスするときは、そのクラスのコンポーネントを取得する手順が必要
プログラマ向け
基本的な考え方(4)<コンポーネントにアクセスする方法>
プログラマ向け
public class Button : MonoBehaviour { private CalledCount cc; void Start () { cc = GameObject.Find("CalledObjTest").GetComponent<CalledCount>(); } }
public class CalledCount : MonoBehaviour { public void CheckTime(){ flag =true; } }
Button.cs
CalledCount.cs
/*CalledCountという型で宣言*/
/*CalledObjTestにアタッチされたCalledCountを取得*/
Project Viewの中では、いくつかの例外を除いて、オブジェクトを移動させてもよい。
ただし、Pluginsフォルダ、その他指定があるフォルダはダメ (経験的に、取得したアセットは、初期ファイルパスから移動しない方がよい)
基本的な考え方(5)
使ってみるUIを並べて、マルチプラットフォーム出力してみる
マルチプラットフォーム出力の例
iPhone
UWP
Windows10 Desktop
終わりにUnityは、同一言語で色々なOS向けにビルドができる
ゲーム開発環境なので、表現も多彩 (ただし基本機能は意外と少ないので、アセットの導入がお勧め)
Unityについて調べたことをブログにまとめているので、ご覧ください。
http://magicbullet.hatenablog.jp