Presentation is loading. Please wait.

Presentation is loading. Please wait.

SE 350 – Programming Games Lecture 5: Programming with Unity Lecturer: Gazihan Alankuş Please look at the last slide for assignments (marked with TODO)

Similar presentations


Presentation on theme: "SE 350 – Programming Games Lecture 5: Programming with Unity Lecturer: Gazihan Alankuş Please look at the last slide for assignments (marked with TODO)"— Presentation transcript:

1 SE 350 – Programming Games Lecture 5: Programming with Unity Lecturer: Gazihan Alankuş Please look at the last slide for assignments (marked with TODO) 2/10/20121

2 Today No quiz today! (Germany 1 – Turkey 0) – Did you watch the C# videos? Feedback about last week’s visit Go over the example games Cover most topics about scripting in Unity 2/10/20122

3 Sample Games in Homework URL was: http://u3d.as/content/m2h/c-game- examples/1sGhttp://u3d.as/content/m2h/c-game- examples/1sG What were the things that you found interesting? What have you learned? What were your issues? – Let’s quickly go over the games – Jump in when we are close to your question! The goal was to continue on, but we got stuck on this slide. We’ll continue with the rest next week. 2/10/20123

4 The BEST Development Environment for Unity Scripting that I Know of Visual Studio + Resharper for coding – I asked for a classroom license. Still waiting. In the meantime go ahead and install the 30 day version. MonoDevelop for occasional line-by-line debugging (explained towards end of presentation) If you are using any other way, you would certainly develop a better game if you listen to me (If you disagree, talk to me before discarding my advice… I have worked on large projects.) 2/10/20124

5 Pointer Fun with Binky No class talking about references is complete without Binky! This is not a joke. If you don’t get why you watched it, please ask. http://en.wikipedia.org/wiki/File:Pointer_Fun _with_Binky_(Java).ogg http://en.wikipedia.org/wiki/File:Pointer_Fun _with_Binky_(Java).ogg 2/10/20125

6 Variables with Class Types are References Transform transform; GameObject myObject; Structs do not work that way – Vector3, Quaternion, etc. – Vector3 v = new Vector3(0, 0, 1); – Vector3 v1 = v; – v1.x = 1; – //v.x == 0 still 2/10/20126

7 Operator Overloading Vector3 v3 = new Vector3(v1.x + v2.x, v1.y + v2.y, v1.z + v2.z); Is equivalent to Vector3 v3 = v1 + v2; 0.5 * Vector3.up – Etc. 2/10/20127

8 Components and Scripts Components are added to game objects and appear in the inspector Scripts (MonoBehavior) are custom components that you create – public variables appear in the inspector – Can have functions for handling GameObject’s events (Update, OnCollisionEnter, etc.) 2/10/20128

9 Game Objects and Components Your code runs in the context of the component You can access – The game object that it is attached to gameObject – Other components that are attached to the same game object GetComponent () Shortcuts for standard components (transform, renderer, etc. ) – Parent game object in the hierarchy transform.parent.gameObject – Other game objects in the scene GameObject.Find(“Game object’s name”) – There are more (find all components in this hierarchy, etc.) 2/10/20129

10 Accessing Things 2/10/201210 Cube Transform MyOtherScript (MonoBehavio r) MyScript (MonoBe havior) Game ObjectComponents GetComponent () transform gameObject GetComponent(“MyOtherScript”) GetComponent () GetComponent(“Transform”) Bushes GameObject.Find(“Bushes”) Red text shows how this component accesses others

11 Using the Inspector as a Guide Don’t try to memorize anything. Just look at the inspector and you’ll figure it out. 2/10/201211

12 If you can do it through the user interface, you can script it You can access anything You can tell them to do anything Use the inspector and hierarchy as starting points 2/10/201212

13 Which Game Object Do You Attach Your Script to? It only changes – Whose components you want to access easily – Whose events you want to react to If these are not important for the script, it can be in one of the standard objects (camera, etc.) 2/10/201213

14 Let’s do some examples How do I reach this object? How do I tell him to do something? 2/10/201214

15 Better Ways of Scripting Reaching game objects by name – Is slow (string comparisons) – Is static (have to have that specific name, difficult to reuse for something else) Another way is to expose references in the inspector (public) and make connections in the user interface However, the inspector can be an overkill, and you still may want to find game objects by name – Don’t keep calling GameObject.Find() and GetComponent() – Make connections in the Awake() function It’s faster to use references that are already set 2/10/201215

16 Connecting Objects in Awake() Awake runs before anything else. So, it is the preferred place for setting up connections – otherObject = GameObject.Find(“other object”); – otherComponent = GetComponent () – Later use these variables during the game, just like you use the references to the standard components (transform, renderer, etc.) 2/10/201216

17 Creating and Destroying Objects while the Game is Running Instantiate(game object or prefab, position, rotation) Destroy(game object) 2/10/201217

18 Some Basic Data Types (struct, not class) Vector3 – For positions and directions Quaternion – For orientations and rotations 2/10/201218

19 Data Structures with Unity Don’t underestimate. It’s C#! You can do anything! Classes, objects, references Variables, structs Collections ArrayList, List<>, Dictionary Enums Classes in separate files or within other classes – Use them to group variables together This would help even if you don’t know Java: – http://www.25hoursaday.com/CsharpVsJava.html http://www.25hoursaday.com/CsharpVsJava.html 2/10/201219

20 Some Coding Demonstration 2/10/201220

21 Debugging with MonoDevelop while Coding in Visual Studio at the Same Time Do this once after you created your Unity project – Edit->Preferences->External Tools is where you set the IDE that Unity will fire Select Visual Studio – Double-click a script, this will create the Visual Studio project Select MonoDevelop – Double-click a script, this will get the project in MonoDevelop’s recents Select Visual Studio again – Close everyting Do this at every run – Run MonoDevelop without running Unity – Select the project that is already in the recent projects – Run->Debug This will run Unity – Set a breakpoint in MonoDevelop and see how it stops at that breakpoint – Run Visual Studio by either running it from the start menu, Or ensuring Edit->Preferences->External Tools is Visual Studio and double clicking on a script. – This does not affect MonoDevelop 2/10/201221

22 How to go about working with code Access what you are interested in – Easy, just use the inspector as a guide Get the value, it will probably be an object of a class – For example: Vector3 Read about it in the script reference – http://unity3d.com/support/documentation/ScriptRef erence/ http://unity3d.com/support/documentation/ScriptRef erence/ Also, search for random stuff in the script reference. It’s likely to lead in the right direction. 2/10/201222

23 How to learn C# Unity and C# tutorials in catlikecoding.com are good http://channel9.msdn.com/Series/C-Sharp-Fundamentals- Development-for-Absolute-Beginners is not bad. If you don’t have enough time, watch 9, 14, 15, 21 http://channel9.msdn.com/Series/C-Sharp-Fundamentals- Development-for-Absolute-Beginners It’s fastest to learn from examples! – The five games that you already saw: http://u3d.as/content/m2h/c-game-examples/1sG http://u3d.as/content/m2h/c-game-examples/1sG 2/10/201223

24 TODO: Projects Form your groups and solidify project ideas Send me a report of your game idea. It should contain: – list of group members from this class + outside helpers (artists, etc.) – brief (not longer than one paragraph) description of your game story – longer description of the gameplay, rules and how the game would be in general. – brief plan on when to complete which part – brief division of labor 2/10/201224


Download ppt "SE 350 – Programming Games Lecture 5: Programming with Unity Lecturer: Gazihan Alankuş Please look at the last slide for assignments (marked with TODO)"

Similar presentations


Ads by Google