how to inspect complete scenes with unity?
DESCRIPTION
本スライドは、Unity初心者を対象に、すでに完成しているシーンがどのように作られているのか、その構成を知るためのノウハウをまとめたものです。 Unityのアセットストアには、学習用に最適なすでに完成しているサンプルプロジェクトがいくつも提供されています。 しかし、せっかくDLしてサンプルシーンを開いてみても、イマイチ構成が掴みきれないので、そのまま閉じてしまった…という経験の人は多いのでは? 本スライドは、構成を紐解くためのファーストステップを教えます。 これらのプロジェクトの紐解き方を知ることは、そこで使っている ノウハウを理解するための第一歩となります! ※本スライドは、2013/06/18 KLabさんで行われた勉強会で発表した資料をPDF化したものですTRANSCRIPT
Unity初心者向けセミナー『完成プロジェクトをどうやって紐解くか?』
Unity Technologies Japan 合同会社コミュニティエバンジェリスト小林 信行
2013/06/18
他の人が作った完成プロジェクトの紐解き方を知ろう!
本セミナーのテーマ
完成プロジェクトの紐解き方を知ろう!
Unity Projects 01 : Stealth AngryBots
•Unityには学習用に様々な、すでに完成しているサンプルプロジェクトが提供されています。•しかし、せっかくDLしてサンプルシーンを開いてみても、イマイチ構成が掴みきれない ので、そのまま閉じてしまった…という経験の人は多いのでは?•本セミナーでは、構成を紐解くためのファーストステップを教えます。•これらのプロジェクトの紐解き方を知ることは、そこで使っている ノウハウを理解するための第一歩となります!
自己紹介:小林 信行(こばやし のぶゆき)最近はMayaを使うことが多い元コンシューマゲーム系クリエイティブディレクター。現在はUnityを通じて、ゲーム作りを楽しくしたいコミュニティエバンジェリスト。3Dシステムに基づく、2.5Dキャラモーションを特長とする多くの原作付きキャラクターゲームの企画&開発に関わり、アニメ業界にも精通しています。モーションポートレートをコンシューマゲーム向けに初搭載した他、独自3Dシステムに基づくモーショングラフィック、ラノベテイストの3Dモデル向けにイラストシェーダー等の開発指揮を行いました。代表作:『涼宮ハルヒの約束』『とらドラ・ポータブル!』『涼宮ハルヒの追想』等
@nyaa_toraneko
Stealthでの例:まず完成シーンを探しましょう
Projectウィンドウから完成しているシーンを探し、開きます
「シーン」とは?
•シーンとは、プレイヤーがゲームプレイを実現する場所 のことです。•プレイヤーがゲーム世界(シーン)にインタラクトする ことで、ゲームプレイが生まれます。•シーン内には、必ずなんらかの機能を持ったオブジェクト が複数配置されています。
Unityエディタは、シーンを組み上げるエディタ•Unityでは、シーン内に配置したオブジェクトに「機能」(コンポーネント)をアタッチすることで、各オブジェクト の振る舞い(ビヘイビア)を規定します。•コンポーネントには、すでにUnityが用意しているものもあれば、 自分でスクリプトを作成することで新たに定義できるものも あります。
⇒シーン内での各オブジェクト間の連携のあり方が わかれば、構成が理解できたことになります
ゲームシーン中にある代表的なオブジェクト1.プレイヤーキャラクター
•プレイヤーが操作するキャラやオブジェクト
2.敵キャラクター•敵キャラ/敵ボス/キャラとしては表現されない「敵」
3.メカニクス•プレイヤーがインタラクトできる仕組みそのもの(プラットフォーム/ドア/スイッチ…)
4.ハザード•特に、プレイヤーにダメージを与えるメカニクスのこと。クリアできるパターンを持つ
5.アイテムオブジェクト•報償やパワーアップなど、ゲームプレイを有利にするもの
6.ゲームコントローラやレフェリーオブジェクト•勝敗管理や得点表示をする。GUI的なオブジェクトであったり、空のゲームオブジェクト
7.カメラ
⇒これらのオブジェクトをシーン中から探しましょう
ShortBreak: Unityエディタの復習 2×3レイアウトへの変更 • Layoutボタンから「2 by 3」を選ぶ
シーンビューシーンに配置されているオブジェクトを表示します
ゲームビューメインカメラの視点です。ゲームはこのビューで行います
ヒエラルキー現在のシーンに配置されているオブジェクトを階層表示します各階層は、対応するオブジェクトの親子関係(ペアレント)を表します
プロジェクトブラウザ現在のプロジェクトに含まれているアセット等のファイルを表示します
インスペクター選択されているオブジェクトに付属するコンポーネント(機能)一覧です。
プレイ/ポーズ/ステップボタン
選択中のオブジェクトはギズモで囲まれます
シーン中にあるオブジェクトの機能の調べ方1.シーンをじっくりとみる/プレイボタンから実際に動かしてみる2.InspectorウィンドウのTagをみる3.Projectウィンドウのスクリプトをみる4.スクリプトの内容をチェックする
•初期化に注目する•更新に注目する•イベント発生時処理に注目する•コンポーネントを探す/参照を取得に注目する•コンポーネント間のメッセージングに注目する
シーンをじっくりとみる/プレイボタンから実際に動かしてみる
•プレイヤーの位置をみつけ、入力に対する反応(リアクション)をみる
•プレイヤーが最初はシーンに存在せず、プレイボタンスタート後に生成(Instantiate) されることもあるので注意
•敵の行動をみる•シーン内のメカニクスの動き方をみる
InspectorウィンドウのTagをみる•Player ⇒プレイヤーオブジェクトやキャラクターについている
•GameController ⇒ゲームの制御をしたりするオブジェクトについている
•MainCamera ⇒主として使われるカメラについている
•Respawn ⇒プレイヤーキャラの再出現位置とか
Projectウィンドウのスクリプトをみる
任意のスクリプトファイル名の上で右クリック>"Find References In Scene"でスクリプトがアタッチされているオブジェクトを探す
スクリプトの内容をチェックする:初期化に注目する
Awake/Start•Awake⇒最初のシーンロード。Start関数の前およびプレハブのインスタンス化直後に呼び出される。 シーン内の各オブジェクトに対して一度だけ。 GameObjectが有効でない場合には、有効になった直後に呼び出される。
•Start⇒最初のフレームのアップデート前。 スクリプトのインスタンスが有効になり、最初のフレームのアップデート前に呼び出される。
スクリプトの内容をチェックする:更新に注目する
Update/FixedUpdate•Update⇒1フレーム更新ごと、レンダリングする前に呼ばれる関数。 ほとんどのゲーム挙動に関するコードはここに書かれる。 1フレーム間の時間は一定ではないので、必ずTime.deltaTimeで進行する。
•FixedUpdate⇒主に物理エンジンの更新用に用意されている関数で、 フレーム概念と関係なく一定時間ごとに実行される関数(デフォルトで0.01秒)
スクリプトの内容をチェックする:イベント発生時処理に注目する
イベント発生時処理(On~の名前が付いている)⇒プレイヤーの操作で発生するイベント
● OnMouseDown,OnMouseDrag,OnMouseUp… ⇒物理エンジン&コライダーによる衝突&トリガーイベント
● OnCollisionEnter,OnCollisionExit,OnCollisionStay ● OnTriggerEnter,OnTriggerExit,OnTriggerStay
プレイヤーからの入力(Input)● GetAxis,GetButtonDown,…
スクリプトの内容をチェックする:コンポーネントを探す/参照を取得に注目する
あるタグが付いているコンポーネントを探す● FindWithTag,FindGameObjectsWithTag
コンポーネントへの参照を取得する ● GetComponent
スクリプトの内容をチェックする: コンポーネント間のメッセージングに注目する
コンポーネント間でメッセージングをすることで、別のコンポーネントにアタッチされているスクリプト内の関数を呼び出す ● BroadcastMessage,SendMessage,SendMessageUpwards
ご静聴ありがとうございました!