game project / working with unity

Post on 15-May-2015

12.432 Views

Category:

Education

5 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Game Project

Unity

Petri Lankoskiaalto.fi

Getting Started with Unity

Getting Started

• Creating a new project– Select File -> New Project

• Write the project name• Select (at least) the following Packages to the project

– Character Controller– Scripts– Terrain Assets

• Click Create Project

Getting Started with Unity

Anatomy of the Unity Project

Getting Started with Unity

Navigating in Unity

Hand tool (shortcut: Q)- click-drag to move camera- ALT click-drag to orbit

camera around- CTR click-drag to zoom

Move tool (shortcut: W)

Rotate tool (shortcut: E)

Scale tool (shortcut: R)

On scene view:• F to zoom to selected object• Hold right mouse to enable

• ASWD movement• Q up, E down

Play Mode

Getting Started with Unity

Anatomy of the Unity Project

Getting Started with Unity

Working with the Scene

• Add in-build plane– Game Objects -> Create Other

-> Plane– Set Position <0,0,0>– Set Scale to <10,10,10>

• Delete Main Camera

Getting Started with Unity

Making Movable Camera

• Hierarchy: select Main Camera• Project: Open Standard Assets / Prefabs• Drag First Person Controller to Hierarchy• Set Position to <0,2,0> if the First Person Controller

drops thought the Plane• (Save Scene: File->Save Scene)

Getting Started with Unity

Making Movable Camera

Getting Started with Unity

Adding Details

• Finder: Drop PlaneTexture.psd to Assets Folder

• Adding Details to Plane– Hierarchy -> Popup Menu -> Create ->

Material– Rename it to PlaneMaterial– Drop the PlaneTexture to the

PlaneMaterial– Drop the PlaneMaterial to the Plane– Try Transparent/Diffuse shader

• Texture should have transparency

Shader Texture

Getting Started with Unity

Adding Details

• Light: Game Object -> Create Other -> Directional Light– Move and rotate the light in

Scene view or in Inspector

• Add cylinder on the plain; add material and texture to the cube

RotateMoveDrag with

mouse

Getting Started with Unity

Adding Sounds

• Finder: drop a sound file to Assets folder• Add an Game Object to Scene• Drag and Drop the sound file to the Game Object

– Rolloff factor determines how fast sound fades when distance grows

Getting Started with Unity

Adding Animated Model

• Finder: Drop the model (e.g., Abby.fbx) to Assets folder• Drag and Drop the model to Scene (or Hierarchy)

– Set Position <8,1.1,0)

Getting Started with Unity

Test the Model

Getting Started with Unity

Setting Up Bone Animations

• The Model Abby has different animations:– Idle: 1-200– Idle: 201-390– Idle Action: 391-660– Walk: 819-898– Etc.

• We need to split animations to use them in Unity

Getting Started with Unity

Creating Prefab

• Create a New Scene– File -> New Scene

• Add Plane and scale it bigger (x & z)• Rename “Abby” to “Abby Model” (project view)• Create Abby prefab

– Project Popup -> Create -> Prefab– Rename “New Prefab” to “Abby”– Drag-and-drop Abby Model to Abby

Getting Started with Unity

Creating Prefab

• Adding control scripts to Abby– Drag-and-drop ThirdPersonController to Abby– Change values of CharacterController of Abby

• Height: 1.7• Radius: 0.3

– Add animations to the scripts

• Add SmootFollow to Main Camera• Drag-and-drop Abby to Scene view

– Make her stand on the plain

• Drag-and-drop Abby to Main Camera/SmoothFollow/Target

Getting Started with Unity

• xx

Getting Started with Unity

• xx

Getting Started with Unity

Adding New Animation Control

• Create new C# script AbbyAnim• Attach the script to Abby (on Scene view)• Add idle action animation clip to the Abby/AbbyAnim• Apply changes to prefab

More about character animation, http://unity3d.com/support/documentation/Manual/Character-Animation.html

Getting Started with Unity

public class AbbyAnim : MonoBehaviour {private Animation _animation;

public AnimationClip action;

void Awake() {_animation = GetComponent(typeof(Animation)) as Animation;

if (! _animation) { Debug.LogError(“…”); }

if (! action) { Debug.LogError(“…”); return;}

_animation[action.name].wrapMode = WrapMode.Once;

}

Getting Started with Unity

…void Update() {

if(Input.GetKey(“z”) {_animation.Play(action.name);

}

}

}

Getting Started with Unity

Mono Behavior

• Can be attached to game objects• Unity Calls MonoBehavior• Initialization

– Awake(): called for every MonoBbehavior – Start(): called for every MonoBehaviour after all the Awake()s

• Game Loop calls– Update(): called in every frame, most things happens here– LateUpdate(): called after every Update()s are exceted. Use for, e.g., follow

camera– FixedUpdate(): use for physics thing, e.g., RagDoll handling– OnGUI(), for GUI drawing, can be called several times in each frame

• Other useful things: Invoke(), InvokeRepeating(), StartCouroutine()

Getting Started with Unity

User Interface

public class ExampleGUI : MonoBehaviour {

public GUISkin gSkin;

public string infoText = "”;

private bool showThingies;

void Start() {

if(gSkin==null) { Debug.LogError(“ gSkin is not set”); }

showThingies = false;

}

}

Getting Started with Unity

User Interface…

void OnGUI() {

GUI.skin = gSkin; // Seting skin for changins how GUI looks in inspector

GUI.matrix = Matrix4x4.TRS(Vector3.zero, Quaternion.identity,

new Vector3(Screen.width / 1280.0f, Screen.height / 854.0f, 1));

GUILayout.BeginArea (new Rect (1100, 750, 100, 100));

if(showThingies) {

if(GUILayout.Button ("Hide")) { showThingies = !showThingies; }

}

else {

if(GUILayout.Button ("Show")) { showThingies = !showThingies; }

}

GUILayout.EndArea ();

if(showThingies) {

GUI.Label(new Rect (600, 400, 200, 200), infoText, "blackBG");

}

Getting Started with Unity

User Interface

• Create a game object for attaching GUI script– Game Object->Create Empty– Rename the new object to, e.g.,

GUI Cube• Drag-and-drop ExampleGUI

script to GUI Cube• Create GUI Skin

– Project -> popup -> GUI Skin– Drag and drop the skin to

ExampleGUI : GSkin

Getting Started with Unity

User Interface

• Experiment with GUI Skin settings– Play to see how the settings changes GUI

Getting Started with Unity

Models and Animations

• Characters– 15-60 bones

• Hierarchy!• Consistent naming (the same names for same type of things)

– 2500-5000 triangles

• Textures– Optimal size: 2nx2m (1x1, 2x2, …, 128x256, … 256x256, …,

256x1024, …, 1024x1024,)• In some cases SoftImage does texture optimizing

– Optimal size: small as possible• Older cards do not support over 1024x1024

Getting Started with Unity

Material – Shader – Texture

• Material defines– Shader

• Defines method to render an object, texture properties, etc.– Texture(s)– Color definitions– Other assets

• E.g., cubemap required for rendering

Getting Started with Unity

Models and Animations

• Object needs to be drawn for every of its texture– Object with 4 textures

will be draw 4 times– Combine textures in

SoftImage– Use different textures

only if you, e.g., need different shaders

• Unity and SoftImage have different shaders

• Use simplest possible shader in Unity– Opt for shaders without

bumbs, transparencies unless you use these

Getting Started with Unity

Code Optimizing

• Keep Update(), FixedUpdate(), LateUpdate(), OnGUI() clean• Avoid object lookups, e.g., GameObject.Find() calls within these

– Cache lookup results when possible• Use MonoBehaviour.enabled to disable/enable MonoBehavior if

you do not want to execute Update(), …– MonoBehaviour.Invoke(), MonoBehaviour.InvokeRepeating()

and Couroutines are alternative to Update()• Functionality is not needed to execute in every frame

– E.g., use InvokeRepeating() to execute of function for every 0.5s

– Do not add empty Update(), FixedUpdate(), LateUpdate(), OnGUI() • Call overhead!

Getting Started with Unity

Version Control

• External version control with Pro– Needs to be enabled from Edit->Project Settings->Editor– Set up the system:

http://unity3d.com/support/documentation/Manual/ExternalVersionControlSystemSupport.html

– CVS, Perforce, Subversion, …• Binary files, (textures, models, sounds) do not work work well with these

– Unity Pro project will be incompatible with Unity• DropBox as version control

– Drop the project folder to a DropBox folder to check in a version and vice versa– CVS, Perforce, Subversion for version control for scripts– Unity and Unity Pro projects will be compable

• Unity Pro only features will be automatically disabled in Unity

• Regular backup (e.g., zip the project folder)– Archive backups to have snapshop of the project to rollback

Getting Started with Unity

Terrain Editor

• Terrain->Create Terrain

More about Terrain Editor, http://unity3d.com/support/documentation/Manual/Terrains.html

Getting Started with Unity

Terrain Editor…

Getting Started with Unity

Terrain Editor…

Getting Started with Unity

Terrain Editor…

Getting Started with Unity

Terrain Editor…

Getting Started with Unity

Terrain Editor…

Getting Started with Unity

More Information

• Unity manual – http://unity3d.com/support/documentation/Manual/

• Unity scripting reference– http://unity3d.com/support/documentation/ScriptReference/

• Unity Scripts and Tips Wiki– http://www.unifycommunity.com/wiki/

• Unity Tutorials– http://unity3d.com/support/resources/tutorials/

• Lies and Seductions source code– http://mlab.taik.fi/~plankosk/blog/?p=308

top related