How to inspect complete scenes with Unity?

8,120 views
8,219 views

Published on

本スライドは、Unity初心者を対象に、すでに完成しているシーンがどのように作られているのか、その構成を知るためのノウハウをまとめたものです。

Unityのアセットストアには、学習用に最適なすでに完成しているサンプルプロジェクトがいくつも提供されています。

しかし、せっかくDLしてサンプルシーンを開いてみても、イマイチ構成が掴みきれないので、そのまま閉じてしまった…という経験の人は多いのでは?
本スライドは、構成を紐解くためのファーストステップを教えます。

これらのプロジェクトの紐解き方を知ることは、そこで使っている
 ノウハウを理解するための第一歩となります!

※本スライドは、2013/06/18 KLabさんで行われた勉強会で発表した資料をPDF化したものです

Published in: Entertainment & Humor
0 Comments
30 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
8,120
On SlideShare
0
From Embeds
0
Number of Embeds
13
Actions
Shares
0
Downloads
47
Comments
0
Likes
30
Embeds 0
No embeds

No notes for slide

How to inspect complete scenes with Unity?

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

×