Unite Training Day 16 - Tech'N'Smile …Unite 2016 - Training Day Welcome to Unite Training Day 2016...

Post on 14-Sep-2018

214 views 0 download

transcript

Unite 2016 - Training Day

Welcome to Unite Training Day 2016• Take a USB stick and find a seat • If you do not have Unity 5.3.5 already installed: • Find the appropriate installer for your operating system • Copy that UnityInstaller to your computer and install the UnityEngineSetup, launch and activate Unity

• Wifi: Unite Europe No Password

• Copy the TrainingDayProjects zip file to your computer

• Unzip TrainingDayProjects

Unite 2016 - Training Day

What is Training Day?• Training day is where we get together to create an

awesome game learning Unity techniques along the way

• We are James Bouckley and Adam Buckner

• We have a great group of helpers on the floor - if you have any trouble at any time, raise your hand, someone will come and give you a hand

What we will build:

Unite 2016 - Training Day

• Introduction and Installation

• Phase 01 - The Security Room

• Phase 02 - The Player

• Phase 03 - The Interactable Prefab

• Phase 04 - An example Interactable

What is Training Day?

Unite 2016 - Training Day

What is Training Day?• Introduction and Installation

• Phase 01 - The Security Room

• Phase 02 - The Player

• Phase 03 - The Interactable Prefab

• Phase 04 - An example Interactable

Unite 2016 - Training Day

What is Training Day?• Introduction and Installation

• Phase 01 - The Security Room

• Phase 02 - The Player

• Phase 03 - The Interactable Prefab

• Phase 04 - An example Interactable

Unite 2016 - Training Day

What is Training Day?• Phase 01 - The Security Room

• Phase 02 - The Player

• Phase 03 - The Interactable Prefab

• Phase 04 - An example Interactable

• Phase 05 - Changing Scenes

Unite 2016 - Training Day

What is Training Day?• Phase 02 - The Player

• Phase 03 - The Interactable Prefab

• Phase 04 - An example Interactable

• Phase 05 - Changing Scenes

• LUNCH!

Unite 2016 - Training Day

What is Training Day?• Phase 03 - The Interactable Prefab

• Phase 04 - An example Interactable

• Phase 05 - Changing Scenes

• LUNCH!

• Phase 06 - The Inventory

Unite 2016 - Training Day

What is Training Day?• Phase 04 - An example Interactable

• Phase 05 - Changing Scenes

• LUNCH!

• Phase 06 - The Inventory

• Phase 07 - Interacting with the Inventory

Unite 2016 - Training Day

What is Training Day?• Phase 05 - Changing Scenes

• LUNCH!

• Phase 06 - The Inventory

• Phase 07 - Interacting with the Inventory

• Phase 08 - Data persistence

Unite 2016 - Training Day

What is Training Day?• Phase 05 - Changing Scenes

• LUNCH!

• Phase 06 - The Inventory

• Phase 07 - Interacting with the Inventory

• Phase 08 - Data persistence

Unite 2016 - Training Day

What is Training Day?• Phase 05 - Changing Scenes

• LUNCH!

• Phase 06 - The Inventory

• Phase 07 - Interacting with the Inventory

• Phase 08 - Data persistence

Unite 2016 - Training Day

What you need to know:• Unity Adventure Game is a point and click adventure

• Catch up zip files:

• Each phase has it’s own dedicated project zip file

• If you fall behind, use the project file for the new phase to catch up

• Dedicated Helpers are available - just raise your hand!

• Q & A is limited to end of day

Unite 2016 - Training Day

Make sure you have done this:• Copied the zip on the USB stick to your computer

• Extracted the installer and all copies of the project

• Installed the Unity version supplied

• Launched Unity

• Opened the project called UniteEurope2016TrainingDayPhase1

OK! Let’s

DO THIS!

Phase 01 The Security Room

Unite 2016 - Training Day

The Security Room

1. With the correct project open: UniteEurope16TrainingDayPhase1

2. Navigate to the Project window

3. Expand the Scenes folder

4. Open the SecurityRoom scene

Phase 1/8

Slide 1/12

Unite 2016 - Training Day

The Security Room

Add the Security Room Environment to the Scene

1. Navigate to the Project window

2. Expand the Prefabs folder

3. Drag the SecurityRoom prefab into the Hierarchy

4. Frame Selected by pressing F while the pointer is over the Scene View then zoom as needed

Phase 1/8

Slide 2/12

Unite 2016 - Training Day

The Security Room

The Event System

• We need to be able to interact with our environment

• An event system has 3 requirements. Something to -

1. Send events

2. Receive events

3. Manage events

Phase 1/8

Slide 3/12

Unite 2016 - Training Day

The Security Room

The Event System

1. Send events

1. Physics Raycaster component

2. Receive events

1. Colliders & Event Triggers

3. Manage events

1. The Event System

Phase 1/8

Slide 4/12

Unite 2016 - Training Day

The Security Room

The Event System

1. Send events

1. Physics Raycaster component

2. Receive events

1. Colliders & Event Triggers

3. Manage events

1. The Event System

Phase 1/8

Slide 5/12

Unite 2016 - Training Day

The Security Room

The Event System

1. Send events

1. Physics Raycaster component

2. Receive events

1. Colliders & Event Triggers

3. Manage events

1. The Event System

Phase 1/8

Slide 6/12

Unite 2016 - Training Day

The Security Room

1. Navigate to the Hierarchy

2. Find the Camera GameObject: SecurityRoom/CameraRig/Camera

3. Select the Camera GameObject

4. Add a Physics Raycaster component to the Camera Add Component/Event/Physics Raycaster (Not 2D!)

Phase 1/8

Slide 7/12

Unite 2016 - Training Day

The Security Room

1. Select the root SecurityRoom GameObject

2. Add a Mesh Collider component to the SecurityRoom

3. Set the Mesh to SecurityRoomMeshCollider

Phase 1/8

Slide 8/12

Unite 2016 - Training Day

The Security Room

1. Add an EventTrigger component to the SecurityRoom

2. On the EventTrigger component:

A. Click Add New Event Type

B. Select PointerClick

C. Note: We will leave this list empty for now

Phase 1/8

Slide 9/12

Unite 2016 - Training Day

The Security Room

1. Collapse the SecurityRoom GameObject

2. Add an EventSystem GameObject to the Scene Create > UI > Event System

3. Note: This Event System will be Temporary and is for testing purposes only!

Phase 1/8

Slide 10/12

Unite 2016 - Training Day

The Security Room

1. Open the Navigation window Window > Navigation

2. Select the Bake tab

3. Set Max Slope to 1

4. Set Step Height to 0.2

5. Click the Bake button

Phase 1/8

Slide 11/12

Unite 2016 - Training Day

The Security Room

1. Select the Inspector window

2. Save the Scene

Phase 1/8

Slide 12/12

End of Phase 01

Phase 02 The Player

Slide 1/34

Unite 2016 - Training Day

Phase 2/8The Player

Add the Player model to the Hierarchy

1. Navigate to the Project window

2. Expand the Models folder

3. Drag the Player model into the Hierarchy window

Slide 2/34

Unite 2016 - Training Day

1. Select the Player GameObject in the Hierarchy

2. Set the Transform’s Position to (-0.7, 0, 3.5)

3. Set the Transform’s Rotation to (0, 180, 0)

Phase 2/8The Player

Slide 3/34

Unite 2016 - Training Day

Phase 2/8The Player

Prep the Player for Navigation

1. Add a Nav Mesh Agent

2. Change the Speed to 2

3. Change Acceleration to 20

Slide 4/34

Unite 2016 - Training Day

Phase 2/8The Player

Create a Prefab from the Player GameObject

1. Drag the Player GameObject from the Hierarchy and…

2. Drop it on the Prefabs folder in the Project window

Slide 5/34

Unite 2016 - Training Day

Phase 2/8The Player

Scripting and Script Types

• Unity has several types of scripts that we can write

1. MonoBehaviours

2. ScriptableObjects

3. Ordinary Classes

Slide 6/34

Unite 2016 - Training Day

The Security Room Phase 2/8

MonoBehaviour

Slide 7/34

Unite 2016 - Training Day

The Security Room Phase 2/8

ScriptableObject

Slide 8/34

Unite 2016 - Training Day

The Security Room Phase 2/8

Ordinary Class

Slide 9/34

Unite 2016 - Training Day

Phase 2/8The Player

1. Navigate to the Project window

2. Select the Scripts folder

3. Add a new Folder to Scripts called Player

4. In the Player sub-folder create a new C# script

5. Name this script PlayerMovement

6. Open the script for editing

Slide 10/34

Unite 2016 - Training Day

Phase 2/8The Player

1. Save the script

2. Return to Unity

Slide 11/34

Unite 2016 - Training Day

Phase 2/8The Player

1. Select the Player GameObject in the Hierarchy

2. Drag the PlayerMovement script onto the Player

3. Drag the Nav Mesh Agent component on the Player onto the Agent field of PlayerMovement

Slide 12/34

Unite 2016 - Training Day

Phase 2/8The Player

1. Select the SecurityRoom GameObject

2. Find the EventTrigger component

3. Find the Pointer Click Event List on the Event Trigger

4. Click the + button to add an Event to the list

5. Drag the Player from the Hierarchy and …

6. Drop it on the Object field on the Pointer Click event

Slide 13/34

Unite 2016 - Training Day

Phase 2/8The Player

On the EventTrigger component’s Pointer Click list:

1. Click the Function drop-down This drop-down menu says “No Function”

2. Select PlayerMovement > OnGroundClick

Slide 14/34

Unite 2016 - Training Day

Phase 2/8The Player

1. Save the Scene

2. Test by entering Play Mode

Slide 15/34

Exit Play Mode

Slide 16/34

Unite 2016 - Training Day

Phase 2/8The Player

Create an Animator Controller for the Player

1. Navigate to the Project window

2. Select the Animators folder

3. Add a new Folder to Animators called Player

4. In the Player sub-folder create a new Animator Controller

5. Rename this animator controller ClickToMoveSlide 17/34

Unite 2016 - Training Day

Phase 2/8The Player

Create states in the Animator state machine

1. Open the Animator window: Window > Animator

2. Select the ClickToMove animator controller in the Project window

Slide 18/34

Unite 2016 - Training Day

Phase 2/8The Player

1. Click on the Parameters tab

2. Click the + button to add a new Parameter

3. Select Float

4. Rename this new parameter to Speed

Slide 19/34

Unite 2016 - Training Day

Phase 2/8The Player

1. Right-click on the background of the layout area

2. Select Create State > From New Blend Tree

3. Select the new state

4. Rename this new state Walking

Slide 20/34

Unite 2016 - Training Day

Phase 2/8The Player

1. Double-click the Walking state to edit the blend tree

2. Select the new blend tree

3. Rename this new blend tree WalkingBlendTree

4. Create 4 motion fields in the blend tree

A. Click the + button

B. Select Add Motion Field to create each field

Slide 21/34

Unite 2016 - Training Day

Phase 2/8The Player

Populate the Motion Fields

1. Click the circle-select button to the right of the field

2. This will bring up an Asset Picker window

3. Select the appropriate assets, 1 for each field: PlayerIdleBlender, WalkSlow, WalkNormal, WalkFast

Slide 22/34

Unite 2016 - Training Day

Phase 2/8The Player

1. Uncheck Automate Thresholds

2. Click Compute Thresholds

3. Select Speed

Slide 23/34

Unite 2016 - Training Day

Phase 2/8The Player

Create the Idle Animation State

1. Return to the Base Layer

2. Navigate to the Project window

3. Expand the folders Animations > Player

4. Expand the Idle2 fbx asset

5. Drag the PlayerIdleLong animation into the Animator window

Slide 24/34

Unite 2016 - Training Day

Phase 2/8The Player

Create a Transition between the two states

1. Select the Walking state This step is important - Walking must be selected

2. Right-click on the Walking state …

3. Select Make Transition

4. Left-click on the PlayerIdleLong state

Slide 25/34

Unite 2016 - Training Day

Phase 2/8The Player

1. Set the details on the Transition

1. Select the Transition

2. Navigate to the Inspector window

3. Uncheck Has Exit Time

4. Find the Conditions list

5. Click the + to add a Condition

Slide 26/34

Unite 2016 - Training Day

Phase 2/8The Player

Set the details of the new Condition

1. The parameter is automatically set to Speed

2. Click the comparison button drop down

3. Select Less

4. Set the value to 0.01

Slide 27/34

Unite 2016 - Training Day

Phase 2/8The Player

Create a second Transition back between the states

1. Select the PlayerIdleLong state It’s Important that PlayerIdleLong is selected

2. Right-click on the PlayerIdleLong state

3. Select Make Transition

4. Left-click on the Walking state

Slide 28/34

Unite 2016 - Training Day

Phase 2/8The Player

Set the details on the second Transition

1. Select the new Transition

2. Navigate to the Inspector window

3. Uncheck Has Exit Time

4. Find the Conditions list

5. Click the + to add a Condition

Slide 29/34

Unite 2016 - Training Day

Phase 2/8The Player

Set the details of the new Condition

1. The parameter is automatically set to Speed

2. The comparison is automatically set to Greater

3. Set the value to 0.01

Slide 30/34

Unite 2016 - Training Day

Phase 2/8The Player

Apply the Animator Controller

1. Select the Player in the Hierarchy

2. Find the Animator component

3. Click the Controller field’s the circle-select button

4. Select the ClickToMove asset

5. Uncheck Apply Root Motion

Slide 31/34

Unite 2016 - Training Day

Phase 2/8The Player

1. Open the PlayerMovement script for editing

Slide 32/34

Unite 2016 - Training Day

Phase 2/8The Player

1. Save the script

2. Return to Unity

Slide 33/34

Unite 2016 - Training Day

Phase 2/8The Player

1. Select the Player in the Hierarchy

2. Find the PlayerMovement component

3. Drag the Player’s Animator component and …

4. Drop it on the Animator field

5. Apply changes to the Player prefab

6. Save the Scene and Test

Slide 34/34

Exit Play Mode

End of Phase 02

Phase 03 The Interactable Prefab

Unite 2016 - Training Day

Phase 3/8The Interactable Prefab

1. Make sure you are not in Play Mode and the Scene View is showing

Slide 1/27

Unite 2016 - Training Day

Phase 3/8The Interactable Prefab

1. Navigate to the Hierarchy Window

2. Create a new Empty GameObject Create > Create Empty

3. Rename this new GameObject Interactable

4. Reset the Transform

5. Add a Box Collider component

Slide 2/27

Unite 2016 - Training Day

Interaction Phase 1/8

Interactable

Slide 3/27

Unite 2016 - Training Day

Interaction Phase 1/8

Interactable

Default Reaction

Slide 4/27

Unite 2016 - Training Day

Interaction Phase 1/8

Interactable

ReactionText, Audio, Etc.

Default Reaction

Slide 5/27

Unite 2016 - Training Day

Interaction Phase 1/8

Interactable

ReactionText, Audio, Etc.

Default Reaction

ConditionCondition

Condition

Slide 6/27

Unite 2016 - Training Day

Interaction Phase 1/8

Interactable

ReactionText, Audio, Etc.

Default Reaction

Condition

Condition

Condition

Slide 7/27

Unite 2016 - Training Day

Interaction Phase 1/8

Interactable

ReactionText, Audio, Etc.

Default Reaction

Condition

Condition

Condition

Reaction

Slide 8/27

Unite 2016 - Training Day

Interaction Phase 1/8

Interactable

ReactionText, Audio, Etc.

Default Reaction

ReactionText, Audio, Etc.

Condition

Condition

Condition

Reaction

Slide 9/27

Unite 2016 - Training Day

Interaction Phase 1/8

Interactable

ReactionText, Audio, Etc.

Default Reaction

ReactionText, Audio, Etc.

ReactionText, Audio, Etc.

Condition

Condition

Slide 10/27

Unite 2016 - Training Day

Interaction Phase 1/8

Condition Reaction

GameObject

Interactable

Carried

Equipped

Animation

Audio

GameObject

Scene

Item

Slide 11/27

Unite 2016 - Training Day

Interaction Phase 1/8

Carried - DisguiseCarried - Coffee

GameObject - Laser Gate On

Animation - GuardAnimation - Player

GameObject - Laser Gate Off

Audio - Guard

Condition Reaction

Slide 12/27

Unite 2016 - Training Day

Phase 3/8The Interactable Prefab

1. Navigate to the Project window

2. Expand the Scripts folder

3. Expand the Interaction folder

4. Find the script Interactable

5. Open the Interactable script for editing

Slide 13/27

Unite 2016 - Training Day

Phase 3/8The Interactable Prefab

1. Save the script

2. Return to Unity

Slide 14/27

Unite 2016 - Training Day

Phase 3/8The Interactable Prefab

1. Navigate to the Project window

2. Expand the Scripts folder

3. Expand the Interaction folder

4. Find the script Condition

5. Open the Condition script for editing

Slide 15/27

Unite 2016 - Training Day

Phase 3/8The Interactable Prefab

1. Save the script

2. Return to Unity

Slide 16/27

Unite 2016 - Training Day

Phase 3/8The Interactable Prefab

1. Navigate to the Project window

2. Expand the Scripts folder

3. Expand the Interaction folder

4. Find the script Reaction

5. Open the Reaction script for editing

Slide 17/27

Unite 2016 - Training Day

Phase 3/8The Interactable Prefab

1. Save the script

2. Return to Unity

Slide 18/27

Unite 2016 - Training Day

Phase 3/8The Interactable Prefab

1. Navigate to the Project window

2. Expand the Scripts folder

3. Expand the Interaction folder

4. Find the script Interactable

5. Drag the Interactable script onto the Interactable GameObject

Slide 19/27

Unite 2016 - Training Day

Phase 3/8The Interactable Prefab

1. Navigate to the Hierarchy window

2. Right-click the Interactable GameObject

3. Select Create Empty

4. Select and Duplicate the new GameObject

5. Name the first GameObject InteractionLocation

6. Name the second GameObject DefaultReaction

Slide 20/27

Unite 2016 - Training Day

Phase 3/8The Interactable Prefab

1. Select the DefaultReaction GameObject

2. Add a Reaction component

Slide 21/27

Unite 2016 - Training Day

Phase 3/8The Interactable Prefab

1. Select the Interactable GameObject

2. Drag the InteractionLocation GameObject onto the InteractionLocation field

3. Drag the DefaultReaction GameObject onto the DefaultLocation field

Slide 22/27

Unite 2016 - Training Day

Phase 3/8The Interactable Prefab

1. Navigate to the Project window

2. Expand the Scripts folder

3. Expand the Player folder

4. Find the script PlayerMoment

5. Open the PlayerMovement script for editing

Slide 23/27

Unite 2016 - Training Day

Phase 3/8The Interactable Prefab

1. Save the script

2. Return to Unity

Slide 24/27

Unite 2016 - Training Day

Phase 3/8The Interactable Prefab

1. Navigate to the Hierarchy window

2. Select the Interactable GameObject

3. Add an EventTrigger component to the Interactable GameObject

Slide 25/27

Unite 2016 - Training Day

Phase 3/8The Interactable Prefab

On the EventTrigger component:

1. Click Add New Event Type

2. Select PointerClick

3. Click the + button to add an Event to the list

4. Note: We will not populate the Pointer Click event

Slide 26/27

Unite 2016 - Training Day

Phase 3/8The Interactable Prefab

1. Drag the Interactable GameObject into the Prefabs folder to create a new prefab

2. Save the Scene

Slide 27/27

End of Phase 03

Phase 04 An example Interactable

Unite 2016 - Training Day

Phase 4/8An example Interactable

Creating Foundation Elements for Reactions

1. Set the Scene View to 2D mode

2. Set the Game View to 16:9

Slide 1/23

Unite 2016 - Training Day

Phase 4/8An example Interactable

1. In the Hierarchy, create a new UI Text element Create > UI > Text

2. Rename the Text GameObject MessageText

3. Reset the MessageText’s RectTransform’s Position

Slide 2/23

Unite 2016 - Training Day

Phase 4/8An example Interactable

1. Select the Canvas GameObject

2. With the Canvas selected, Frame Selected using the F key while the pointer is over the Scene View

3. Rename the Canvas GameObject MessageCanvas

4. Remove the Graphics Raycaster

Slide 3/23

Unite 2016 - Training Day

Phase 4/8An example Interactable

1. Find the Canvas Scalar on the MessageCanvas

2. Set the UI Scale Mode to Scale With Screen Size

3. Set the Reference Resolution to 1920 x 1080

4. Add a Text Manager component to MessageCanvas

5. Drag the MessgeText GameObject onto the Text field of the Text Manager

Slide 4/23

Unite 2016 - Training Day

Phase 4/8An example Interactable

1. Select the MessageText GameObject

2. Click the Anchors Presets button on the RectTransform

3. Hold the Alt-Key down and …

4. Alt-Click the preset Bottom / Stretch

5. Set the Pos Y to 50

6. Set the Height to 100Slide 5/23

Unite 2016 - Training Day

Phase 4/8An example Interactable

1. Find the Text component on MessageText

2. Set the Color to White

3. Set the Font to Geo-Regular

4. Set the Font Size to 75

5. Set the Alignment to Center / Middle

6. Add an Outline component to MessageText

Slide 6/23

Unite 2016 - Training Day

Phase 4/8An example Interactable

1. Drag the MessageCanvas from the hierarchy into the Prefabs folder

2. Disable 2D mode on the Scene View

3. Select the Player GameObject and Frame Selected

4. Save the Scene

Slide 7/23

Unite 2016 - Training Day

Phase 4/8An example Interactable

1. In the Hierarchy, create a new Empty GameObject Create > Create Empty

2. Rename the new Empty GameObject AudioParent

3. Right-click AudioParent

4. Select Audio > Audio Source

Slide 8/23

Unite 2016 - Training Day

Phase 4/8An example Interactable

With the new Audio Source child selected:

1. Duplicate the Audio Source GameObject twice Note: There should be 3 copies of Audio Source

2. Rename the Audio Source copies: A. FX B. VO C. Ambient

Slide 9/23

Unite 2016 - Training Day

Phase 4/8An example Interactable

1. Multi-Select both the FX and VO GameObjects

2. On the Audio Source, disable Play On Awake

3. Select the Ambient GameObject

4. On the Audio Source, enable Loop

Slide 10/23

Unite 2016 - Training Day

Phase 4/8An example Interactable

1. Drag the AudioParent GameObject into the Prefabs folder

2. Save the scene

3. In the Hierarchy, select the Ambient GameObject

4. Set the Audio Clip to SecurityRoomAmbient

Slide 11/23

Unite 2016 - Training Day

Phase 4/8An example Interactable

Setting up the Interactable example

1. Select the Interactable GameObject in the Hierarchy

2. Rename this GameObject PictureInteractable

3. Set the Position to (4.6, 0.0, 0.15)

4. Set the Center of the Box Collider to (0, 2.35, 0)

5. Set the Size of the Box Collider to (0.25, 1.7, 2.7)

Slide 12/23

Unite 2016 - Training Day

Phase 4/8An example Interactable

1. Find the Event Trigger component

2. Drag the Player from the Hierarchy and …

3. Drop it on the Object field on the Pointer Click event

Slide 13/23

Unite 2016 - Training Day

Phase 4/8An example Interactable

On the EventTrigger component’s Pointer Click list:

1. Click the Function drop-down menu This drop-down menu says “No Function”

2. Select PlayerMovement > OnInteractableClick

3. Drag the Interactable component above and …

4. Drop it on the OnInteractableClick Parameter field

Slide 14/23

Unite 2016 - Training Day

Phase 4/8An example Interactable

1. Select the InteractionLocation child GameObject in the Hierarchy

2. Set the Position to (-1.5, 0.0, 0.0)

3. Set the Rotation to (0, 90, 0)

Slide 15/23

Unite 2016 - Training Day

Phase 4/8An example Interactable

1. Save the Scene and Test by entering Play Mode

2. Note: We move to the Interaction Location but nothing happens when we get there!

3. Note: There are no audio listeners in this scene. Ignore the warning. We won’t hear any audio yet.

Slide 16/23

Exit Play Mode

Slide 17/23

Unite 2016 - Training Day

Phase 4/8An example Interactable

Adding Reactions to Interactable

1. Navigate to the Hierarchy window

2. Expand the PictureInteractable GameObject

3. Select the DefaultReaction child GameObject

Slide 18/23

Unite 2016 - Training Day

Phase 4/8An example Interactable

1. Expand Audio Reactions

2. Set the Size to 1

3. Expand Element 0

4. Set the Audio Source to VO

5. Set the Audio Clip to PlayerThisGuyLooksTrustworthy

Slide 19/23

Unite 2016 - Training Day

Phase 4/8An example Interactable

1. Expand Text Reaction

2. Set the Text Manager to the MessageCanvas

3. Set the Message to “This guy looks pretty trustworthy…”

Slide 20/23

Unite 2016 - Training Day

Phase 4/8An example Interactable

1. Select the EventSystem GameObject

2. Add an Audio Listener component for testing

3. Save the scene

4. Test by entering Play Mode

Slide 21/23

Exit Play Mode

Slide 22/23

Unite 2016 - Training Day

Phase 4/8An example Interactable

1. Select Mute Audio in the Game View

2. Delete the EventSystem GameObject along with the Audio Listener component

3. Save the Scene

Slide 23/23

End of Phase 04

Phase 05 Changing Scenes

Unite 2016 - Training Day

Phase 5/8An example Interactable

1. The architecture of changing scenes

Slide 1/58

Unite 2016 - Training Day

Persistent Scene Phase 5/8

Game Start

Slide 2/58

Unite 2016 - Training Day

Persistent Scene Phase 5/8

Load

Slide 3/58

Unite 2016 - Training Day

Persistent Scene Phase 5/8

Persistent Scene

Load

Slide 4/58

Unite 2016 - Training Day

Persistent Scene Phase 5/8

Persistent Scene

Scene 1 Scene 2

Slide 5/58

Unite 2016 - Training Day

Persistent Scene Phase 5/8

Persistent Scene

Scene 1 Scene 2

Slide 6/58

Unite 2016 - Training Day

Persistent Scene Phase 5/8

Persistent Scene

Load Level Additive

Scene 1 Scene 2

Slide 7/58

Unite 2016 - Training Day

Persistent Scene Phase 5/8

Scene 1 Scene 2

Load Level Additive

Persistent Scene

Slide 8/58

Unite 2016 - Training Day

Persistent Scene Phase 5/8

Scene 2

Persistent Scene

Scene 1

Load Level Additive

Slide 9/58

Unite 2016 - Training Day

Persistent Scene Phase 5/8

Set Active Scene

Scene 2

Persistent Scene

Scene 1

Slide 10/58

Unite 2016 - Training Day

Persistent Scene Phase 5/8

Set Active Scene

Scene 1

Scene 2

Persistent Scene

Slide 11/58

Unite 2016 - Training Day

Persistent Scene Phase 5/8

Scene 1

Scene 2

Persistent Scene

Slide 12/58

Unite 2016 - Training Day

Persistent Scene Phase 5/8

Scene 1

Scene 2

Persistent Scene

Unload Scene

Slide 13/58

Unite 2016 - Training Day

Persistent Scene Phase 5/8

Scene 1 Scene 2

Unload Scene

Persistent Scene

Slide 14/58

Unite 2016 - Training Day

Persistent Scene Phase 5/8

Scene 1 Scene 2

Persistent Scene

Slide 15/58

Unite 2016 - Training Day

Persistent Scene Phase 5/8

Scene 1 Scene 2

Persistent Scene

Load Level Additive

Slide 16/58

Unite 2016 - Training Day

Persistent Scene Phase 5/8

Scene 1 Scene 2

Persistent Scene

Load Level Additive

Slide 17/58

Unite 2016 - Training Day

Persistent Scene Phase 5/8

Scene 1

Scene 2

Load Level Additive

Persistent Scene

Slide 18/58

Unite 2016 - Training Day

Persistent Scene Phase 5/8

Scene 1

Scene 2

Set Active Scene

Persistent Scene

Slide 19/58

Unite 2016 - Training Day

Persistent Scene Phase 5/8

Scene 1

Scene 2

Set Active Scene

Persistent Scene

Slide 20/58

Unite 2016 - Training Day

Phase 5/8Changing Scenes

1. Navigate to the Project window

2. Expand the Scenes folder

3. Open the Market scene

4. Expand the Prefabs folder

5. Drag the Player prefab into the scene

Slide 21/58

Unite 2016 - Training Day

Phase 5/8Changing Scenes

1. Navigate to the Hierarchy window

2. Reset the Transform on the Player GameObject

3. Expand the Market GameObject

4. Select the CameraRig GameObject

5. Find the Camera Control component

6. Set the Player Position to the Player GameObject

Slide 22/58

Unite 2016 - Training Day

Phase 5/8Changing Scenes

1. Save the Scene

2. Test by entering Play Mode

3. The camera should now track the Player’s Position

4. The Player can’t move yet, however…

Slide 23/58

Exit Play Mode

Slide 24/58

Unite 2016 - Training Day

Phase 5/8Changing Scenes

1. Open the Navigation window This should still be docked under the Inspector

2. Note: The settings should have been saved with the scene

3. Click Bake

4. Return to the Inspector window

Slide 25/58

Unite 2016 - Training Day

Phase 5/8Changing Scenes

1. Set up event trigger

2. Select the Market GameObject

3. Find the Event Trigger component

4. Drag the Player GameObject onto the Object field

5. Select the Function drop-down menu

6. Select Player Movement > OnGroundClick

Slide 26/58

Unite 2016 - Training Day

Phase 5/8Changing Scenes

1. Navigate to the Project window

2. Expand the Prefabs folder

3. Drag the MessageCanvas prefab into the Scene

4. Drag the AudioParent prefab into the Scene

Slide 27/58

Unite 2016 - Training Day

Phase 5/8Changing Scenes

1. Navigate to the Hierarchy window

2. Expand the AudioParent GameObject

3. Select the Ambient child GameObject

4. Find the Audio Source component

5. Set the Audio Clip to MarketAmbient

6. Save the Scene

Slide 28/58

Unite 2016 - Training Day

Phase 5/8Changing Scenes

1. Create a new Scene

2. Save this new Scene as “Persistent” Scenes > Persistent

3. Open the Build Settings window File > Build Settings

Slide 29/58

Unite 2016 - Training Day

Phase 5/8Changing Scenes

1. Add the Persistent Scene to Scenes In Build

2. Add both the SecurityRoom and Market Scenes to Scenes In Build

3. Make sure the Persistent Scene is at Index 0, or the top of the list

4. Close the Build Settings window

Slide 30/58

Unite 2016 - Training Day

Phase 5/8Changing Scenes

1. Navigate to the Hierarchy window

2. Delete all of the starting GameObjects in the Scene Note: The Game View will show a warning - ignore it

3. Create a new Audio Source GameObject Create > Audio > Audio Source

4. Rename the new GameObject BackgroundMusic

Slide 31/58

Unite 2016 - Training Day

Phase 5/8Changing Scenes

1. Select the BackgroundMusic GameObject

2. Reset the GameObject’s Transform

3. Find the Audio Source component

4. Set the Audio Clip to BackgroundMusic

5. Select Loop

Slide 32/58

Unite 2016 - Training Day

Phase 5/8Changing Scenes

1. Create a new Empty GameObject

2. Rename this new GameObject AudioListener

3. Reset the AudioListener’s Transform

4. Add an Audio Listener component

Slide 33/58

Unite 2016 - Training Day

Phase 5/8Changing Scenes

1. Enable 2D mode on the Scene View

2. Find Scene Effects button and Turn Off Skybox

3. Create a new UI Image element Create > UI > Image

4. Select the Image GameObject

5. Rename the Image FadeImage

6. Reset the new Image’s RectTransformSlide 34/58

Unite 2016 - Training Day

Phase 5/8Changing Scenes

1. Select the new Canvas and Frame Selected

2. Rename the new Canvas PersistentCanvas

3. Find the Canvas Scalar component

4. Set the UI Scale Mode to Scale With Screen Size

5. Set the Reference Resolution to 1920 x 1080

Slide 35/58

Unite 2016 - Training Day

Phase 5/8Changing Scenes

1. Select the FadeImage GameObject

2. Find the RectTransform component

3. Click the Anchors Presets button

4. Hold the Alt-Key down and …

5. Alt-Click the preset Stretch / Stretch

Slide 36/58

Unite 2016 - Training Day

Phase 5/8Changing Scenes

1. With the FadeImage GameObject selected

2. Find the Image component

3. Set the Color property to Black with Full Alpha (0, 0, 0, 255)

4. Add a Canvas Group component to FadeImage

5. Set the Alpha to 0

Slide 37/58

Unite 2016 - Training Day

Phase 5/8Changing Scenes

1. Create a new Empty GameObject

2. Rename this new GameObject SceneController

3. Navigate to the Project window

4. Expand the Scripts / SceneControl folders

5. Drag the SceneController script onto the SceneController GameObject

Slide 38/58

Coroutines

Slide 39/58

Unite 2016 - Training Day

Coroutines

void MyFunction()

{

}

Phase 5/8

Slide 40/58

Unite 2016 - Training Day

Coroutines Phase 5/8

IEnumerator MyCoroutine()

{

yield

}

Slide 41/58

Unite 2016 - Training Day

Coroutines Phase 5/8

IEnumerator MyCoroutine(){

while(){

yield

}}

Slide 42/58

Unite 2016 - Training Day

Phase 5/8Changing Scenes

1. Open the SceneController script for editing

Slide 43/58

Unite 2016 - Training Day

Phase 5/8Changing Scenes

1. Save the script

2. Return to Unity

Slide 44/58

Unite 2016 - Training Day

Phase 5/8Changing Scenes

1. Navigate to the Hierarchy window

2. Select the SceneController GameObject

3. Find the SceneController component

4. Set the Fader Canvas Group to the FadeImage GameObject

Slide 45/58

Unite 2016 - Training Day

Phase 5/8Changing Scenes

1. Save the Scene

2. Test by entering Play Mode

Slide 46/58

Exit Play Mode

Slide 47/58

Unite 2016 - Training Day

Phase 5/8Changing Scenes

1. Navigate to the Project window

2. Expand the Scenes folder

3. Open the SecurityRoom Scene

4. Disable 2D mode on the Scene View

5. Navigate to the Hierarchy window

6. Select the Player GameObject and Frame Selected

Slide 48/58

Unite 2016 - Training Day

Phase 5/8Changing Scenes

1. Navigate to the Project window

2. Expand the Prefabs folder

3. Drag an Interactable prefab into the Scene

4. Navigate to the Hierarchy window

5. Rename the Interactable prefab to DoorToMarketInteractable

Slide 49/58

Unite 2016 - Training Day

Phase 5/8Changing Scenes

With DoorToMarketInteractable selected:

1. Set the Position to (-0.7, 0, 4.5)

2. Set the Center of the Box Collider to (0, 0.2, 0)

3. Set the Size of the Box Collider to (2.4, 0.4, 3)

Slide 50/58

Unite 2016 - Training Day

Phase 5/8Changing Scenes

1. Find the EventTrigger component

2. Find the Pointer Click Event List on the Event Trigger

3. Set the Object field to the Player GameObject

4. Click the Function drop-down

5. Select PlayerMovement > OnInteractableClick

6. Drag the Interactable component onto the Parameter field

Slide 51/58

Unite 2016 - Training Day

Phase 5/8Changing Scenes

Before we can set the Default Reaction, we need to update the Reaction script

1. Navigate to the Project window

2. Expand the Scripts / Interaction folders

3. Open the Reaction script for editing

Slide 52/58

Unite 2016 - Training Day

Phase 5/8Changing Scenes

1. Save the script

2. Return to Unity

Slide 53/58

Unite 2016 - Training Day

Phase 5/8Changing Scenes

1. Navigate to the Hierarchy window

2. Expand the DoorToMarketInteractable

3. Select the DefaultReaction GameObject

4. Find the Reaction component

Slide 54/58

Unite 2016 - Training Day

Phase 5/8Changing Scenes

On the Reaction component:

1. Expand the Audio Reaction

2. Set the Size to 1

3. Set the Audio Source to FX

4. Set the Audio Clip to DoorSlide

Slide 55/58

Unite 2016 - Training Day

Phase 5/8Changing Scenes

On the Reaction component:

1. Expand the Scene Reaction

2. Select Load A Scene

3. Set the Scene To Load as “Market”

4. Save the Scene

Slide 56/58

Unite 2016 - Training Day

Phase 5/8Changing Scenes

1. Navigate to the Project window

2. Expand the Scenes folder

3. Open the Persistent scene

4. Test by entering Play Mode

Slide 57/58

Exit Play Mode

Slide 58/58

End of Phase 05

Phase 06 The Inventory

Unite 2016 - Training Day

Phase 6/8The Inventory

What an Inventory needs to do:

1. Add Items

2. Remove Items

3. Equip an Item

4. Persist between scenes

5. Use ScriptableObjects for Items

6. Display using the UI systemSlide 1/35

Unite 2016 - Training Day

Draw Order Phase 1/8

Hierarchy

UI Canvas

UI Object 01

UI Object 02

Slide 2/35

Unite 2016 - Training Day

Draw Order Phase 1/8

Hierarchy

UI Canvas

UI Object 01

UI Object 02

UI Object 03

Slide 3/35

Unite 2016 - Training Day

Phase 6/8The Inventory

1. Enable 2D mode on the Scene View

2. Select the PersistentCanvas and Frame Selected

3. Right-click on the PersistentCanvas

Slide 4/35

Unite 2016 - Training Day

Phase 6/8The Inventory

1. Navigate to the Project window

2. Find the ItemSlot prefab Prefabs > Item Slot

3. Drag In ItemSlot prefab and …

4. Drop it on the PersistentCanvas GameObject

5. Reset the RectTransform

6. Show ItemSlot GameObjectSlide 5/35

Unite 2016 - Training Day

Phase 6/8The Inventory

Recap Scripting and Script Types

• Unity has several types of scripts that we can write

1. MonoBehaviours

2. ScriptableObjects

3. Ordinary Classes

Slide 6/35

Unite 2016 - Training Day

Phase 6/8The Inventory

1. Navigate to the Project window

2. Expand the Scripts / Inventory folders

3. Open the Item script for editing

Slide 7/35

Unite 2016 - Training Day

Phase 6/8The Inventory

1. Save the script

2. Return to Unity

Slide 8/35

Unite 2016 - Training Day

Phase 6/8The Inventory

1. Navigate to the Project window

2. Create a new Folder at the Root level

3. Rename this new folder Items

4. Right-click on the Items folder

5. Select Create > Item

6. Name the new Item Coin

Slide 9/35

Unite 2016 - Training Day

Phase 6/8The Inventory

1. Select the Coin Asset

2. Duplicate the Coin Asset 3 times Note: There should be 4 copies of Coin

3. Keep 1 copy named Coin

4. Rename the other 3 Coin assets to: A. Coffee B. Glasses C. RedHerring

Slide 10/35

Unite 2016 - Training Day

Phase 6/8The Inventory

1. Select the Coffee Asset and set the Sprite to Coffee

2. Select the Coin Asset and set the Sprite to Coin

3. Select the Glasses Asset A. Set the Sprite to Glasses B. Select Is Equipable

4. Select the RedHerring Asset set the Sprite to RedHerring

Slide 11/35

Unite 2016 - Training Day

Phase 6/8The Inventory

1. Navigate to the Project view

2. Expand the Scripts / Inventory folders

3. Open the ItemSlot for editing

Slide 12/35

Unite 2016 - Training Day

Phase 6/8The Inventory

1. Save the script

2. Return to Unity

Slide 13/35

Unite 2016 - Training Day

Phase 6/8The Inventory

1. Navigate to the Hierarchy window

2. Select the PersistentCanvas GameObject

3. Add a new Inventory component

Slide 14/35

Unite 2016 - Training Day

Phase 6/8The Inventory

1. Open the Inventory script for explanation

Slide 15/35

Unite 2016 - Training Day

Phase 6/8The Inventory

1. DO NOT Save the script

2. Return to Unity

Slide 16/35

Unite 2016 - Training Day

Phase 6/8The Inventory

1. Navigate to the Hierarchy window

2. Select the ItemImage child GameObject of ItemSlot

3. Drag the PersistentCanvas GameObject onto the Object field in the Pointer Click event list

4. From the Function list select Inventory > CarriedItemClicked

5. Note: We will leave the Parameter field empty

Slide 17/35

Unite 2016 - Training Day

Phase 6/8The Inventory

1. Select the HighlightImage child GameObject

2. Drag the PersistentCanvas GameObject onto the Object field in the Pointer Click event list

3. From the Function list select Inventory > CarriedItemHighlightClicked

4. Note: We will leave the Parameter field empty

Slide 18/35

Unite 2016 - Training Day

Phase 6/8The Inventory

1. Select the EquipButton child GameObject

2. Drag the PersistentCanvas GameObject onto the Object field in the On Click event list

3. From the Function list select Inventory > CarriedItemEquipButtonClicked

4. Note: We will leave the Parameter field empty

Slide 19/35

Unite 2016 - Training Day

Phase 6/8The Inventory

In the Hierarchy…

1. Select the PersistentCanvas

2. Right-click on the PersistentCanvas

3. Select Create Empty

4. Rename this new GameObject CarriedItems

5. Reset the Transform

Slide 20/35

Unite 2016 - Training Day

Phase 6/8The Inventory

1. Select the ItemSlot child GameObject

2. Duplicate the ItemSlot GameObject

3. Move the duplicate into CarriedItems as a child

4. Duplicate this child ItemSlot 3 more times Note: There should be 4 copies of ItemSlot as children of CarriedItems

Slide 21/35

Unite 2016 - Training Day

Phase 6/8The Inventory

1. Rename the 4 child copies of ItemSlot:

A. ItemSlot0 B. ItemSlot1 C. ItemSlot2 D. ItemSlot3

Slide 22/35

Unite 2016 - Training Day

Phase 6/8The Inventory

1. For each ItemSlot child in CarriedItems:

A. Set the Index Parameter on ItemImage to match the child’s order

B. Set the Index Parameter on EquipButton to match the child’s order

2. This means: C. ItemSlot0 should have an index of 0 D. ItemSlot1 should have an index of 1, etc.

Slide 23/35

Unite 2016 - Training Day

Phase 6/8The Inventory

1. Select the CarriedItems GameObject

2. Click the Anchors Presets button on the RectTransform

3. Hold the Alt-Key down and …

4. Alt-Click the preset Middle / Right

Slide 24/35

Unite 2016 - Training Day

Phase 6/8The Inventory

With the CarriedItems GameObject selected:

1. Set the Pos X to -87.5

2. Set the Width to 135

3. Set the Height to 600

4. Add a Vertical Layout Group

5. Set the Spacing to 20

Slide 25/35

Unite 2016 - Training Day

Phase 6/8The Inventory

1. Select the original ItemSlot that is not a child of Carried Items

2. Rename the ItemSlot GameObject EquippedItemSlot

3. Select and Delete the HighlightImage child GameObject

4. Select and Delete the EquipButton child GameObject

Slide 26/35

Unite 2016 - Training Day

Phase 6/8The Inventory

1. Select the ItemImage child GameObject

2. Remove the EventTrigger component

Slide 27/35

Unite 2016 - Training Day

Phase 6/8The Inventory

1. Select the EquippedItemSlot

2. Click the Anchors Presets button on the RectTransform

3. Hold the Alt-Key down and …

4. Alt-Click the preset Top / Right

5. Set the Pos X and Pos Y to -120

6. Set the Width and Height to 200Slide 28/35

Unite 2016 - Training Day

Phase 6/8The Inventory

1. Select the PersistentCanvas GameObject

2. Find the Inventory component

3. Drag the EquippedItemSlot GameObject onto the Equipped Item Slot field

Slide 29/35

Unite 2016 - Training Day

Phase 6/8The Inventory

With the PersistentCanvas selected:

1. Lock the Inspector window

2. Multi-Select ItemSlot0 - ItemSlot3

3. Drag these multi-selected ItemSlots and …

4. Drop them onto the Carried Item Slots Note: The drop target is the name of the field Note: A + icon should appear on the pointer

Slide 30/35

Unite 2016 - Training Day

Phase 6/8The Inventory

1. Unlock the Inspector window

2. Alt-Collapse the PersistentCanvas GameObject

3. Expand the PersistentCanvas GameObject

4. Reorder the FadeImage GameObject to the bottom of the list of children in the PersistentCanvas family

5. Save the Scene

Slide 31/35

Unite 2016 - Training Day

Phase 6/8The Inventory

1. Navigate to the Project window

2. Expand the Scripts / Inventory folders

3. Open the Inventory script for editing

Slide 32/35

Unite 2016 - Training Day

Phase 6/8The Inventory

1. Save the script

2. Return to Unity

Slide 33/35

Unite 2016 - Training Day

Phase 6/8The Inventory

1. Save the Scene

2. Test by entering Play Mode

Slide 34/35

Exit Play Mode

Slide 35/35

End of Phase 06

Phase 07 Interacting with the Inventory

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

1. Navigate to the Project window

2. Expand the Scripts / Interaction folders

3. Open the Reaction script for editing

Unite 2016 - Training Day

The Inventory Phase 6/8

1. Save the script

2. Return to Unity

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

1. Navigate to the Project window

2. Expand the Scenes folder

3. Open the Market scene

4. Disable 2D mode on the Scene View

5. Navigate to the Hierarchy window

6. Select the Player GameObject and Frame Selected

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

1. Navigate to the Project window

2. Expand the Prefabs folder

3. Select the Interactable prefab and…

4. Drag it into the Hierarchy

5. Rename the Interactable GameObject to CoinInteractable

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

With the CoinInteractable GameObject selected:

1. Set the Position to (0.45, 0, -1.75)

2. Set the Center of the Box Collider to (0, 0.5, 0)

3. Set the Size of the Box Collider to (0.3, 0.3, 0.3)

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

With the CoinInteractable GameObject selected:

1. Find the Event Trigger component

2. Drag the Player GameObject onto the Object field

3. From the Function list select PlayerMovement > OnInteractableClick

4. Drag the Interactable component onto Parameter field

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

1. Expand CoinInteractable

2. Select the InteractionLocation GameObject

3. Set the Position to (0, 0, 0.8)

4. Set the Rotation to (0, 180, 0)

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

1. Select the DefaultReaction GameObject

2. Find the Reaction component

3. Set the Size of the Audio Reactions array to 2

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

On the Reaction component’s Audio Reaction array:

1. For Element 0 A. Set the Audio Source to VO B. Set the Audio Clip to PlayerPickupCoin

2. For Element 1 C. Set the Audio Source to FX D. Set the Audio Clip to Pickup

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

On the Reaction component:

1. Set the Size of the Game Object Reactions array to 1

2. Expand the Market GameObject

3. Find the Coin GameObject Market > Coin

4. Drag the Coin GameObject onto Game Object To Deactivate field

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

On the Reaction component:

1. Set the Size of the Item Reactions to 1

2. Navigate to the Project window

3. Expand the Items folder

4. Drag the Coin asset onto Picked Up Item field

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

1. Note the different Coins:

1. Coin as GameObject in the Scene

2. Coin as ScriptableObject asset in the Project

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

On the Reaction component:

1. Expand the Text Reaction

2. Set the Text Manager to the MessageCanvas

3. Set the Message to “Oh! A coin!”

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

On the Reaction component:

1. Set the Size of the Used Interactable Reactions to 1

2. Set the Interactable to the CoinInteractable parent

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

1. Save the Scene

2. Navigate to the Project window

3. Expand the Scenes folder

4. Open the Persistent scene

5. Test by entering Play Mode

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

1. Note a few things here:

1. We move to the interactable, but the Player GameObject does not have an animation Reaction

2. We can select the coin several times

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

1. Navigate to the Project window

2. Expand the Animators > Player folders

3. Select the ClickToMove animator controller

4. Open the Animator window

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

1. Navigate to the Project window

2. Expand the Animations > Player folders

3. Expand the TakeItemAttempt fbx file

4. Drag the TakeItemAttempt animation into the Animator window

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

With the Animations > Player folders open:

1. Expand the TakeItemVarious fbx file

2. Select the following animations A. TakeItemHigh B. TakeItemMed C. TakeItemLow

3. Drag these into the Animator window

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

1. Position these TakeItem states between the Walking state and the Any State

2. Select the Any State

3. Right-click on the Any State & select Make Transition

4. Left-click on the TakeItemAttempt state

5. Repeat for each of the other TakeItem states

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

For each TakeItem state in the Animator window:

1. Select the TakeItem state

2. Right-click on the TakeItem state

3. Select Make Transition

4. Left-click on the Walking state to complete the transition

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

1. Find the Parameters tab

2. Add a new Trigger Parameter using the + button

3. Name the new Trigger Parameter AttemptTake

4. Repeat this step 3 more times creating: A. HighTake B. MedTake C. LowTake

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

For each Transition between Any State and Take Item:

1. Select the Transition

2. Find the Conditions list

3. Add a new Condition

4. Change the Condition to match the Transition transition to TakeItemAttempt is AttemptTake transition to TakeItemHigh is HighTake - etc.

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

For each Transition between any Take Item state and Walking:

1. Do nothing - this is controlled by Has Exit Time

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

1. Save the Scene

2. Navigate to the Project window

3. Expand the Scenes folder

4. Open the Market Scene

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

With the Market Scene open:

1. Make sure the Scene View is visible

2. Frame Selected on the Player GameObject

3. Expand the CoinInteractable GameObjects

4. Select the DefaultReaction GameObject

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

With the DefaultReaction GameObject selected:

1. Set the Size of the Animation Reactions to 1

2. Set the Animator to Player

3. Set the Animator Trigger to MedTake

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

With the DefaultReaction GameObject selected:

1. Expand Audio Reactions

2. Expand On Element 1 (Pickup)

3. Change the Delay to 1

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

With the DefaultReaction GameObject selected:

1. Expand Game Object Reactions

2. Expand On Element 0

3. Change the Delay to 1

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

With the DefaultReaction GameObject selected:

1. Expand Item Reactions

2. Expand On Element 0

3. Change the Delay to 1

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

1. Save the Scene

2. Navigate to the Project window

3. Expand the Scenes folder

4. Open the Persistent Scene

5. Test by entering Play Mode

Exit Play Mode

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

1. Navigate to the Project window

2. Expand the Animators folder

3. Open the ClickToMove controller in the Animator window

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

1. Select the PlayerIdleLong state

2. Set the Tag to Locomotion

3. Select the Walking state

4. Set the Tag to Locomotion

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

1. Navigate to the Project window

2. Expand the Scripts / Player folders

3. Open the PlayerMovement script for editing

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

1. Save the script

2. Return to Unity

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

1. Navigate to the Project window

2. Expand the Scenes folder

3. Open the Market Scene

4. Frame Selected on the Player

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

1. Select the CoinInteractable

2. Right-click on the CoinInteractable

3. Select Create > Create Empty

4. Rename this new empty GameObject UsedReaction

5. Add a Reaction component

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

With the Reaction component selected

1. Set the Size of the Audio Reactions to 1

2. Expand Element 0

3. Set the Audio Source to VO

4. Set the Audio Clip to PlayerNoMoreCoins

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

With the Reaction component selected

1. Expand the Text Reaction

2. Set the TextManager to MessageCanvas

3. Set the Message to “There are no more coins…”

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

1. Select the CoinInteractable GameObject

2. Find the Interactable component

3. Set the Size of Conditions to 1

4. Expand Element 0

5. Set the Description to Used

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

On the Interactable component, on the Used condition …

1. Set the Size of Interactable Conditions to 1

2. Expand Element 0

3. Set the Interactable to CoinInteractable

4. Set the Used State to True

5. Set the Reaction to UsedReaction

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

1. Save the Scene

2. Navigate to the Project window

3. Expand the Scenes folder

4. Open the Persistent Scene

5. Test by entering Play Mode

Exit Play Mode

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

1. Navigate to the Project window

2. Expand the Scenes folder

3. Open the Market Scene

4. Make sure the Scene View is visible

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

1. Expand the Prefabs folder

2. Find the Interactable prefab

3. Drag the Interactable prefab into the Hierarchy window

4. Rename the new Interactable GameObject CoffeeBotInteractable

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

With the CoffeeBotInteractable GameObject selected:

1. Set the Position to (8.6, 0, -1)

2. Set the Rotation to (0, 135, 0)

3. Find the Box Collider component

4. Set the Center to (0, 1, 0)

5. Set the Size to (2, 2, 2)

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

With the CoffeeBotInteractable GameObject selected:

1. Find the Event Trigger component

2. Drag the Player GameObject onto the Object field

3. Click the Function drop-down

4. Select PlayerMovement > OnInteractableClick

5. Set the Parameter to CoffeeBotInteractable

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

1. Expand the CoffeeBotInteractable

2. Select the InteractableLocation GameObject

3. Set the Position to (-0.45, 0, -2.7)

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

1. Select the DefaultReaction GameObject

2. Find the Reaction component

3. Set the Size of Audio Reactions to 1

4. Set the Audio Source to VO

5. Set the Audio Clip to CoffeBotCoffeeOnlyACoin

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

With the DefaultReaction GameObject selected, on the Reaction component

1. Expand the Text Reaction

2. Set the Text Manager to Message Canvas

3. Set the Message to “Fresh Coffee! Just one coin!”

4. Set the Color to (145, 221, 164, 255) Save the color as a preset

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

1. Select the CoffeeBotInteractable

2. Right-click on the CoffeeBotInteractable

3. Select Create Empty

4. Rename this new GameObject HasCoinReaction

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

With the HasCoinReaction GameObject selected:

1. Add a new Reaction component

2. Set the Size of Animation Reactions to 2

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

With the HasCoinReaction GameObject selected:

1. Expand Element 0

2. Set the Animator to CoffeeBot

3. Set the Animator Trigger to MakeCoffee

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

With the HasCoinReaction GameObject selected:

1. Expand Element 1

2. Set the Animator to Player

3. Set the Animator Trigger to HighTake

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

With the HasCoinReaction GameObject selected:

1. Set the Size of Audio Reactions to 2

2. Expand Element 0

3. Set the Audio Source to VO

4. Set the Audio Clip to CoffeeBotHeresYourCoffee

5. Set the Delay to 1

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

With the HasCoinReaction GameObject selected:

1. Expand Element 1

2. Set the Audio Source to FX

3. Set the Audio Clip to Pickup

4. Set the Delay to 1

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

With the HasCoinReaction GameObject selected:

1. Set the Size of Item Reactions to 1

2. Expand Element 0

3. Set the Picked Up Item to Coffee

4. Set the Lost Item to Coin

5. Set the Delay to 1

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

With the HasCoinReaction GameObject selected:

1. Expand Text Reaction

2. Set Text Manager to MessageCanvas

3. Set the Message to “Enjoy your coffee! Bye!”

4. Set the Color to CoffeeBot-Green using the Preset

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

With the HasCoinReaction GameObject selected:

1. Set the Size of Used Interactable Reactions to 1

2. Expand Element 0

3. Set the Interactable to CoffeeBotInteractable

4. Save the Scene

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

1. Navigate to the Project window

2. Expand the Scripts / Inventory folder

3. Open the Inventory script for editing

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

1. Save the script

2. Return to Unity

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

1. Navigate to the Project window

2. Expand the Scripts / Interaction folder

3. Open the Condition script for editing

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

1. Save the script

2. Return to Unity

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

1. Navigate to the Project window

2. Expand the Scripts / Interaction folder

3. Open the Interactable script for editing

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

1. Save the script

2. Return to Unity

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

1. Navigate to the Hierarchy window

2. Find the Interactable component

3. Set the Size of Conditions to 1

4. Set the Description to HasCoinAndUnused

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

On the Interactable component in Conditions:

1. Set the Size of Carried Item Conditions to 1

2. Set the Carried Item to Coin

3. Set the Size of Interactable Conditions to 1

4. Set the Interactable to CoffeeBotInteractable

Unite 2016 - Training Day

Phase 7/8Interacting with the Inventory

On the Interactable component in Conditions:

1. Set the Reaction to HasCoinReaction

2. Save the Scene

3. Navigate to the Project window

4. Open the Persistent Scene

5. Test by entering Play Mode

Exit Play Mode

End of Phase 07

Phase 08 Data Persistence

Unite 2016 - Training Day

Phase 8/8Data Persistence

1. Navigate to the Project window

2. Expand the Scripts / DataPersistence folders

3. Open the PersistentDataObject script for editing

Unite 2016 - Training Day

Phase 8/8Data Persistence

1. Save the script

2. Return to Unity

Unite 2016 - Training Day

Phase 8/8Data Persistence

1. Navigate to the Project window

2. Expand the Scripts / Interaction folders

3. Open the Reaction script for editing

Unite 2016 - Training Day

Phase 8/8Data Persistence

1. Save the script

2. Return to Unity

Unite 2016 - Training Day

Phase 8/8Data Persistence

1. Navigate to the Project window

2. Expand the Scripts / Player folders

3. Open the PlayerMovement script for editing

Unite 2016 - Training Day

Phase 8/8Data Persistence

1. Save the script

2. Return to Unity

Unite 2016 - Training Day

Phase 8/8Data Persistence

1. Navigate to the Project window

2. Make sure no items are selected

3. Create a new Folder in the Root level of the Project

4. Rename this folder PersistentDataObjects

Unite 2016 - Training Day

Phase 8/8Data Persistence

1. Right-click on the PersistentDataObjects folder

2. Select Create > Folder

3. Rename this folder Player

4. Right-click on the Player folder

5. Select Create > PersistentDataObject

6. Rename this new asset PlayerLocationData

Unite 2016 - Training Day

Phase 8/8Data Persistence

With the PlayerLocationData asset selected:

1. Set the Default Position to (-0.7, 0, 3.5)

2. Set the Default Rotation to (0, 180, 0)

Unite 2016 - Training Day

Phase 8/8Data Persistence

1. Navigate to the Project window

2. Expand the Scenes folder

3. Open the Security Room scene

4. Expand the DoorToMarketInteractable GameObject

5. Select the DefaultReaction GameObject

Unite 2016 - Training Day

Phase 8/8Data Persistence

With DoorToMarketInteractable selected:

1. Find the Reaction component

2. Find the Scene Reaction property

3. Set the Player Location Persistent Data Object to PlayerLocationData

4. Set Player Pos In Loaded Scene to (-4.4, 0, -1.4)

Unite 2016 - Training Day

Phase 8/8Data Persistence

1. Select the Player GameObject

2. Find the PlayerMovement script

3. Set the Persistent Location Data Object to PlayerLocationData asset

4. Apply changes to the prefab

5. Save the Scene

Unite 2016 - Training Day

Phase 8/8Data Persistence

1. Navigate to the Project window

2. Expand the Scenes folder

3. Open the Persistent Scene

4. Test by entering Play Mode

Exit Play Mode

Unite 2016 - Training Day

Phase 8/8Data Persistence

1. Navigate to the Project window

2. Expand the Scripts / DataPersistence folders

3. Open the PersistentDataResetter script for Explanation

Unite 2016 - Training Day

Phase 8/8Data Persistence

1. DO NOT Save the script

2. Return to Unity

Unite 2016 - Training Day

Phase 8/8Data Persistence

1. Navigate to the Hierarchy window

2. Create a new empty GameObject on the Root of the Hierarchy using: Create > Create Empty

3. Rename this new GameObject PersistentDataResetter

4. Add a PersistentDataResetter component

Unite 2016 - Training Day

Phase 8/8Data Persistence

With the PersistentDataResetter GameObject selected

1. Set the Size of Persistent Data Objects to 1

2. Set Element 0 to PlayerLocationData

3. Save the Scene

4. Test by entering Play Mode

Exit Play Mode

Unite 2016 - Training Day

Phase 8/8Data Persistence

1. Navigate to the Project window

2. Expand the Scenes folder

3. Open the Market Scene

4. We want to show you a special menu… but…

Warning! DO NOT USE!

Until instructed to do so…

Unite 2016 - Training Day

Phase 8/8Data Persistence

1. Navigate to the top menu

2. Find the menu Adventure Game

Please don’t use this menu until instructed…

Unite 2016 - Training Day

Phase 8/8Data Persistence

1. Navigate to the Project window

2. Expand the Prefabs / CompletedInteractables / Market folders

3. Drag the DoorToSecurityRoom prefab and…

4. Drop it into the Hierarchy

Unite 2016 - Training Day

Phase 8/8Data Persistence

1. Navigate to the Top Menu

2. Select Adventure Game > Complete DoorToSecurityRoom

3. Select DoorToSecurityRoomInteractable

4. Find the Event Trigger component

5. Verify that the component is complete

Unite 2016 - Training Day

Phase 8/8Data Persistence

1. Save the Scene

2. Navigate to the Project window

3. Expand the Scenes folder

4. Open the Persistent Scene

5. Test by entering Play Mode

Exit Play Mode

Unite 2016 - Training Day

Phase 8/8Data Persistence

1. Navigate to the Project window

2. Expand the Scripts / DataPersistence folders

3. Open the PersistentDataController script for editing

Unite 2016 - Training Day

Phase 8/8Data Persistence

1. Save the script

2. Return to Unity

Unite 2016 - Training Day

Phase 8/8Data Persistence

1. Navigate to the Project window

2. Expand the Scripts / SceneControl folders

3. Open the SceneController script for editing

Unite 2016 - Training Day

Phase 8/8Data Persistence

1. Save the script

2. Return to Unity

Unite 2016 - Training Day

Phase 8/8Data Persistence

1. Navigate to the Project window

2. Right-click on the PersistentDataObjects folder

3. Select Create > Folder

4. Rename the new folder Market

Unite 2016 - Training Day

Phase 8/8Data Persistence

1. Right-click on the Market folder

2. Select Create > Persistent Data Object

3. Rename they new asset CoinData

4. Set the Default Activity to true

Unite 2016 - Training Day

Phase 8/8Data Persistence

1. Save the Scene

2. Navigate to the Project window

3. Expand the Scenes folder

4. Open the Market Scene

Unite 2016 - Training Day

Phase 8/8Data Persistence

1. Navigate to the Hierarchy window

2. Create a new empty GameObject on the Root of the Hierarchy using: Create > Create Empty

3. Rename this new GameObject PersistentDataControllers

4. Add a PersistentDataController component

Unite 2016 - Training Day

Phase 8/8Data Persistence

With the PersistentDataController selected:

1. Set the PersistentDataObject to CoinData

2. Expand the Market GameObject

3. Find the child GameObject called Coin

4. Drag the Coin GameObject and…

5. Drop it on the Persistent Activity Game Object field

Unite 2016 - Training Day

Phase 8/8Data Persistence

With the PersistentDataController selected:

1. Set the Persistent Used Interactable to CoinInteractable

2. Save the Scene

Unite 2016 - Training Day

Phase 8/8Data Persistence

1. Navigate to the Project window

2. Expand the Scenes folder

3. Open the Persistent Scene

4. Select the PersistentDataResetter GameObject

5. Find PersistentDataResetter component

Unite 2016 - Training Day

Phase 8/8Data Persistence

With the PersistentDataResetter GameObject selected:

1. Navigate to the Project window

2. Expand the PersistentDataObjects / Market folders

3. Add CoinData to PersistentDataObjects array

Unite 2016 - Training Day

Phase 8/8Data Persistence

1. Save the Scene

2. Test by entering Play Mode

Exit Play Mode

Congratulations! You’re all awesome.

You have completed Unite Training Day!

Unite 2016 - Training Day

Phase 8/8Data Persistence

The remaining story elements: • Disturbing the Bird • Collecting the Red Herring • Collecting the Glasses • The Guard • The Laser Gate

Slide X/Y

Let’s Talk! Questions and Answers

Unite 2016 - Training Day

Phase 8/8THANK YOU - We hope you enjoyed the day!

• GIVEAWAY TIME! Win a GeForce GTX 980Ti graphics card

• Connect to the internet

• Wifi: Unite Europe No Password

• Open the Training Day 16 Survey at http://bit.ly/UniteTraining

• Click the link and tell us what you think

• We’ll shortly pick a winner!

• If you can’t connect we can give you a paper copy, please write your name on it!

Slide X/Y