unity information for new developer

16
初めてのUnity 2016/5

Upload: wheettweet

Post on 15-Apr-2017

65 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Unity information for new developer

初めてのUnity

2016/5

Page 2: Unity information for new developer

Unityとは?・ゲーム開発環境

・Unityそのものは無料で入手可能(一定以上の収益を持つ企業は有料)

・ライセンスは「ユーザ単位ライセンス」

・マルチプラットフォーム対応と汎用性の高さから、ゲームだけでなく、 ウェアラブルやVRなど、最近の新技術の開発手段としても注目されている

・Asset Storeというマーケットがあり、開発者が機能追加できる

Page 3: Unity information for new developer

マルチプラットフォーム

Windows,Mac,Linux,iOS,Androidなど、およそ一般的なプラットフォーム向け の実行ファイルを生成可能

WiiU,PS4など、家庭用コンソール向けにも出力可能だが、特殊な契約が必要 (一般開発者は原則契約できない)

Page 4: Unity information for new developer

・Unityの基本機能は意外に少ない。 →アセットという形で機能追加ができる。 (eclipseの「プラグイン」みたいなもの)

・Unity Asset Store というサイトで、誰でもアセットの売買が可能(無料もある)

・Asset Storeには、Unityか Webブラウザでアクセス可能 (アセットのインポートはUnity のみ可能)

アセットとは(1/2)

Page 5: Unity information for new developer

アセットの種類は多様。やりたいことはだいたい揃っているアセットとは(2/2)

【動き制御】

【状態制御】

【モデリング】

Page 6: Unity information for new developer

開発時のTips

Page 7: Unity information for new developer

基本的な考え方(1)

Scene View

Game View

Hierarchy View

Project View

空間構築用

シーン実行時に 表示される画面プレビュー

空間内に配置されている オブジェクト一覧

準備しているオブジェクト、 スクリプト、ファイル一覧Viewの並びは変更可能

Page 8: Unity information for new developer

基本的な考え方(2)・Unityはシングルスレッド

・開発空間上(SceneView)に配置したオブジェクトに スクリプトをアタッチすることで、プログラム制御ができる

・単位時間にオブジェクト毎のスクリプトが次々呼ばれ、結果的に処理が並行して進むように見える

・特殊APIの中に処理を書くのが基本 (C言語のmainや、Android(Java)のOnCreateのような関数を、開発者が使うことはない)

プログラマ向け

Page 9: Unity information for new developer

参考:特殊APIの例Void Awake(){}

Void Start(){}

Void Update(){}

Void FixedUpdate(){}

Void LateUpdate(){}

シーン実行時、オブジェクトが生成される前に 1回だけ呼ばれる。

シーン実行時、オブジェクトの初期化時に呼ばれる 他オブジェクトの情報を取得するGetComponent は、この中で呼ぶとよい

シーン実行時、毎秒50回程度呼ばれる。通常処理 を呼び出すときに使う(回数は環境依存)

シーン実行時、固定回数呼ばれる。物理エンジン 処理を呼び出す時に使う(回数は環境非依存)

シーン実行時、Updateの後に呼ばれる。 (普段使わないので詳しくはわかりません。。)

プログラマ向け

Page 10: Unity information for new developer

参考:Updateの呼ばれる回数

コンピュータの環境やCPU使用状況によって、1秒間に呼ばれる回数は変わる

Page 11: Unity information for new developer

基本的な考え方(3)・プログラム用言語としては、C#とUnityScript(Javascriptベース)があるが、最近はC#での記述の方が主流(と思われる)

・変数宣言には、int,float,enumなど、他言語と同様の型が ある。それ以外に、コンポーネント型でも宣言ができる

・コンポーネント型は、他クラスの名前そのもの。他クラスに アクセスするときは、そのクラスのコンポーネントを取得する手順が必要

プログラマ向け

Page 12: Unity information for new developer

基本的な考え方(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を取得*/

Page 13: Unity information for new developer

Project Viewの中では、いくつかの例外を除いて、オブジェクトを移動させてもよい。

ただし、Pluginsフォルダ、その他指定があるフォルダはダメ (経験的に、取得したアセットは、初期ファイルパスから移動しない方がよい)

基本的な考え方(5)

Page 14: Unity information for new developer

使ってみるUIを並べて、マルチプラットフォーム出力してみる

Page 15: Unity information for new developer

マルチプラットフォーム出力の例

iPhone

UWP

Windows10 Desktop

Page 16: Unity information for new developer

終わりにUnityは、同一言語で色々なOS向けにビルドができる

ゲーム開発環境なので、表現も多彩 (ただし基本機能は意外と少ないので、アセットの導入がお勧め)

Unityについて調べたことをブログにまとめているので、ご覧ください。

http://magicbullet.hatenablog.jp