Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v...

127

Transcript of Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v...

Page 1: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À
Page 2: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Learning C# by Developing Games

with Unity 3D Beginner's Guide

� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �� � � � � � � � � �� � � � � � � � � � �

! " # ! $ % & ' # ( # ) # ' !

Page 3: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Learning C# by Developing Games

with Unity 3D Beginner's Guide* + , - . / 0 1 2 3 4 5 6 7 8 9 : ; 2 8 < = > / ? 1 / @ 0' > > . / 0 1 2 ? . A ? A . B A C D $ + , 9 . 2 + E 2 1 / ? = + + ; F 9 - = A . A , . + C < : A C G ? 2 + . A C / @ 9 . A 2 . / A B 9 > ? - ? 2 A F G/ @ C / . A : 2 > - = - 2 1 / ? = + + ; DH / . ? 2 , < = > / ? 1 A C I J A , 2 A F = A . 4 5 6 78 < = > / ? 1 A C = - 8 9 : ; 2 8 < = > / ? 1 / @ 0 K 2 C DK / B A . - 8 > 9 : A7 L K / B A . - J 2 . A A 2 / . F / @ 0 1 9 F 7 4 8 G ) M D Dwww.packtpub.com

[email protected]

Page 4: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

CreditsO P Q R S TU V W W X Y Z W [ Z \] ^ _ ` ^ a ^ T bc d e W d f c d W gh d i V j h Z \ V jk d X d \ l X d i V jm e n o p [ d q o d \ j d r pk X r d \ s V W \ d \ t V jk p u p v d c d Z \ v d Ww Z \ p n d h Z o \x W Z j o Z \ y p [ w p [ W d

z u V v j o d { o p [ \ p jz i V V j o d c W V V \m V v o d Y d p WU V y d r | Z \ p} T ~ � R ` � bm Z \ d v k o W e f� S _ ^ T � S T �

Page 5: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

About the Author� � � � � � � � � � �A > A : 2 . + @ / : : + < @ 2 A . ( F A 9 ? < . A ? D ) , + @ C / ? : 1 9 . 0 A G 1 A A 9 . @ A C 1 / ? � > A : 2 . / : 9 > � @ 0 / @ A A . / @ 0 C A 0 . A A GA � < / , F A @ 2 E + . 2 1 A ) J $ 9 B - D� 1 A @ , A . ? + @ 9 > : + F , < 2 A . ? : 9 F A + @ 2 1 A ? : A @ A G 1 A 2 + + ; 9 @ / @ 2 A . A ? 2 / @ = < / > C / @ 0 : + F , < 2 A . ? G = < 29 : + < , > A - A 9 . ? D� � � � � � � � � � � � � � � � � � �F 9 C A 9 B 9 / > 9 = > A � < ? 2 = A E + . A ) @ / 2 A 4 5 6 6 D� � � � � � � � � � � � � � � � � � �9 = + < 2 > A 9 . @ / @ 0 * � E + . ) @ / 2 - D & A � < F , A C + @ / 2 D

Page 6: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

About the Reviewers�   ¡ �   ¢ �   � £% 9 @ C 1 / ) @ / B A . ? / 2 - 9 @ C 1 9 ? , 9 ? ? A C 1 / ? 1 / 0 1 A . ? A : + @ C 9 . - E . + F 2 1 A * J � + 9 . C D ¤ < . / @ 0 1 / ?, 9 ? 2 - A 9 . D

http://gauravgarg.com/D

F - = A ? 2 ? < , , + . 2 A . ? 9 @ C 9 C B / ? + . ? D

Page 7: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

1 / F ? A > E G 1 A 2 1 / @ ; ? 9 = + < 2 2 1 A F 9 > + 2 ¥

Page 8: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

www.PacktPub.com

www.PacktPub.com- + < . = + + ; Dwww.PacktPub.com

9 @ C 9 ? 9 , . / @ [email protected]

E + . F + . A C A 2 9 / > ? D' 2www.PacktPub.com9 @ C A + + ; ? D

TM

http://PacktLib.PacktPub.com

Why Subscribe?H < > > - ? A 9 . : 1 9 = > A 9 : . + ? ? A B A . - = + + ; , < = > / ? 1 A C = - 8 9 : ; 2* + , - 9 @ C , 9 ? 2 A G , . / @ 2 9 @ C = + + ; F 9 . ; : + @ 2 A @ 2www.PacktPub.com

G - + < : 9 @ < ? A 2 1 / ? 2 + 9 : : A ? ?/ F F A C / 9 2 A 9 : : A ? ? D

Page 9: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À
Page 10: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

¦ � � §   ¨ � ©

ª « ¬ ­ ® ¯ ° ± ² « ³ ¬ ´ µ ¶ ® « ® · µ ¸ µ ¹ ® º ± ® ¯ µ µ ¯ ² ¬ ® ­ » ¼

Page 11: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

½ ¾ ¿ À Á Â Ã Ä Â Å Æ Á Å Æ Ç

[ ii ]

È É Ê ² « ³ É ¸ É ­ ² É Ë ¹ µ Ì »

Í « ² ¬ Î ± ´ É « ³ µ Ï Ï ± ­ ² º ¬ É « ¯ ¸ É ­ ² É Ë ¹ µ « É Ê µ Ï Ï ¹ ² ³ ´ ¬ ¹ Î Ð Ð

Page 12: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

½ ¾ ¿ À Á Â Ã Ä Â Å Æ Á Å Æ Ç

[ iii ]

Ñ ´ µ Í º ¯ É ¬ µ Ê µ ¬ ´ ® ¯ ² Ï ± É ¹ ¹ µ ¯ ® ¸ µ ­ É « ¯ ® ¸ µ ­ É « ¯ ® ¸ µ ­ Ò ¼ ¼

Page 13: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

½ ¾ ¿ À Á Â Ã Ä Â Å Æ Á Å Æ Ç

[ iv ]

Ó ± ± µ Ï Ï ² « ³ ® ¬ ´ µ ­ Ô É Ê µ Õ Ë Ö µ ± ¬ Ï É « ¯ ¬ ´ µ ² ­ × ® Ê º ® « µ « ¬ Ï » Ø »

Page 14: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

½ ¾ ¿ À Á Â Ã Ä Â Å Æ Á Å Æ Ç

[ v ]

× ´ É « ³ ² « ³ ¬ ´ µ Ù ± µ « µ Ï » ¼ ¼

Page 15: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

½ ¾ ¿ À Á Â Ã Ä Â Å Æ Á Å Æ Ç

[ vi ]

Ú ® ® Û ² « ³ É ¬ µ ¸ µ « Ê ® ­ µ × Ü Ý µ É ¬ ° ­ µ Ï Ì Ì ÐÍ Ï ² « ³ ¬ ´ µ Ù ¬ É ¬ µ ¶ É ± ´ ² « µ É ¬ ¬ ´ µ Ô É Ê µ Õ Ë Ö µ ± ¬ ¹ µ ¸ µ ¹ Ì Ì ¼

Page 16: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

½ ¾ ¿ À Á Â Ã Ä Â Å Æ Á Å Æ Ç

[ vii ]

Page 17: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À
Page 18: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

) @ / 2 - 1 9 ? = A : + F A + @ A + E 2 1 A F + ? 2 , + , < > 9 . 0 9 F A A @ 0 / @ A ? E + . C A B A > + , A . ? G E . + F 2 1 A 9 F 9 2 A < .A B A @ F + . A D

What this book coversÞ ß à � � á � â G

Page 19: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

ã ä Á Ã ¾ å Á

æ ç è

Þ ß à � � á � 4 GÞ ß à � � á � é GÞ ß à � � á � ê GÞ ß à � � á � ë G A ì , > 9 / @ ? 2 1 9 2 C < . / @ 0 0 9 F A , > 9 - G C A : / ? / + @ ? 1 9 B A 2 + = AÞ ß à � � á � í GÞ ß à � � á � î G< ? A + E 9 J 2 9 2 A # 9 : 1 / @ A DÞ ß à � � á � ï GÞ ß à � � á � ð GÞ ß à � � á � â ñ GÞ ß à � � á � â â GE 9 B + . / 2 A ? + < . : A ? E + . E < . 2 1 A . > A 9 . @ / @ 0 D

Page 20: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

ã ä Á Ã ¾ å Á

æ ò è

GG< ? A C E + . , > 9 - / @ 0 + < . : + F , > A 2 A C 0 9 F A Dhttp://unity3d.com/unity/download/

Dhttp://unity3d.com/unity/system-requirements.html

D

Conventions

ó ôõ ôö ô

Page 21: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

ã ä Á Ã ¾ å Á

æ ÷ è

What just happened?

public BeginState (StateManager managerRef)

{

manager = managerRef;

if(Application.loadedLevelName != "Scene0")

Application.LoadLevel("Scene0");

}+ . / 2 A F ? 9 . A ? A 2 / @ = + > C Iif(instanceRef == null)

{

instanceRef = this;

DontDestroyOnLoad(gameObject);

}

# cp /usr/src/asterisk-addons/configs/cdr_mysql.conf.sample

/etc/asterisk/cdr_mysql.conf

Page 22: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

ã ä Á Ã ¾ å Á

æ ø è

9 @ C ù ú û ü ý ü þ ÿ � û ý � � � û � ú ü � ü � � � ÿ ú � � � ú û ý ü ú � � � � ý � � � ý ÿ � ý � ÿ ú ü � � û ý � ÿ ú � � � ú û � ý � � � ý ÿ � + ? A @ C < ? 0 A @ A . 9 > E A A C = 9 : ; G ? / F , > - ? A @ C 9 @ A ( F 9 / > 2 +

[email protected]

www.packtpub.com/authorsD

Customer support2 + 0 A 2 2 1 A F + ? 2 E . + F - + < . , < . : 1 9 ? A DDownloading the example code9 : : + < @ 2 9 2

http://www.packtpub.comB / ? / 2http://www.packtpub.com/support2 + - + < D

Page 23: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

ã ä Á Ã ¾ å Á

æ � è

Errata

http://www.packtpub.com/submit-errataG� � � � � � > / @ ; G 9 @ C A @ 2 A . / @ 0 2 1 A C A 2 9 / > ? + E

http://www.packtpub.com/supportD

Piracy8 / . 9 : - + E : + , - . / 0 1 2 F 9 2 A . / 9 > + @ 2 1 A ! @ 2 A . @ A 2 / ? 9 @ + @ 0 + / @ 0 , . + = > A F 9 : . + ? ? 9 > > F A C / 9 D ' 2 8 9 : ; 2 G8 > A 9 ? A : + @ 2 9 : 2 < ? 9 [email protected], / . 9 2 A C F 9 2 A . / 9 > DB 9 > < 9 = > A : + @ 2 A @ 2 D

[email protected]

Page 24: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Discovering Your Hidden

Scripting Skills

1

Page 25: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

[ 8 ]

> + : 9 2 A / @ 2 1 A � � � � � � � � � DDealing with scriptphobia+ 2 1 A . + = � A : 2 ? G ? 1 + + 2 2 1 A = 9 C 0 < - ? G + . 9 @ - 2 1 / @ 0 A > ? A - + < : 9 @ C . A 9 F + E D J + - + < : > / : ; + @ 8 > 9 - G

E A A > ? > / ; A 0 / = = A . / ? 1 D

Page 26: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä �

[ 9 ]

2 1 / @ 0 ? - + <Teaching behaviors to GameObjects

Page 27: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

[ 10 ]

on the Internet& 9 B A 9 > + + ; 9 2E + . : 1 + + ? / @ 0 * � I

- + < 1 9 B A / @ - + < . ) @ / 2 - 8 . + � A : 2 E + > C A . G 2 1 9 2 9 . A @ + 2 ) @ / 2 - ? : . / , 2 ? G

Page 28: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä �

[ 11 ]

0 + / @ 0 2 +2 + " A 9 ? + @ 6 DManeuvering around Unity's documentation2 1 A Dù � ü � � � � � � � ú � � � � � � � � ú � � � � ÿ ý ü � � � � � � � û � � ú � � �ÿ � ú ÿ � ý ÿ � � ú � ý ü þ ÿ � � � � � � � � �� � ú û ü ý ü þ � � � � � ú ý � � ý � � ú � � û

� + 0 A 2 9 E A A > E + . ! � " �2 + C A F + @ ? 2 . 9 2 A D � B A . - % 9 F A # = � A : 2 / @ 9 J : A @ A 1 9 ? 9 * + F , + @ A @ 2 G ? +/ @ 2 1 A 9 @ C 2 1 A$ � % � � � � � �& ' ! @ 2 1 A 2 9 = G ? A > A : 2 2 1 A D

Page 29: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

[ 12 ]

( ' * > / : ; + @ 2 1 A = + + ; / : + @ E + . 2 1 A D

What just happened?

H . + F 2 1 A Dó ô * > / : ; 2 1 A > / @ ;

Page 30: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä �

[ 13 ]

What just happened?� 1 A , 9 0 A / @ 2 1 A

Page 31: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

[ 14 ]

! @ 2 1 A F A @ < @ 9 B / 0 9 2 A 2 + ) � � � � � * + � � � � � *# .! @ 2 1 A , � � - � � � 2 9 = @ 9 B / 0 9 2 A 2 + + � � � � � *# .! @ 2 1 A , � � - � � � 2 9 = . / 0 1 2 ( : > / : ; G E . + F 2 1 A , + , ( < , F A @ < @ 9 B / 0 9 2 A 2 + + � � � � � *' ? + < . ) @ / 2 -ó ô

State MachineDõ ô " / 0 1 2 ( : > / : ; + @ / @ 2 1 A , � � - � � � 2 9 = 9 @ C : . A 9 2 A 9 E + > C A . @ 9 F A CCode

Dö ô " / 0 1 2 ( : > / : ; + @ 2 1 ACode

E + > C A . 9 @ C 9 : . A 9 2 A 9 E + > C A . @ 9 F A CScripts

D. ô ! @ 2 1 AScripts

E + > C A . G : . A 9 2 A 9C# Script

D/ ô ! F F A C / 9 2 A > - . A @ 9 F ANewBehaviourScript

2 +LearningScript

DWhat just happened?� A : . A 9 2 A C + @ A + E 2 1 A

Code? < = E + > C A . ? G @ 9 F A C

Scripts

LearningScript.csD

Page 32: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä �

[ 15 ]

Introducing the MonoDevelop code editor) @ / 2 - < ? A ? 9 @ A ì 2 A . @ 9 > A C / 2 + . 2 + A C / 2 / 2 ? * � ? : . / , 2 ? D � B A @ 2 1 + < 0 1 ) @ / 2 - : 9 @ : . A 9 2 A 9 = 9 ? / :< ? / @ 0 2 1 A : + C A A C / 2 + .J / @ : A ) @ / 2 - 9 @ CLearningScript

/ @ 2 1 AScripts

E + > C A . Dó ôLearningScript

I

What just happened?LearningScript

+ , A @ G . A 9 C - 2 + A C / 2 D

Page 33: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

[ 16 ]

in Unity

public class LearningScript : MonoBehaviour� 1 A : > 9 ? ? @ 9 F ALearningScript LearningScript.cs

D � 1 / ?, � � - � � � 2 9 = G / ? / @ � C / 2 F + C A G. A 9 C - 2 + = A . A @ 9 F A C D 8 > A 9 ? A . A @ 9 F A / 2 . / 0 1 2 2 1 A @ 9 @ C 2 1 A . A D ! E - + < . A @ 9 F A 2 1 A ? : . / , 2 > 9 2 A . G= A 2 1 / ? Ipublic class NewBehaviourScript : MonoBehaviour

NewBehaviourScript

, � � - � � � D

Page 34: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä �

[ 17 ]

Summary

Page 35: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À
Page 36: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Introducing the Building Blocks

) ? / @ 0 B 9 . / 9 = > A ? / @ 9 ? : . / , 2) ? / @ 0 F A 2 1 + C ? / @ 9 ? : . / , 2� < . @ / @ 0 9 ? : . / , 2 / @ 2 + 9 * + F , + @ A @ 2

2

Page 37: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

0 Å Æ ä Â 1 2 å 3 Å 4 Æ � Á 5 2 3 À 1 3 Å 4 5 À Â å 6 Ç Ã Â ä 7 Å 3 Æ 8 9 å ä 3 � Æ Ç

[ 20 ]

9 @ C- + < > A 9 . @ ) @ / 2 - D � ý ü þ ý ü : ü ý � � � � � � � � � ÿ ú � � � ý ü þ J / @ : A - + < 9 . A ? 2 < C - / @ 0 * � G 9 @ C * � / ? 9 @ N > 9 @ 0 < 9 0 A G! 2 F 9 ; A ? ? A @ ? A 2 + > A 9 . @ 2 1 A : + . . A : 2 2 A . F / @ + > + 0 - E + . * � D ' > ? + G ) @ / 2 - J : . / , 2 9 @ C + + 9 . A # # 8> 9 @ 0 < 9 0 A ? D � 1 A 9 < 2 1 + . ? + E 2 1 AUnderstanding what a variable does in a script

Page 38: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä ;

[ 21 ]

9 ? , / C A . GF 9 / > = + ì 9 B 9 . / 9 = > A / @ ? 2 A 9 C DNaming a variable) ? / @ 0 2 1 A , / : 2 < . A + E 2 1 A

myNumber

myNumberF 9 / > = + ì 9 @ 9 > + 0 - GmyNumber myNumber� 1 A

myNumberB 9 . / 9 = > A / ? @ + 2 1 / @ 0 F + . A 2 1 9 @ 9 @ 9 F A C , > 9 : A 1 + > C A . 2 + ? 2 + . A ? + F A C 9 2 9

myNumber

Page 39: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

0 Å Æ ä Â 1 2 å 3 Å 4 Æ � Á 5 2 3 À 1 3 Å 4 5 À Â å 6 Ç Ã Â ä 7 Å 3 Æ 8 9 å ä 3 � Æ Ç

[ 22 ]

@ A ì 2 ? : . A A @ ? 1 + 2 Dó ô ! @ 2 1 A ) @ / 2 - , � � - � � � , 9 @ A > G C + < = > A ( : > / : ; + @LearningScript

Dõ ôö ô

! � � < " � �? / @ : A 2 1 / ? ? : . / , 2ó ô ¤ . 9 0LearningScript

+ @ 2 + 2 1 A Dõ ô J A > A : 2 ? + 2 1 9 2 / 2 9 , , A 9 . ? / @ 2 1 A � � � � � � � � � , 9 @ A > Dö ôLearningScript. ô # , A @ 2 1 A ) @ / 2 -/ ô * > / : ; + @ D

Page 40: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä ;

[ 23 ]

What just happened?

myNumberB 9 . / 9 = > A I

J / @ : AmyNumberó ô J 2 + , 2 1 A 0 9 F A 9 @ C : 1 9 @ 0 A 2 + Dõ ô D

Page 41: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

0 Å Æ ä Â 1 2 å 3 Å 4 Æ � Á 5 2 3 À 1 3 Å 4 5 À Â å 6 Ç Ã Â ä 7 Å 3 Æ 8 9 å ä 3 � Æ Ç

[ 24 ]

What just happened?/ 2 2 1 9 @ 2 1 9 2 DmyNumber

G + . 2 1 A 2 - , A ? + EÞ ß à � � á � é G D! @ 2 1 A � � � � � � � � � , 9 @ A > G 2 . - : 1 9 @ 0 / @ 0 2 1 A B 9 > < A + EmyNumber

2 + ? + F A + 2 1 A . B 9 > < A G A B A @ 9DUsing a method in a script

What is a method?J + - + < ? 9 - G@ < F = A . ? + @ : A G 9 @ C 2 1 A @ 0 / B A 2 1 / ? : 1 < @ ; + E : + C A 9 @ 9 F A G ? < : 1 9 ?AddTwoNumbers()

D+ B A . G � < ? 2 : 9 > > 2 1 AAddTwoNumbers()

F A 2 1 + C DA C / 2LearningScriptÞ ß à � � á � ê G D " / 0 1 2ó ô ! @ # + @ + ¤ A B A > + , G ? A > A : 2

LearningScriptõ ô

Page 42: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä ;

[ 25 ]

ö ô

- + < > A 9 . @ A C2 1 A @ < F = A . ? 2 1 9 2 9 . A 0 + / @ 0 2 + = A 9 C C A C D = � � á � ; A - / ?, . A ? ? A C D 8 . A ? ? 2 1 A = � � á �AddTwoNumbers()K / @ A ? 4 5 G 4 6 G 4 4 G 9 @ C 4 7 F 9 ; A < , 2 1 A

AddTwoNumbers()

Method names are substitutes too� 9 ; A 9 > + + ; 9 2 > / @ A 4 5 E . + F 2 1 A , . A B / + < ? ? : . A A @ ? 1 + 2 Ivoid AddTwoNumbers ()

Page 43: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

0 Å Æ ä Â 1 2 å 3 Å 4 Æ � Á 5 2 3 À 1 3 Å 4 5 À Â å 6 Ç Ã Â ä 7 Å 3 Æ 8 9 å ä 3 � Æ Ç

[ 26 ]

� 1 AAddTwoNumbers()

/ ? 2 1 A @ 9 F A + E 2 1 A F A 2 1 + C D K / ; A 9 B 9 . / 9 = > A GAddTwoNumbers()

/ ?AddTwoNumbers()+ < . ? : . / , 2 D

AddTwoNumbers();� 1 A F A 2 1 + C @ 9 F AAddTwoNumbers(): < . > - ( = . 9 : A ? / ? A ì A : < 2 A C D

# E : + < . ? A G 2 1 / ?AddTwoNumbers()

F A 2 1 + C + @ > - 1 9 ? + @ A > / @ A + E : + C A 2 + A ì A : < 2 A G = < 2 9F A 2 1 + C : + < > C 1 9 B A F 9 @ - > / @ A ? + E : + C A D D � 1 A @ G6 D % + = 9 : ; 2 + ) @ / 2 - 9 @ C 1 9 B A 2 1 A4 D DWhat just happened?# 1 @ + ¥ $ + 2 1 / @ 0 1 9 , , A @ A C ¥' : 2 < 9 > > - G 9 ? - + < ? / 2 2 1 A . A > + + ; / @ 0 9 2 2 1 A = > 9 @ ; , 9 @ A > G 2 1 A ? : . / , 2 / ? . < @ @ / @ 0 , A . E A : 2 > - G= � � á �

Page 44: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä ;

[ 27 ]

= � � á � ; A -AddTwoNumbers()4 7 G 2 + 9 C C 2 1 A 2 1 A B 9 > < A ? ? 2 + . A C / @ 2 1 A B 9 . / 9 = > A ?

number19 @ C

number2D� 1 / > A ) @ / 2 - / ? / @ 2 1 A F + C A G ? A > A : 2 2 1 A� � � � � � � � � D ! @ 2 1 A � � � � � � � � � , 9 @ A > G > + : 9 2 AB 9 > < A ? G : < . . A @ 2 > - 9 @ C, 9 @ A > ? + / 2 1 9 ? E + : < ? G 2 1 A @ , . A ? ? 2 1 A = � � á �D, A . E + . F 9 2 9 ? ; D Þ ß à � � á � ê GD

Introducing the class� 1 A , > 9 -= 9 ? / : , . + 0 . 9 F F / @ 0 ? ; / > > ? 9 @ C 2 A > > - + < 2 1 9 2 9 ? : . / , 2 / ? . A 9 > > - 9 : > 9 ? ? D

LearningScript > � � ü � ú ý ü � � ú � � � � � � ? ú û ý ú � � � ÿ ú ü � ú � � � � � � �

Page 45: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

0 Å Æ ä Â 1 2 å 3 Å 4 Æ � Á 5 2 3 À 1 3 Å 4 5 À Â å 6 Ç Ã Â ä 7 Å 3 Æ 8 9 å ä 3 � Æ Ç

[ 28 ]

! @ Þ ß à � � á � î G

a Component' % 9 F A ( * . A 9 2 + . 1 9 2

� � � � � � � � � , 9 @ A > DA more technical look at the magicE + > C A . + @ + < . 1 9 . C C . / B A D � A : 9 @ ? A A / 2 . / 0 1 2 2 1 A . A / @ 2 1 A , � � - � � � �+ < . ? : . / , 2 2 + = A 9 * + F , + @ A @ 2 + E 2 1 A % 9 F A # = � A : 2 D

Page 46: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä ;

[ 29 ]

Even more Unity magic

MonoBehaviourD

LearningScript

public class LearningScript : MonoBehaviour

LearningScript= A 1 9 B / + . ? E . + F 2 1 AMonoBehaviour

: > 9 ? ? D � 1 / ? ? / F , > - F A 9 @ ? 2 1 9 2 2 1 A # + @ + A 1 9 B / + < .@ + : + / @ : / C A @ : A 2 1 9 2 2 1 A B 9 . / 9 = > A ? 9 @ C F A 2 1 + C ? / @ 1 A . / 2 A C > + + ; � < ? 2 > / ; A ? + F A + E 2 1 A : + C ADLearningScript

Ivoid Start ()

void Update ()

� . - 9 ? A 9 . : 1 + @ 2 1 A E + . 9 @ C' > ? + ? A 9 . : 1 E + .MonoBehaviour

MonoBehaviour Start()9 @ C

Update()F A 2 1 + C ? D

Components communicating using the Dot Syntax9 @ C 2 1 A% 9 F A # = � A : 2 ? 2 + = A 9 = > A 2 + < ? A 2 1 A B 9 . / 9 = > A ? 9 @ C F A 2 1 + C ? / @ + 2 1 A . * + F , + @ A @ 2 ? D

Page 47: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

0 Å Æ ä Â 1 2 å 3 Å 4 Æ � Á 5 2 3 À 1 3 Å 4 5 À Â å 6 Ç Ã Â ä 7 Å 3 Æ 8 9 å ä 3 � Æ Ç

[ 30 ]

What's with the dots?

transform.position.x

Þ ß à � � á � í G � � � � @ A � � � � � � à B � � �

Summary� 1 / ? : 1 9 , 2 A . / @ 2 . + C < : A C - + < 2 + 2 1 A = 9 ? / : : + @ : A , 2 ? + E B 9 . / 9 = > A ? G F A 2 1 + C ? G 9 @ C ¤ + 2 J - @ 2 9 ì D9 * + F , + @ A @ 2 D � 1 A ¤ + 2 J - @ 2 9 ì / ? � < ? 2 > / ; A 9 @ 9 C C . A ? ? 2 + > + : 9 2 A % 9 F A # = � A : 2 ? 9 @ C * + F , + @ A @ 2 ? D

Page 48: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

) ? / @ 0 , < = > / : B 9 . / 9 = > A ? E + . 2 1 A ) @ / 2 - ! @ ? , A : 2 + . , 9 @ A >$ 9 F / @ 0 9 B 9 . / 9 = > A , . + , A . > -

3

Page 49: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

[ 32 ]

Writing C# statements properly? A @ 2 A @ : A D � 1 A @A @ C 2 1 A ? 2 9 2 A F A @ 2 D� � C � � D � ü � ú � public int number1 = 2;� 1 A ? 2 9 2 A F A @ 2 : 9 @ = A + @ ? A B A . 9 > > / @ A ? D � 1 / 2 A ? , 9 : A 9 @ C : 9 . . / 9 0 A . A 2 < . @ ? 9 . A / 0 @ + . A C G ? + / Epublic

int

number1

=

2;? A F / ( : + > + @ 9 2 2 1 A A @ C DUnderstanding Component properties in Unity's

Inspector% 9 F A # = � A : 2 ? 1 9 B A ? + F A? A > A : 2 9 @ C > + + ; 9 2 2 1 A � � � � � � � � � , 9 @ A > D # @ A + E 2 1 A * + F , + @ A @ 2 ? / ? 2 1 A D

Page 50: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä E

[ 33 ]

' @ - * + F , + @ A @ 2 + E � � � � � � � � � 9 . A � < ? 2 B 9 . / 9 = > A ? + EUnity changes script and variable names slightly � � � � � � � � �, 9 @ A > 9 ? 9

LearningScript2 +� � � � � � � � � , 9 @ A > 9 ?

number1G 9 @ Cnumber2

9 ?� 1 A ? A C / ? , > 9 - A C : 1 9 @ 0 A ? / F , . + B A . A 9 C 9 = / > / 2 - / @ � � � � � � � � � DChanging a property's value in the Inspector panel� 1 A . A 9 . A ¤ < . / @ 0 2 1 A F + C A F + C A N� 1 A @ - + < 9 . A / @ 2 1 Aù � ü � � � ú û � ý ü � �� � � ÿ � � � � � D� � ú ü þ � ÿ � � � � ú � � � � � � � û � � � û � � ? ú � � � ÿ ý ü � � F G H I J K L M N � ú ü � � � �F G H I J K L M N � ú ü � � � ? � û û ý � � ú ü � ? ú � � � ÿ � � � ú � ú ÿ ÿ ý þ ü � � ý ü � � � û ÿ û ý � �

Page 51: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

[ 34 ]

� � � � � � � � � , 9 @ A > G - + < : 9 @ . A ? A 2 2 1 A B 9 > < A ?2 1 A * + F , + @ A @ 2 ? : . / , 2 G 9 @ C 2 1 A @ ? A > A : 2 $ � � � �

Displaying public variables in the Inspector panel

publicF A 9 @ ? 9 2 2 1 A = A 0 / @ @ / @ 0 + E9 B 9 . / 9 = > A ? 2 9 2 A F A @ 2 I

public int number1 = 2;! 2 F A 9 @ ? 2 1 9 2 2 1 A� � � � � � � � � , 9 @ A > ? + 2 1 9 2 - + < : 9 @ F 9 @ / , < > 9 2 A 2 1 A B 9 > < A ? 2 + . A C / @ 2 1 A B 9 . / 9 = > A D ! 2 9 > ? + F A 9 @ ?J - @ 2 9 ì / @ Þ ß à � � á � í G D$ + 2 9 > > B 9 . / 9 = > A ? @ A A C 2 + = Apublic2 1 A � � � � � � � � �� � � � � � � � � LearningScriptó ô

private int number1 = 2;

Page 52: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä E

[ 35 ]

õ ôint number2 = 9;ö ô. ô ! @ ) @ / 2 - G ? A > A : 2 D

What just happened?� � � � � � � � � 9 @ C9 . A 0 + @ A Dprivate int number1 = 2;� 1 A , . A : A C / @ 0 > / @ A A ì , > / : / 2 > - ? 2 9 2 A ? 2 1 9 2 2 1 A

number1B 9 . / 9 = > A / ? 2 + = A

privateG2 1 A . A E + . A 2 1 A B 9 . / 9 = > A / ? @ + > + @ 0 A . 9 , . + , A . 2 - / @ 2 1 A � � � � � � � � �, . / B 9 2 A B 9 . / 9 = > A 2 + ? 2 + . A C 9 2 9 D

int number2 = 9;� 1 Anumber2? , A : / E - / 2 9 ?

privateD

public+ .

privateG = - C A E 9 < > 2 G

privateD� �

public� ûprivate

F 9 @ / , < > 9 2 A 2 1 A B 9 > < A ? F 9 @ < 9 > > - / @ 2 1 A � � � � � � � � � , 9 @ A > 9 @ - F + . A DNaming your variables properly

public bool theBearMakesBigPottyInTheWoods = true;

theBearMakesBigPottyInTheWoodsG ! 1 9 C

public bool potty = true;

Page 53: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

[ 36 ]

potty

potty

Begin variable names with lowercase

Transform/ ? 9 : > 9 ? ? G 9 @ C

transform/ ? 9 B 9 . / 9 = > A D

Using multi-word variable names

public bool theBearMakesBigPottyInTheWoods = true;Dpublic

� � � � � � � � �LearningScript� � � � � � � � � , 9 @ A > D

Page 54: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä E

[ 37 ]

Declaring a variable and its type� B A . - B 9 . / 9 = > A� A 1 9 B A 2 + ? , A : / E - 2 1 A 2 - , A + E C 9 2 9 9 B 9 . / 9 = > A : 9 @ ? 2 + . A� A 1 9 B A 2 + , . + B / C A 9 @ 9 F A E + . 2 1 A B 9 . / 9 = > A

typeOfData nameOfTheVariable;

LearningScript

int number1; / ? 2 1 A 2 - , A + E C 9 2 9 2 1 9 2number1

intG F A 9 @ / @ 0 9 @ / @ 2 A 0 A .

number1/ ? 2 1 A ? A F / ( : + > + @ 9 2 2 1 A A @ C� 1 A ? A : + @ C . A � < / . A F A @ 2 + E @ 9 F / @ 0 9 B 9 . / 9 = > A 1 9 ? 9 > . A 9 C - = A A @ C / ? : < ? ? A C D � 1 A 2 1 / . C/ ? : + @ : A . @ A C Ipublic private

= - C A E 9 < > 2� � � � � � � � � , 9 @ A > G + . = A 9 : : A ? ? / = > A E . + F + 2 1 A . ? : . / , 2 ?� 1 A B 9 > < A ? 2 + . A C / @number1

Page 55: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

[ 38 ]

The most common built-in variable types2 1 9 2 B 9 . / 9 = > A ? : 9 @ ? 2 + . A DO < ? 2 2 1 A ? A = 9 ? / : 2 - , A ? 9 . A , . A ? A @ 2 A C 1 A . A ? + 2 1 9 2 - + < < @ C A . ? 2 9 @ C 2 1 A : + @ : A , 2 + E 9 B 9 . / 9 = > A= A / @ 0 9 = > A 2 + ? 2 + . A + @ > - 2 1 A 2 - , A + E 2 1 A C 9 2 9 - + < ? , A : / E - D � 1 A : < ? 2 + F 2 - , A ? + E C 9 2 9 2 1 9 2 - + <Þ ß à � � á � î GP à Q á / @ 2 1 A C / ? : < ? ? / + @ + E ¤ + 2 J - @ 2 9 ì DType Contents of the variable

int

float

string

bool

A simple integer, such as the number 3

A number with a decimal, such as the number 3.14

Characters in double quotes, such as, “Watch me go now”

A boolean, either ortrue false� � û �� û � � � � � � � � � ý ü þ � � � � � � � û � � ý � � R ý ü � � � � ÿ ý � � � � ? � û ü � � � � � � ÿ � � � � / @LearningScript' C C ? + F A F + . A B 9 . / 9 = > A ? 2 +

LearningScript� � � � � � � � � , 9 @ A > D � 1 A ? A 9 . A 9 > >public9 , , A 9 . / @ 2 1 A � � � � � � � � � , 9 @ A > I

Page 56: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä E

[ 39 ]

What just happened? � � � � � � � � � , 9 @ A > I� 1 A B 9 . / 9 = > A ? 9 . A C / ? , > 9 - A C / @ 2 1 A � � � � � � � � �Where you declare a variable is importantC A : > 9 . / @ 0 9 @ C < ? / @ 0 B 9 . / 9 = > A ? / @ F 9 @ - , > 9 : A ? / @ 9 ? : . / , 2 D � 1 A B 9 . / 9 = > A ? 2 1 9 2 ! 1 9 B AD � 1 A - 9 . A F A F = A . ? + E 2 1 A

LearningScript� � � � � � � � � , 9 @ A > + . = A / @ 0 9 : : A ? ? A C = - + 2 1 A . ? : . / , 2 ? D: 9 @ > A 9 C 2 +9 @ - F A 2 1 + C ? 9 . A C A : > 9 . A C ? + 2 1 9 2 ! ? A A 2 1 A F 9 > > / @ + @ A , > 9 : A D # 2 1 A . , A + , > A > / ; A 2 + C A : > 9 . A

Page 57: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

[ 40 ]

C � � ú û ý ü þ � � � û � � � � � û ? ú û ý ú � � � ÿ ú � � � � � þ ý ü ü ý ü þ � ú � ú ÿ ÿ � ú �þ ý ? � � � � ú � � ü � ú � � � � � ú � � � ÿ � � � � � � û ? ú û ý ú � � � ÿ ú ü � � � ÿ � �� � � � � � � � � , 9 @ A > G @ + . : 9 @ 2 1 A - = A 9 : : A ? ? A C = - + 2 1 A .? : . / , 2 ? D � 1 / ? = . / @ 0 ? < ? 2 + 9 @ + 2 1 A . , . + 0 . 9 F F / @ 0 : + @ : A , 2 : 9 > > A C D

> / ; A 2 1 AAddTwoNumbers()

F A 2 1 + C / @ Þ ß à � � á � S G� � � � � � � D: > + ? / @ 0

Page 58: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä E

[ 41 ]

T � � � � � � � ÿ ú û � � ÿ � ú � � � � ú û � � � � � û � ý ü þ ÿ ÿ � ú ÿ ý ÿ � ú � � � � ü � ÿ � � � � � ý ü þ ÿ � ú � � � � ü � ÿ � ú ü � � � � � � ÿ � ý ÿ � � ú � � � � ý ÿ U � ÿ � � �ú ü � ý ÿ � ÿ � ú � � � string block3 = "Block 3 text";� 1 A , . A : A C / @ 0 > / @ A C A : > 9 . A ? 9 > + : 9 >

stringB 9 . / 9 = > A @ 9 F A C

block3D � 1 / ? B 9 . / 9 = > A A ì / ? 2 ? / @2 1 A : + C A = > + : ; 2 1 9 2 / ? > 9 = A > A C D ! E - + < 2 . - 2 + < ? A 2 1 A B 9 . / 9 = > A

block3+ < 2 ? / C A + EG ? < : 1 9 ? / @ + .? 9 - / @ 0 2 1 9 2 B 9 . / 9 = > A

block3� 1 A ? : + , A + E 2 1 A B 9 . / 9 = > Ablock3

block1B 9 . / 9 = > A I

string block1 = "Block 1 text";� 1 A , . A : A C / @ 0 > / @ A C A : > 9 . A ? 9string

2 - , A F A F = A . B 9 . / 9 = > A @ 9 F A Cblock1

D � 1 / ? B 9 . / 9 = > AA ì / ? 2 ? / @ 2 1 A : + C A = > + : ; 2 1 9 2 / ? > 9 = A > A C D � 1 / ? : + C A = > + : ; = A 0 / @ ? + @ > / @ A L 9 @ CA @ C ? + @ > / @ A 4 5 D � 1 / ? F A 9 @ ? 2 1 A B 9 . / 9 = > Ablock1 D � 1 A

block1B 9 . / 9 = > A/ ? < ? A C / @ + @ > / @ A 6 5 G 9 @ C / @� 1 A ? : + , A + E 2 1 A

block1> / @ A ? L 9 @ C 4 5 D� � � � � � � � �� � � � � � � � �

Page 59: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

[ 42 ]

Summary � � � � � � � � � , 9 @ A > 9 . A F A F = A .� � � � � � � � � , 9 @ A > Gpublic

D � 1 A 2 - , A + E C 9 2 9 9

Page 60: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

) ? / @ 0 F A 2 1 + C ? / @ 9 ? : . / , 2$ 9 F / @ 0 F A 2 1 + C ? , . + , A . > -* 9 > > / @ 0 9 F A 2 1 + C" A 2 < . @ / @ 0 9 B 9 > < A E . + F 9 F A 2 1 + CUpdate()

9 @ CStart()

F A 2 1 + C ?/ @ 2 + F A 2 1 + C ? D

4

Page 61: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

[ 44 ]

' 2 2 1 A = A 0 / @ @ / @ 0 + E Þ ß à � � á � é G - + < > A 9 . @ A C 9 = + < 2 * �A @ CUsing methods in a script� 1 A . A 9 . A � + , . + B / C A = A 1 9 B / + . 2 + 9 % 9 F A # = � A : 2V � � � � � � � � � � ú � � � � � � ý ü ú ÿ û ý � � ý ÿ ý ü � � � � � ÿ

Naming methods properly@ 9 F A ? E + . - + < . F A 2 1 + C ? D O < ? 2 > / ; A ! A ì , > 9 / @ A C E + . B 9 . / 9 = > A ? G / E - + <J / @ : A F A 2 1 + C ? F 9 ; A % 9 F A # = � A : 2 C + ? + F A 2 1 / @ 0 < ? A E < > G - + < ? 1 + < > C 0 / B A - + < . F A 2 1 + C 9JumpOverTheFence

+ .ClimbTheWall

D

Page 62: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä W

[ 45 ]

Wiggle

WiggleMyButtD

Begin method names with an uppercase letter X � � � � � � � �X � � � � � � � �) ? / @ 0 2 1 / ? A ì 9 F , > A 9 0 9 / @ Ivoid AddTwoNumbers ()

{

// Code goes here

}

� 1 A F A 2 1 + C9 F A 2 1 + C G@ + 2 1 / @ 0 > / ; A 9 ? / F , > A B 9 . / 9 = > A + @ 9 + @ A > / @ A ? 2 9 2 A F A @ 2 D

Page 63: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

[ 46 ]

� 1 A . A 9 . A 2 1 . A A' , 9 / . + E : < . > - = . 9 : A ? ? 1 + < > C = A , . A ? A @ 2 E + . : + @ 2 9 / @ / @ 0 2 1 A : + C A = > + : ; IreturnDataType NameOfTheMethod ( )

{

}K + + ; / @ 0 9 2LearningScript

+ @ : A 9 0 9 / @ G + . 9 @ - ) @ / 2 - 0 A @ A . 9 2 A C ? : . / , 2 G 2 1 AStart()F A 2 1 + C 1 9 ? 2 1 A 2 1 . A A = 9 . A ( = + @ A F / @ / F < F . A � < / . A F A @ 2 ? E + . 9 F A 2 1 + C I

void Start ()

{

}

void/ ? < ? A C D � 1 / ? / @ E + . F ? ) @ / 2 - 2 1 9 2@ + 2 1 / @ 0 / ? = A / @ 0 . A 2 < . @ A C E . + F 2 1 A F A 2 1 + C D

Start()DF A 2 1 + C / ? 0 + / @ 0 2 + C + D

Start()

/ ? : + @ : A . @ A C Iprivate

= - C A E 9 < > 2 D� 1 A . A E + . A G 2 1 / ? F A 2 1 + C : 9 @ @ + 2 = A : 9 > > A C E . + F + 2 1 A . ? : . / , 2 ? D

Page 64: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä W

[ 47 ]

� A2 9 ; A 2 1 A @ A ì 2 ? 2 A , 9 @ C > A 9 . @ 2 1 A < ? A E < > @ A ? ? + E 2 1 A , 9 . A @ 2 1 A ? A ? DLearningScript

AddTwoNumbers()F A 2 1 + C 2 + F 9 ; A / 2 F < : 1 F + . A < ? A E < > D

Page 65: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

[ 48 ]

) ? / @ 0 2 1 Aó ô # , A @LearningScript

/ @ # + @ + ¤ A B A > + , 2 + F + C / E - / 2 Dõ ôö ôAddTwoNumbers(). ô

AddTwoNumbers()/ ôY ô * > / : ; + @ / @ ) @ / 2 - DWhat just happened?' ? 2 1 / ? ? : . / , 2 A ì A : < 2 A ? G 2 1 A

AddTwoNumbers()

� 1 + ? A , 9 . A @ 2 1 A ? A ? 9 . A > / ; A 9AddTwoNumbers()

9 : + < , > A + E! E - + < > + + ; < , 2 1 AB 9 . / 9 = > A ?

firstNumber9 @ C

secondNumberD � 1 A 2 - , A / ?

intG + .

integer

number1Gnumber2

G 9 @ Cnumber3

D � 1 A - 9 . A 9 > ? + + E 2 1 A2 - , Aint

D � 1 A ? A B 9 . / 9 = > A ? 1 9 B A 2 + = A + E 2 - , Aint

intD

Page 66: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä W

[ 49 ]

firstNumber

firstNumber ? ú � � � ý � ú � � ú � � � ÿ � � û � ÿ ' ? - + < : 9 @ ? A A + @ > / @ A 4 4 + E 2 1 A : + C A = > + : ; G 2 1 + ? A B 9 . / 9 = > A ? 9 . A = A / @ 0 9 C C A C 2 + 0 A 2 1 A . DHow many parameters can a method have?� A : 9 @ 1 9 B A 9 ? F 9 @ - 9 ? - + <Calling a method! E - + < 9 . A > + + ; / @ 0 9 2

Page 67: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

[ 50 ]

/ @ : + C A D ! @ 2 1 A , . A B / + < ? ? : . A A @ ? 1 + 2 G > + + ; 9 2 > / @ A 6 4 IAddTwoNumbers(number1, number2);, 9 . A @ 2 1 A ? A ? 9 . A 2 1 A B 9 . / 9 = > A ? G

number19 @ C

number29 . A : 9 > > A C 2 1 A 9 . 0 < F A @ 2 ? 2 1 9 2 9 . A = A / @ 0 , 9 ? ? A C 2 + 2 1 A F A 2 1 + C D ! @ ? / F , > A 2 A . F ? G 2 1 A B 9 > < A ?firstNumber

9 @ CsecondNumber

firstNumber9 @ C

secondNumberD, 9 . 9 F A 2 A . ? > + + ; ? � < ? 2 > / ; A 2 1 / ? I

firstNumber = number1;

secondNumber = number2;J / @ : A 2 1 A 9 . 0 < F A @ 2number1

firstNumber: + @ 2 9 / @ ? 2 1 A B 9 > < A 4J / @ : A 2 1 A 9 . 0 < F A @ 2

number2

secondNumber: + @ 2 9 / @ ? 2 1 A B 9 > < A 7 D2 . 9 @ ? E A . . A C E . + F 2 1 A F A 2 1 + C : 9 > > 2 + 2 1 A F A 2 1 + C : + C A = > + : ; D

8 . A B / + < ? > - G 9 > > - + < 1 9 C 2 1 AAddTwoNumbers()

AddTwoNumbers()

Page 68: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä W

[ 51 ]

� 1 A @ A ì 2 ? : . A A @ ? 1 + 2 / ?# + C / E -

LearningScript2 + : 9 > > 2 1 A

AddTwoNumbers()2 + 2 9 > D ' > ? + : . A 9 2 A 9 @ + 2 1 A .ó ô # , A @LearningScript

/ @ # + @ + ¤ A B A > + , 2 + F + C / E - / 2 Dõ ôö ôAddTwoNumbers(). ô

DisplayResult()F A 2 1 + C D/ ôY ô * > / : ; + @ 8 > 9 - / @ ) @ / 2 - D

Page 69: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

[ 52 ]

What just happened?' ? - + < : 9 @ ? A A2 + > A 9 . @ E . + F 2 1 / ? A ì 9 F , > A / ? 2 1 / ? I! @ E 9 : 2 G 2 1 A B 9 > < A . A 2 < . @ A C E . + F 9 F A 2 1 + C : + < > C A 9 ? / > - = A ? 2 + . A C / @ 9 B 9 . / 9 = > Avoid Start()) @ / 2 - : 9 > > ? 2 1 A

Start()F A 2 1 + C + @ : A + @ > - D� 1 A : + C A

int answer =

AddTwoNumbers(number1, number2) +

AddTwoNumbers(number1, number3);H / . ? 2 2 1 A . A / ? 9 : 9 > > 2 +AddTwoNumbers(number1, number2)� 1 A 9 . 0 < F A @ 2 ?

number19 @ C

number2? A @ C 2 1 A / @ 2 A 0 A . ? 4 9 @ C 7 2 + 2 1 A F A 2 1 + C

int AddTwoNumbers(int firstNumber, int secondNumber);� 1 A / @ 2 A 0 A . ? 4 9 @ C 7 9 . A 9 ? ? / 0 @ A C 2 + 2 1 A , 9 . 9 F A 2 A . B 9 . / 9 = > A ?firstNumber9 @ C

secondNumber.

int result = firstNumber + secondNumber;� 1 A @ < F = A . ? 4 9 @ C 7 9 . A 9 C C A C 9 @ C ? 2 + . A C / @ 2 1 A C A : > 9 . A C B 9 . / 9 = > A . A ? < > 2 D

Page 70: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä W

[ 53 ]

return result;

� 1 A . A - + < ? A AAddTwoNumbers(number1, number2)

AddTwoNumbers(number1, number3)� 1 A 9 . 0 < F A @ 2 ?number1

9 @ Cnumber3

firstNumber9 @ CsecondNumber

D2

9 @ C7

9 . A 9 C C A C 9 @ C ? 2 + . A C / @ . A ? < > 2 D� 1 A . A - + < ? A A

AddTwoNumbers(number1, number3) 9D

59 @ C

99 . A 9 C C A C 2 + 0 A 2 1 A . 9 @ C 2 1 A . A ? < > 2 9 @ 2 / @ 2 A 0 A .

14� 1 AStart()

DisplayResult(answer);� 1 / ? / ? : 9 > > / @ 0 2 1 ADisplayResult()

F A 2 1 + C + @ > / @ A 4 L D9 B 9 > < A + E 2 - , Aint

D

Page 71: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

[ 54 ]

void DisplayResult(int total)

Debug.Log("The grand total is: " + total);� 1 / ? + < 2 , < 2 2 + 2 1 A ) @ / 2 -� 1 A ) @ / 2 - C / ? , > 9 - ? D� 1 AStart()/ @

LearningScript2 + A ì A : < 2 A G 2 1 A ? : . / , 2 / ? C + @ A D� . - F + C / E - / @ 0 > / @ A 6 4 2 + 9 C C 2 1 A @ < F = A . ? 2 + 0 A 2 1 A . 2 1 9 2 9 . A ? 2 + . A C / @ 2 1 A B 9 . / 9 = > A ?

number29 @ Cnumber3 AddTwoNumbers()

D � 1 A . A ? < > 2 / @2 1 A ? 1 + < > C = A DCalling a method is a logic detour

Using Unity's Update and Start methods= A : 9 < ? A 2 1 A - 9 . A . 9 2 1 A . / F , + . 2 9 @ 2 D � 1 A ? A 9 . A 2 1 A F + ? 2 : + F F + @ > - < ? A CMonoBehaviour

MonoBehaviourF A 2 1 + C / ? / @ : > < C A C / @ 9 ) @ / 2 - ? : . / , 2 2 + : 9 < ? A 2 1 A ? : . / , 2 2 + A ì A : < 2 A D ! ? 9 -< ? < 9 > > - = A : 9 < ? A + 2 1 A . F A 2 1 + C ? / @ 2 1 A ? : . / , 2 F 9 - = A : 9 > > A C E . + F 9 @ + 2 1 A . ? : . / , 2 + . : > 9 ? ? D

MonoBehaviour/ ? - + < . E . / A @ C D

Page 72: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä W

[ 55 ]

$ � % � � � � � � D O < ? 2 ? A 9 . : 1 E + .MonoBehavior

II

public class LearningScript : MonoBehaviour� 1 / ? > / @ A ? 9 - ? 2 1 9 2LearningScript

/ @ 1 A . / 2 ? E . + FMonoBehaviour

D ' @ - ? : . / , 2 2 1 9 2 / @ 1 A . / 2 ?E . + FMonoBehaviour Update()

9 @ CStart()

/ E 2 1 A - 9 . A� < ? 2 1 9 B A / 2 / @ 1 A . / 2 E . + FMonoBehavior

= - 9 C C / @ 0 I: MonoBehaviour� ú � ü � � � ÿ � � � � ý ü � � � � �

The Start method is called one time

Start()F A 2 1 + C / ? : 9 > > A C D � 1 / ? F A 2 1 + C / ? , . / F 9 . / > - < ? A C 2 +2 + = A . A 9 C - 2 + 0 + = A E + . A

Update()2 1 9 2 F 9 @ - + E 2 1 A A ì 9 F , > A ? ! < ? A C / @LearningScript

9 . A F 9 ; / @ 0< ? A + EStart()+ E 2 1 A E 9 : 2 2 1 9 2 ? / @ : A

Start()

The Update method is called over and over and over…' ? - + < ? 2 < C - 2 1 A ? 9 F , > A : + C A / @ 2 1 A+ E 2 1 A : + C A / ? / @ 2 1 AUpdate()

F A 2 1 + C D ' ? - + < . 0 9 F A . < @ ? G 2 1 A J : A @ A / ? C / ? , > 9 - A C F 9 @ -G + . D2 1 AUpdate()

F A 2 1 + C / ? : 9 > > A C = - ) @ / 2 - 2 + . < @ - + < . : + C A D

Page 73: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

[ 56 ]

J / @ : AUpdate()

/ ?2 1 A @ A ì 2 : 1 9 , 2 A . DUpdate()

Summary

Start()9 @ C

Update()F A 2 1 + C ? G

MonoBehaviour: > 9 ? ? DF 9 ; / @ 0 C A : / ? / + @ ? / @ - + < . : + C A D

Page 74: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Making Decisions in Code

! E ? 2 9 2 A F A @ 2 C A : / ? / + @ ?! E ( A > ? A ? 2 9 2 A F A @ 2 C A : / ? / + @ ?

5

Page 75: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Z ¾ 6 3 Å 4 [ Á å 3 Ç 3 Â Å Ç 3 Å Ä Â 1 Á

[ 58 ]

! E G / E G / E D ! E ! C + 2 1 / ? \ / E ! C + 2 1 9 2 \ � 1 9 2 1 9 , , A @ ? / E \* A . 2 9 / @ > -' @

if? 2 9 2 A F A @ 2 / ?

' ? 9 F , > / @ 0 + E� 1 A 2 A F , A . 9 2 < . A / ? : + > C� 1 A : 1 9 . 9 : 2 A . C / A C� 1 A " %2 . < A + . E 9 > ? A Dó ô # + C / E -

LearningScriptõ ôö ô ! @ ) @ / 2 - G : > / : ; + @ 8 > 9 - D

Page 76: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä ]

[ 59 ]

What just happened?) @ / 2 - I* + C A 9 @ 9 > - ? / ? I

bool theBearMadeBigPottyInTheWoods = true;� 1 / ? + + > A 9 @ B 9 . / 9 = > A / ? C A : > 9 . A C 9 @ C 9 ? ? / 0 @ A C 2 1 A B 9 > < A + Etrue

D� 1 A : + C Aif( theBearMadeBigPottyInTheWoods)' @

if true+ .

falseD� 1 A B 9 . / 9 = > A

theBearMadeBigPottyInTheWoods/ ? ? 2 + . / @ 0 9 B 9 > < A

trueG? : . A A @ ? 1 + 2 D

Page 77: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Z ¾ 6 3 Å 4 [ Á å 3 Ç 3 Â Å Ç 3 Å Ä Â 1 Á

[ 60 ]

Using the NOT operator to change the condition

theBearMadeBigPottyInTheWoods = false;' ? ? / 0 @ ? 2 1 A B 9 > < Afalse

2 +theBearMadeBigPottyInTheWoods

Dif( ! theBearMadeBigPottyInTheWoods)

theBearMadeBigPottyInTheWoods/ ? E 9 > ? A D

2 1 A * + @ ? + > A ? : . A A @ ? 1 + 2A ì A : < 2 A 2 1 A : + C A = > + : ; D/ ? A ì A : < 2 A C D

&&

||

condition to checkó ô # + C / E -LearningScriptõ ôö ô ! @ ) @ / 2 - G : > / : ; + @ 8 > 9 - D

Page 78: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä ]

[ 61 ]

� ÿ ý ü þ � � ^ _ � � � û ú � � û What just happened?& A . A / ? 2 1 A + < 2 , < 2 - + < 0 A 2 / @ 2 1 A ) @ / 2 - I

* + C A 9 @ 9 > - ? / ? I� 1 A : + C Abool theBearMadeBigPottyInTheWoods = true;'bool

B 9 . / 9 = > A / ? C A : > 9 . A C 9 @ C 9 ? ? / 0 @ A C 2 1 A B 9 > < A + Etrue

Dint temperature = 40;' @

intB 9 . / 9 = > A / ? C A : > 9 . A C 9 @ C 9 ? ? / 0 @ A C 2 1 A B 9 > < A

40D

Page 79: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Z ¾ 6 3 Å 4 [ Á å 3 Ç 3 Â Å Ç 3 Å Ä Â 1 Á

[ 62 ]

if(temperature >= 35 && theBearMadeBigPottyInTheWoods)' @if true

Dtemperature

/ ? 0 . A 9 2 A . 2 1 A @ G + . A � < 9 > 2 + G35

D� 1 A B 9 > < A ? 2 + . A C / @temperature

/ ?40� 1 A B 9 > < A ? 2 + . A C / @

theBearMadeBigPottyInTheWoods

if(temperature >= 35 || theBearMadeBigPottyInTheWoods)' @if

� . - : 1 9 @ 0 / @ 0temperature 30

D # @ > - + @ A + E 2 1 Aif= A 2 . < A I

� 1 A : + C Aif(temperature >= 35 && theBearMadeBigPottyInTheWoods): + C A = > + : ; C + A ? @ + 2 A ì A : < 2 A D

Page 80: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä ]

[ 63 ]

if(temperature >= 35 || theBearMadeBigPottyInTheWoods)

theBearMadeBigPottyInTheWoods

J + E 9 . G 2 1 Aif true

E + . 2 1 A : + C A = > + : ; 2 +A ì A : < 2 A D � 1 A . A / ? 9 @2 1 Aif false

D9 > 2 A . @ 9 2 A : + C A = > + : ;9 . A � < ? 2 > / ; A . A 0 < > 9 .

elseó ô # + C / E -LearningScriptõ ô

Page 81: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Z ¾ 6 3 Å 4 [ Á å 3 Ç 3 Â Å Ç 3 Å Ä Â 1 Á

[ 64 ]

ö ô ! @ ) @ / 2 - G : > / : ; + @ 8 > 9 - D

else if: + C A = > + : ; D

What just happened?� 1 A 9 @ 9 > - ? / ?bool theBearMadeBigPottyInTheWoods = false;� 1 A B 9 . / 9 = > A

theBearMadeBigPottyInTheWoods/ ? 9 ? ? / 0 @ A C 2 1 A B 9 > < A + E E 9 > ? A D

if( theBearMadeBigPottyInTheWoods)

Page 82: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä ]

[ 65 ]

` 4 D � 1 9 2 > + 0 / : 9 > + , A . 9 2 + . : 9 @ 2 < . @ 9true false

G + . 9false/ @ 2 +

true

true

Making decisions based on user input¤ A : / ? / + @ ? Þ ß à � � á � S G a � � � � b c � � � @; A - 2 + : 9 > > 2 1 AAddTwoNumbers()

F A 2 1 + C Iif(Input.GetKeyUp(Keycode.Return))

AddTwoNumbers();� 1 Aif Return

GetKeyUp()IReturn

; A - / ? . A > A 9 ? A C GAddTwoNumbers()

/ ? A ì A : < 2 A C DAddTwoNumbers()ù � ü � � û � ý ÿ � ü � � � ü � � ý ü � � � � � � � � � � � � � � û ú ü ý � û ú ü � � ÿ � � � � � ú ? �

Page 83: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Z ¾ 6 3 Å 4 [ Á å 3 Ç 3 Â Å Ç 3 Å Ä Â 1 Á

[ 66 ]

$ � % � � � � � � < @ C A . 2 1 AGetComponents()

F A 2 1 + C Ipublic HingeJoint[] hingeJoints;

void Example() {

hingeJoints = gameObject.GetComponents<HingeJoint>();

...

}' > > 2 1 AHingeJoints

HingeJoints HingeJoints

K / ; A 9 ? < , A . ( B 9 . / 9 = > A C / B / C A C / @ 2 + F 9 @ - : < = = - 1 + > A ? DStoring items in an arrayK + + ; / @ 0 9 2 2 1 A

GetComponents()A ì 9 F , > A + @ 2 1 A9 . . 9 - / ? : . A 9 2 A C I

Page 84: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä ]

[ 67 ]

' ? , A . 2 1 A : + C A + @ > / @ A 6 Ipublic HingeJoint[] hingeJoints;

public� � � � � � � � � D ' > ? + 2 1 A 9 . . 9 - / ?9 : : A ? ? / = > A E . + F + 2 1 A . ? : . / , 2 ? D

HingeJoint[]

HingeJoint HingeJoint/ ? 9 : > 9 ? ? / @ 2 1 A N D� 1 A ? � < 9 . A = . 9 : ; A 2 ? ? , A : / E - 2 1 9 2 2 1 A B 9 . / 9 = > A : . A 9 2 A C / ? 0 + / @ 0 2 + = A 9 @ 9 . . 9 - G

HingeJoint+ = � A : 2 ? G 9 @ C+ @ > -

HingeJoint+ = � A : 2 ? D

hingeJoint/ ? 2 1 A @ 9 F A + E 2 1 A 9 . . 9 - = A / @ 0 : . A 9 2 A C DC A : > 9 . A C / ? 9 : 2 < 9 > > - 0 + / @ 0 2 + = A 9 @ 9 . . 9 - D

GetComponent()F A 2 1 + C . A 2 . / A B A ? 9 > > 2 1 A

HingeJoints+ @ 2 1 A % 9 F A # = � A : 2 9 @ C ? 2 + . A ? A 9 : 1 + E 2 1 A F / @ 2 + 2 1 A 9 . . 9 - I' ? , A . 2 1 A : + C A + @ > / @ A 7 I

hingeJoints = gameObject.

GetComponents<HingeJoint>();

hingeJoints/ ? 2 1 A 9 . . 9 -% 9 F A # = � A : 2 / ? 2 1 A B 9 . / 9 = > A 2 1 9 2 ? 2 + . A ? 2 1 A % 9 F A # = � A : 2 2 1 / ? ? : . / , 2 / ?9 2 2 9 : 1 A C 2 +

GetComponents<HingeJoint>()/ ? 2 1 A F A 2 1 + C < ? A C 2 + E / @ C A B A . -

HingeJoint+ = � A : 2 + @ 2 1 / ? % 9 F A # = � A : 2' ? A 9 : 1

HingeJoint+ = � A : 2 / ? E + < @ C G / 2 / ? ? 2 + . A C / @ 2 + + @ A + E 2 1 A : < = = - 1 + > A ? + E 2 1 A 9 . . 9 - D� 1 A ? A : < = = - 1 + > A ? 9 : 2 < 9 > > - 1 9 B A 9 . A 9 > @ 9 F A : 9 > > A C 9 @ D � 1 A ? A A > A F A @ 2 ? 9 : 2 < 9 > > -

hingeJoint9 . . 9 - D � 9 : 1 A > A F A @ 2 / ? 0 / B A @ 9 @ / @ C A ì

HingeJoint? A : + @ C + @ A E + < @ C / ? ? 2 + . A C / @ 2 1 A A > A F A @ 2 9 2 / @ C A ì 6 D � 1 A 2 1 / . C 9 2 / @ C A ì 4 G 9 @ C + @ 9 @ CHingeJoints

9 . A E + < @ C + @ 2 1 A % 9 F A # = � A : 2 DHingeJoint2 1 A ? A : + @ C

HingeJoint

hingeJoint[1]? , A : / E - 2 1 A / @ C A ì @ < F = A . D

Page 85: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Z ¾ 6 3 Å 4 [ Á å 3 Ç 3 Â Å Ç 3 Å Ä Â 1 Á

[ 68 ]

� ÿ � � ý ú � � � � û � � þ ý ü ü � û ÿ 9List

Storing items in a List) ? / @ 0 9List

/ @ ? 2 A 9 C + EList

DList

/ ? 9 C � < ? 2 9 = > AList

List1 9 ? 2 1 A 9 = / > / 2 - 2 + ? 2 + . A 9 @ - 2 - , A + E + = � A : 2 G

List2 + ? 2 + . A D

List+ E / @ 2 A 0 A . ? G + E 2 1 A

int2 - , A G2 1 A @ - + < : 9 @ : . A 9 2 A 9

List int2 - , A D � 9 @ 2 9

List� 1 A @ : . A 9 2 A 9List string

2 - , A D* . A 9 2 A 9List

2 1 9 2 ? 2 + . A ? 2 1 A @ 9 F A ? + E ? + F A , + @ / A ? D J / @ : A 2 1 A - 9 . A @ 9 F A ? G < ? A2 1 Astring

2 - , A Dó ô # + C / E -LearningScriptõ ôö ô

Page 86: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä ]

[ 69 ]

. ô ! @ ) @ / 2 - G : > / : ; + @ 8 > 9 - D

What just happened?? : . A A @ ? 1 + 2 / ? 2 1 A2 + 2 9 > + E 7 A > A F A @ 2 ? / @ 2 1 AList

I

Page 87: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Z ¾ 6 3 Å 4 [ Á å 3 Ç 3 Â Å Ç 3 Å Ä Â 1 Á

[ 70 ]

� û � ú û � � � � ú � � û � ÿ � úList

� 1 A 9 @ 9 > - ? / ? + EUsing System.Collections.Generic;� + = A 9 = > A 2 + < ? A 9

ListE + . < ? / @ 0 9List

D* 1 9 @ 0 A 2 1 A < ? / @ 0 ? 2 9 2 A F A @ 2 2 +using System.Collections.Generic;

DList<string> myFavoritePonies = new List<string>();� 1 / ? ? 2 9 2 A F A @ 2 : . A 9 2 A ? 9 @ A F , 2 -

List+ = � A : 2 D

List<string> List+ E 2 - , Astring

D� 1 A @ 9 F A + E 2 1 AList

/ ?myFavoritePonies

D=C A : > 9 . / @ 0 2 1 A 2 - , A 9 @ C 2 1 A @ 9 F A D� B A . - 2 1 / @ 0 + @ 2 1 A . / 0 1 2 ? / C A / ? � < ? 2 > / ; A 9 ? ? / 0 @ / @ 0 9 B 9 > < A 2 + 9 B 9 . / 9 = > A G 2 1 A . A E + . A

new List<string() List+ = � A : 2 / @ : + F , < 2 A .

myFavoritePoniesDù ú � ý ÿ � ý � û � ü � � û � ý ÿ � ú �

Listý ÿ ú ü � � U � � � ú � ý � ÿ � � ú ü ÿ � � û � � ú � ú ý ü� � � � � ü � ÿ > � ú þ ý ü � ú ü � þ þ ú û � � ü ú ÿ ú ü � � U � � � ú � ú ü ÿ � � û � � � � þ þ � � � �

Page 88: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä ]

[ 71 ]

myFavoritePonies.Add("Princess Cadence");� 1 A ? A 2 1 . A A > / @ A ? + E : + C A 9 . A 9 C C / @ 0strings

G 2 1 A , + @ - @ 9 F A ? G 2 + 2 1 AmyFavoritePonies List

DO < ? 2 > / ; A 9 @ 9 . . 9 - G A 9 : 1 , + @ - @ 9 F Astring

9 C C A C / ? 0 / B A @ 9 @ / @ C A ì @ < F = A . E + .2 1 A A > A F A @ 2 2 1 9 2 A 9 : 1 , + @ - @ 9 F A / ? ? 2 + . A C / @ ImyFavoritePonies

Princess

Cadence

Index 0 Index 1 Index 2

FluttershyNightmare

Moon

Debug.Log("This List has " + myFavoritePonies.Count + " ponies");

myFavoritePonies.Count. A 2 . / A B A ? 2 1 A @ < F = A . + E A > A F A @ 2 ? / @ 2 1 A

ListD

Debug.Log("The pony's name at index 1 is " + myFavoritePonies[1]);K / ; A 2 1 AList

/ ? 9 2 / @ C A ì 5 D

Page 89: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Z ¾ 6 3 Å 4 [ Á å 3 Ç 3 Â Å Ç 3 Å Ä Â 1 Á

[ 72 ]

' C C 9 @ + 2 1 A . , + @ - 2 + 2 1 AList

G C / ? , > 9 - 2 1 A@ < F = A . + E A > A F A @ 2 ? / @ 2 1 AList

V � � ý ü þ ú ü � � � � � ü � � � � �List� ý ÿ ý ÿ ý � � � ÿ ÿ ý � � � � � � � � ÿ ý ü þ ú ü ú û û ú �

Page 90: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä ]

[ 73 ]

Storing items in a Dictionaryd � e2 1 A B 9 > < A ? 2 + . A C D* . A 9 2 A 9

Dictionary< ? / @ 0 2 - , A

intE + . 2 1 A ; A - ? Dó ô # + C / E -

LearningScriptõ ôö ô ! @ ) @ / 2 - G : > / : ; + @ 8 > 9 - D

Page 91: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Z ¾ 6 3 Å 4 [ Á å 3 Ç 3 Â Å Ç 3 Å Ä Â 1 Á

[ 74 ]

What just happened?& A . A / ? 2 1 A D

� 1 A 9 @ 9 > - ? / ?Dictionary<int, string> myFavoritePonies = new Dictionary<int, string>();¤ A : > 9 . / @ 0 9

Dictionary/ ? B A . - ? / F / > 9 . 2 + C A : > 9 . / @ 0 9

ListD'

Dictionary. A � < / . A ? - + < 2 + ? , A : / E - 2 1 A 2 - , A E + . 2 1 A

KeyD� 1 / ? A ì 9 F , > A < ? A C / @ 2 A 0 A . ? E + . 2 1 A ; A - ? D

myFavoritePonies.Add(10, "Princess Cadence");

myFavoritePonies.Add(20, "Fluttershy");

AddG � < ? 2 > / ; A - + < C / C E + . 9

ListD

myFavoritePonies[30] = "Nightmare Moon";

myFavoritePonies[40] = "Rainbow Dash";

Page 92: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä ]

[ 75 ]

Using a Collection Initializer to add items to a List or Dictionary

List+ .Dictionary

Dó ô # + C / E -LearningScriptõ ôö ô ! @ ) @ / 2 - G : > / : ; + @ 8 > 9 - D

Page 93: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Z ¾ 6 3 Å 4 [ Á å 3 Ç 3 Â Å Ç 3 Å Ä Â 1 Á

[ 76 ]

What just happened?+ < 2 , < 2 I

List<string> myFavoritePonies = new List<string>() {"Princess Cadence", Fluttershy"};

List� 1 / ? / ? 9 @ + 2 1 A . < ? A + E : < . > - = . 9 : A ? D� 1 / ?List

List? 2 9 2 A F A @ 2 DDictionary<int, string> ponyDictionary = new Dictionary<int, string>() {{10, "Nightmare Moon"}, {20, "Rainbow Dash"}};

Dictionary

Page 94: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä ]

[ 77 ]

Looping though lists to make decisions 2 + 0 A 2 C 9 2 9 / @ 2 + 2 1 A F G2 1 A @ A A C A C C 9 2 9 Dforeach

> + + ,for

> + + ,while

> + + ,: - : > A 2 1 . + < 0 1 2 1 A A > A F A @ 2 ? 9 @ C . A 2 . / A B A C 9 2 9 / ? 2 + < ? A 2 1 Aforeach

> + + , D2 1 A C A ? / . A C C 9 2 9 E . + F A 9 : 1 + @ A = - < ? / @ 0

foreach> + + , ? Dó ô # + C / E -

LearningScriptõ ô

Page 95: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Z ¾ 6 3 Å 4 [ Á å 3 Ç 3 Â Å Ç 3 Å Ä Â 1 Á

[ 78 ]

ö ô ! @ ) @ / 2 - G : > / : ; + @ 8 > 9 - D

What just happened? I

Page 96: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä ]

[ 79 ]

H + . A 9 : 1string[] ponyArray = new string[] {"AppleJack", "Rarity"};'string

9 . . 9 - @ 9 F A CponyArray

foreach(string pony in ponyArray)'foreach

> + + , / ? < ? A C 2 + . A 2 . / A B A + @ A A > A F A @ 2 G 9 , + @ - @ 9 F A ? 2 . / @ 0 G ? 2 + . A C/ @ponyArray

D' B 9 . / 9 = > A / ? C A : > 9 . A C @ 9 F A Cpony

2 + 1 + > C 2 1 A . A 2 . / A B A C , + @ - @ 9 F A D# @ : A 9 , + @ - @ 9 F A / ? . A 2 . / A B A C G 2 1 Aforeach

ponyArray1 9 ? = A A @ . A 2 . / A B A C 9 @ C2 A ? 2 A C / @ 2 1 A : + C A = > + : ; D

if(pony == "Rarity");! E 2 1 A . A 2 . / A B A C ? 2 . / @ 0 ? 2 + . A C / @pony

/ ? A � < 9 > 2 +"Rarity"

G 2 1 A @ > / @ A 6 L A ì A : < 2 A ? DDebug.Log("I was looking for " + pony);2 1 A DList<string> ponyList = new List<string>() {"Princess Cadence", "Fluttershy"};'List

@ 9 F A CponyList string? 2 . / @ 0 ? 9 . A 9 C C A C D� 1 A : + C A + @

foreach(string pony in ponyList)'foreach

> + + , / ? < ? A C 2 + . A 2 . / A B A + @ A A > A F A @ 2 G 9 , + @ - @ 9 F Astring

G ? 2 + . A C/ @ponyList

D' B 9 . / 9 = > A / ? C A : > 9 . A C @ 9 F A Cpony

2 + 1 + > C 2 1 A . A 2 . / A B A C , + @ - @ 9 F A D

Page 97: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Z ¾ 6 3 Å 4 [ Á å 3 Ç 3 Â Å Ç 3 Å Ä Â 1 Á

[ 80 ]

# @ : A 9 , + @ - @ 9 F A / ? . A 2 . / A B A C G 2 1 Aforeach/ ? A ì A : < 2 A C D

ponyList1 9 ? = A A @ . A 2 . / A B A C 9 @ C2 A ? 2 A C / @ 2 1 A : + C A = > + : ; D

if(pony == "Fluttershy")! E 2 1 A . A 2 . / A B A C ? 2 . / @ 0 ? 2 + . A C / @pony

/ ? A � < 9 > 2 +"Fluttershy"

G 2 1 A @ > / @ ADebug.Log("I was looking for " + pony);

pony/ ? C / ? , > 9 - A C/ @ 2 1 A D

Dictionary<int, string> ponyDictionary = new Dictionary<int, string>() {{10, "Nightmare Moon"}, {20, "Rainbow Dash"}};'Dictionary

@ 9 F A CponyDictionary

<int, string>

foreach(KeyValuePair<int, string> pony in ponyDictionary)'foreach

> + + , / ? < ? A C 2 + . A 2 . / A B A + @ AKeyValuePair

G 9 ; A - 9 @ C B 9 > < A G ? 2 + . A C / @ponyDictionary

D' B 9 . / 9 = > A / ? C A : > 9 . A C @ 9 F A Cpony

2 + 1 + > C 2 1 A . A 2 . / A B A CKeyValuePair

D# @ : A 9 ; A - B 9 > < A 9 @ C 9 , + @ - @ 9 F A ? 2 . / @ 0 9 . A . A 2 . / A B A C G 2 1 Aforeach

: + C A = > + : ;KeyValuePair

/ @ponyDictionary

1 9 ? = A A @. A 2 . / A B A C 9 @ C 2 A ? 2 A C / @ 2 1 A : + C A = > + : ; Dif(pony.Key == 20)! E 2 1 A . A 2 . / A B A C

Key? 2 + . A C / @ , + @ - / ? A � < 9 > 2 +

20G 2 1 A @ > / @ A 7 7 A ì A : < 2 A ? D� 1 A : + C A

Debug.Log("I was looking for " + pony.Value);� 1 A ? 2 . / @ 0I was looking for

, > < ? 2 1 A ? 2 . / @ 0 B 9 > < A ? 2 + . A C / @pony.Key

/ ?C / ? , > 9 - A C / @ 2 1 A D

Page 98: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä ]

[ 81 ]

for� 1 A ? - @ 2 9 ì + E 9for

> + + , Ifor (initializer; condition; iterator)

{

code block

} ÿ � � ú û ú � � � � � ÿ � � ý � � � ü ÿ � ü � � � � � ú ÿ , + @ - @ 9 F A ? 2 + 9List

D " A 2 . / A B A 9 @ C C / ? , > 9 - 2 1 A @ < F = A . + E A > A F A @ 2 ? / @ 2 1 AList

D � 1 A @ < ? A 9for

> + + , 2 + C / ? , > 9 - A 9 : 1 , + @ - @ 9 F A G 9 @ C ? A > A : 2 + @ A + E 2 1 A F Ió ô # + C / E -LearningScriptõ ôö ô ! @ ) @ / 2 - G : > / : ; + @ 8 > 9 - D

Page 99: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Z ¾ 6 3 Å 4 [ Á å 3 Ç 3 Â Å Ç 3 Å Ä Â 1 Á

[ 82 ]

What just happened?ponyList

G 2 1 A @ 9 F A ? + E 2 1 AponyList

� 1 A 9 @ 9 > - ? / ? + E 2 1 AList<string> ponyList = new List<string>() {"Princess Cadence", "Fluttershy", "Rainbow Dash", "Rarity"};'List

@ 9 F A CponyList string

2 - , A DH + < . ? 2 . / @ 0 ? 9 . A 9 C C A C + E 2 1 A , + @ - @ 9 F A ? DDebug.Log("Number of elements in ponyList: " + ponyList.Count);� 1 A ? 2 . / @ 0

Number of elements in ponyList:, > < ? 2 1 A @ < F = A . + E A > A F A @ 2 ?< ? A C / @

ponyList/ ? C / ? , > 9 - A C / @ 2 1 A D

ponyList.Count/ ? < ? / @ 0 C + 2 ? - @ 2 9 ì 2 + 9 : : A ? ? 2 1 A

Count, . + , A . 2 - G 9 B 9 . / 9 = > A2 1 9 2 ? 2 + . A ? 2 1 A @ < F = A . + E A > A F A @ 2 ? / @ 9

ListD

ponyListG ? + / 2 1 9 ? E + < . A > A F A @ 2 ? 2 + ? 2 + . A 2 1 A? 2 . / @ 0 @ 9 F A ? D

Page 100: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä ]

[ 83 ]

for(int i = 0; i < ponyList.Count; i++)� 1 Afor loop

/ ? : . A 9 2 A C D� A C A : > 9 . A C 9 B 9 . / 9 = > Ai

+ E 2 - , Aint

G 9 @ C 9 ? ? / 0 @ A C / 2 2 1 A 9 B 9 > < A + E0

List/ ?0

D2 + = A A ì A : < 2 A C D� 1 A @ + < .for i

/ ? A � < 9 > 2 +0

G 9 @ CponyList.Count/ ? A � < 9 > 2 +

4G 2 1 A . A E + . A

0/ ? > A ? ? 2 1 9 @

4 trueD � 1 A . A E + . A 2 1 A

for> + + , : + C A� 1 A / 2 A . 9 2 + . G

i++ iG F 9 ; / @ 0

i 1D

i++ i = i + 1B 9 > < A / @i

9 @ C 9 C C / @ 0 6 G 2 1 A @ 9 ? ? / 0 @ / @ 0 2 1 9 2 2 +i

Dfalse

Di

false= A : 9 < ? A

i/ ? @ + 2 > A ? ? 2 1 9 @

4

� 1 A : + C A + @Debug.Log(ponyList[i]);� 1 A A > A F A @ 2 ? / @

ponyList9 . A = A / @ 0 9 : : A ? ? < ? / @ 0 2 1 A / @ C A ì @ < F = A . D' ? 2 1 A

for i/ ? A � < 9 > 2 +

0G 2 1 A . A E + . A

ponyList[i]/ ? 9 : 2 < 9 > > -

ponyList[0]G 2 1 A A > A F A @ 2 9 2 / @ C A ì 5 D� 1 A A > A F A @ 2 9 2 / @ C A ì 5 / ? ? 2 + . / @ 0

Princess CadenceD

for> + + , G 6 / ? 9 C C A C 2 +

iG 2 1 A . A E + . A 2 1 A @ A ì 2 2 . / ,2 1 . + < 0 1 2 1 A E + . > + + , G

i

ponyList[i] ponyList[1]G 2 1 A @ A ì 2 A > A F A @ 2 9 2 / @ C A ì 6 DD

Page 101: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Z ¾ 6 3 Å 4 [ Á å 3 Ç 3 Â Å Ç 3 Å Ä Â 1 Á

[ 84 ]

if(ponyList[i] == "Fluttershy")2 1 A @ 9 F A . A 2 . / A B A C E . + FponyList Fluttershy"

DDebug.Log("I was looking for " + ponyList[i]);� 1 A ? 2 . / @ 0

I was looking for, > < ? 2 1 A @ 9 F A

Fluttershy/ ? C / ? , > 9 - A C / @2 1 A D

Using the while loop� 1 Awhile

> + + , A ì A : < 2 A ? 9Vwhile for

� � � � ý ü � � � � � � ü � ü � � ú û � ÿ fThe syntax of a while loop:

initializer

while (condition)

{

code block

iterator

}

2 1 . + < 0 1 2 1 A . A ? 2 + E2 1 A > / ? 2 Ió ô # + C / E -LearningScriptõ ôö ô ! @ ) @ / 2 - G : > / : ; + @ 8 > 9 - D

Page 102: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä ]

[ 85 ]

What just happened?= A A @ ? A 9 . : 1 / @ 0 E + .Fluttershy

/ @ ? 2 A 9 C + ERainbow Dash

G 9 @ C @ + 2 / @ : > < C A C 2 1 Abreak

2 1 A ? 9 F A 9 ? 2 1 Afor

> + + ,A ì 9 F , > A D ! @ E 9 : 2 G 2 1 AbreakE + . > + + , D

Page 103: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Z ¾ 6 3 Å 4 [ Á å 3 Ç 3 Â Å Ç 3 Å Ä Â 1 Á

[ 86 ]

for> + + , A ì 9 F , > A D

int i = 0;

while(i < ponyList.Count)� 1 AwhileJ / @ : Ai

/ ?0

G / 2 / ? > A ? ? 2 1 9 @ponyList.Count 4� 1 A

while

if(ponyList[i] == "Rainbow Dash")

if? 2 9 2 A F A @ 2 / ? : 1 A : ; / @ 0 2 +? A A / E 2 1 A @ 9 F A . A 2 . / A B A C E . + F

ponyList/ ? A � < 9 > 2 +

Rainbow DashD

i++;� 1 A / 2 A . 9 2 + .i

/ ? / @ : . A F A @ 2 A C = - 6 9 @ C 2 1 A > + + , . A , A 9 2 ? = 9 : ; 2 + > / @ A 6 4 2 + : 1 A : ;i2 1 A > + + , D� 1 A : + C A

Debug.Log("Stop. I was looking for " + ponyList[i]);� 1 A ? 2 . / @ 0Stop. I was looking for

, > < ? 2 1 A @ 9 F ARainbow Dash

/ ?C / ? , > 9 - A C / @ 2 1 A D

Page 104: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä ]

[ 87 ]

� 1 A : + C Abreak;

break

while

+ E , + @ - @ 9 F A ? C / ? , > 9 - A C / @ 2 1 A = A E + . A ? 2 + , , / @ 0 DSummary

Page 105: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À
Page 106: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Communication

¤ + 2 J - @ 2 9 ì = A / @ 0 � < ? 2 9 @ 9 C C . A ? ?) ? / @ 0 ¤ + 2 J - @ 2 9 ì / @ 9 ? : . / , 2

6

Page 107: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

[ 90 ]

Using Dot Syntax is like addressing a letter� B A . ? A A @ ? + F A 2 1 / @ 0www.unity3d.com

& A . A / ? 9 F 9 / > / @ 0 9 C C . A ? ? I� A . . - $ + . 2 + @4 4 F - J 2 . A A 2Post Office Syntax

Terry Norton

22 myStreet

Essex, VT General

Specific

Dot Syntax

Essex, VT 22 myStreet Terry Norton. .

General SpecificK + + ; / @ 0 9 2 2 1 9 2 G

Page 108: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä g

[ 91 ]

! : + < > C E + . A ? A A + @ A = / 0 / ? ? < A 2 . - / @ 0 2 + . A 2 . / A B A F -2 + 2 1 A ? < @ 0 > 9 ? ? A ? D� 1 A ? 9 F A . < > A ? + E 9 : : A ? ? 9 , , > - 2 + F A F = A . B 9 . / 9 = > A ? 9 @ C F A 2 1 + C ? + E 9 : > 9 ? ? + . ? : . / , 2 Dprivate

D& A . A Gprivate

F A 9 @ ? I � � � � � � � � � 9 ? 9 * + F , + @ A @ 2 , . + , A . 2 -� A : 9 @ ? , A : / E - 9 B 9 . / 9 = > A + . F A 2 1 + C 2 + = Apublic

D& A . A Gpublic

F A 9 @ ? I � � � � � � � � � 9 ? 9 * + F , + @ A @ 2 , . + , A . 2 -¤ + 2 J - @ 2 9 ì / ? + . F A 2 1 + C / @ 9 @9 : > 9 ? ? 9 @ C / 2 ? + = � A : 2 ? Dprivate

� ûpublic

Working with objects is a class act

: + @ ? / C A . 2 1 / @ 0 ? 2 1 A - : 9 @ ? A A + @ 2 1 A ? : . A A @ 9 ? + = � A : 2 ? D/ @ ) @ / 2 - 1 9 B A 2 + = A ? + F A 2 1 / @ 0 - + < : 9 @ ? A A / @ 9 0 9 F A J : A @ A D ! @ E 9 : 2 G 2 1 A B 9 ? 2 F 9 � + . / 2 - + E+ = � A : 2 ? / @ ) @ / 2 - 9 . A @ + 2 B / ? < 9 > > - / @ 2 1 A J : A @ A D

Page 109: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

[ 92 ]

LearningScript< ? A 2 1 A 0 A @ A . 9 > 2 A . Fpublic class LearningScript : MonoBehaviour

LearningScript/ 2 ? F A F = A . B 9 . / 9 = > A ? 9 @ C F A 2 1 + C ? D ' @ - B 9 . / 9 = > A @ + 2 C A : > 9 . A C / @ 9 F A 2 1 + C / ? 9 F A F = A .B 9 . / 9 = > A + E 2 1 A : > 9 ? ? D! @ Þ ß à � � á � S G ! 2 + > C - + < 9 = + < 2 2 1 A F 9 0 / : 2 1 9 2� � � � � � � � �J A > A : 2 9 @ - % 9 F A # = � A : 2 / @ 2 1 A G 2 1 A @ > + + ; 9 2 2 1 A � � � � � � � � � D H + . A ì 9 F , > A G ? A > A : 22 1 A % 9 F A # = � A : 2 D � 1 A . A 9 . A ? A B A . 9 > * + F , + @ A @ 2 ? + @ 2 1 A

O < ? 2 > / ; A 9 @int

G + . 9string

/ ? 9 2 - , A + E C 9 2 9 G 2 1 A @ 9 F A + E 9 : > 9 ? ? / ? 9 > ? + 9 2 - , A+ E C 9 2 9 D/ 2 : 9 @ � < ? 2 9 ? A 9 ? / > - ? 2 + . A 9 . A E A . A @ : A 2 + 9 @ + = � A : 2 + E 2 1 ALearningScript

2 - , A G 9 ?LearningScript myVariable;

Page 110: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä g

[ 93 ]

+ = � A : 2 / @ F A F + . - DV ÿ û ý � �LearningScript

D # 9 ; A ? + F A2 1 ALearningScript

LearningScript2 + 6 5 5 5 % 9 F A # = � A : 2 ? G 9 @ C : > / : ; + @+ E 2 - , A

LearningScript= - 2 1 Ascript h ? � ü � � � þ � � � � U � � û � ú � � � û � � ú � ú ÿ ÿ ý ÿ ú � � � � ú T � � � � ü � ü � � � � ú ÿ ÿ ý ÿ ú � � � � ú ü ý ü ÿ � ú ü � � � U � � V T � � � � ü � ü � � � U � � ú ü � ú ü ý ü ÿ � ú ü �� � U � � ú û � � � ÿ ú � � � ý ü þ

Using Dot Syntax in a scriptA 9 : 1 * + F , + @ A @ 2 + = � A : 2 . A ? / C A ? / @ : + F , < 2 A . F A F + . - G ? 2 + . / @ 0 C 9 2 9Accessing a Component's own variables and methods¤ + 2 J - @ 2 9 ì : 9 @ = A < ? A C 2 + 9 : : A ? ? 9 @ - , < = / : B 9 . / 9 = > A + . F A 2 1 + C + @ 9 @ - * + F , + @ A @ 2 + @ 9 @ -

Page 111: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

[ 94 ]

> + + ; / @ 0 / @LearningScript

Dthis

variable methodor1

variable methodor2

Dot Syntax for the current Component

To access the item in :bold

B 9 . / 9 = > A / @LearningScript

E . + F / @ ? / C ALearningScript

Dó ô # + C / E -LearningScript

Page 112: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

Ä � ¾ � Æ Á ä g

[ 95 ]

õ ôö ô ! @ ) @ / 2 - G : > / : ; + @What just happened?& A . A 9 . A 2 1 A + < 2 , < 2 ? / @ 2 1 A I

string myString = "Access the variable ";

myString/ ? 2 1 A

private

Debug.Log(myString + "the normal way.");2 1 A B 9 . / 9 = > A @ 9 F A� 1 Astring

B 9 > < A / @myString

GAccessing this variableE + . 2 1 A B 9 . / 9 = > A @ 9 F A

myString GetComponent()G

Debug.Log(this.myString + "using 'this' keyword.");

myString/ ? = A / @ 0 9 : : A ? ? A C < ? / @ 0 ¤ + 2 J - @ 2 9 ì� 1 A

this2 1 A : < . . A @ 2 * + F , + @ A @ 2

Page 113: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

[ 96 ]

Debug.Log(GetComponent<LearningScript>().myString + "using

GetComponent.");

myString/ ? = A / @ 0 9 : : A ? ? A C < ? / @ 0 ¤ + 2 J - @ 2 9 ì 9 0 9 / @

GetComponent<T>()F A 2 1 + C / ? . A 2 . / A B / @ 0 2 1 A

LearningScript* + F , + @ A @ 2K / @ A 4 4 I

Debug.Log(this);) ? / @ 0this

G 2 1 A * + F , + @ A @ 2 / ? ? A @ 2 2 + 2 1 Athis

/ ? 2 1 A: < . . A @ 2LearningScript

* + F , + @ A @ 2 + = � A : 2K / @ A 4 7 IDebug.Log(GetComponent<LearningScript>());) ? / @ 0

GetComponent<LearningScript>()G 2 1 A * + F , + @ A @ 2 / ? ? A @ 2 2 + 2 1 ALearningScript

* + F , + @ A @ 2 + = � A : 2� 1 Athis GetComponent<LearningScript>()

9 . A = + 2 1 . A 2 . / A B / @ 02 1 A ? 9 F ALearningScript

* + F , + @ A @ 2 + = � A : 2Q á � ß � b �2 1 A B 9 . / 9 = > A ? 9 @ C F A 2 1 + C ? / @ 2 1 A : < . . A @ 2 * + F , + @ A @ 2 + = � A : 2 < ? / @ 0 ¤ + 2 J - @ 2 9 ì DmyString

/ ?myString

DGetComponent()

F A 2 1 + C 2 + . A 2 . / A B A 2 1 A: < . . A @ 2 * + F , + @ A @ 2 + = � A : 2 + E 2 1 ALearningScript

: > 9 ? ? / @ F A F + . - G 2 1 A @ < ? A ¤ + 2 J - @ 2 9 ì 2 +9 : : A ? ?myString< ? / @ 0 2 1 A

this

this? / F , > -F A 9 @ ? 2 1 A : < . . A @ 2 / @ ? 2 9 @ : A + = � A : 2 + E 2 1 A

LearningScript: > 9 ? ? G 2 1 A : < . . A @ 2 * + F , + @ A @ 2 D

thisthis

this

Page 114: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

i j k l m n o p

[ 97 ]

Accessing another Component on the current GameObject* + F , + @ A @ 2 + @ 2 1 A ? 9 F A % 9 F A # = � A : 2 G 2 1 A D " A F A F = A . GLearningScript

/ ?Component variable methodor

Dot Syntax for the current GameObject

To access item in :another bold

Component3

4

the Main Camera G2 1 A @ 1 9 B ALearningScriptó ô ! @ ) @ / 2 - G : . A 9 2 A 9 @ + 2 1 A . 9 @ C @ 9 F A / 2

TalkToMeDõ ô # 9 ; A 9

public stringB 9 . / 9 = > A @ 9 F A C

hereItIsDö ô ' ? ? / 0 @ ? + F A 2 A ì 2 2 +

hereItIsD. ô # 9 ; A 9

publicF A 2 1 + C @ 9 F A C

MakeMeTalk()D/ ô & 9 B A

MakeMeTalk()+ < 2 , < 2 ? + F A 2 A ì 2 2 + 2 1 A DY ô

MakeMeTalk()2 + 2 1 A> / ; A 2 1 / ? I

Page 115: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

[ 98 ]

q ô # + C / E -LearningScript

2 + . A 2 . / A B A 2 1 ATalkToMe

* + F , + @ A @ 2 Dr ô # + C / E -LearningScript

2 + . A 2 . / A B A 2 1 A C 9 2 9 / @hereItIs.s ô # + C / E -

LearningScript2 + : 9 > > 2 1 A

MakeMeTalk()

ó t ô J 9 B A - + < . ? : . / , 2 ? Dó ó ô * > / : ; + @ / @ ) @ / 2 - DWhat just happened?2 1 A + < 2 , < 2 I

� 1 ALearningScript

* + F , + @ A @ 2 : + C A . A 2 . / A B A C 9 B 9 . / 9 = > A 9 @ C : 9 > > A C 9 F A 2 1 + C + @2 1 ATalkToMe

Page 116: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

i j k l m n o p

[ 99 ]

# @ LearningScript:

TalkToMe otherComponent;' B 9 . / 9 = > AotherComponent

/ ? C A : > 9 . A C 2 + ? 2 + . A 9 B 9 > < A + E 2 - , ATalkToMe'

TalkToMe

otherComponentK / @ A 6 5 IotherComponent = GetComponent<TalkToMe>();" A F A F = A . G 2 1 / ? / ? / @ 2 1 A

Start()� 1 A 0 A @ A . / : B A . ? / + @ + E 2 1 AGetComponent<T>()

F A 2 1 + C / ? : 9 > > A C 2 + . A 2 . / A B A 9. A E A . A @ : A 2 + 2 1 ATalkToMe

* + F , + @ A @ 2 + = � A : 2 D � 1 / ? / ? / 2 A F 7 + @ 2 1 A , . A B / + < ? 0 . 9 , 1 / :D� 1 A<T>

, 9 . 2 / ? 2 1 A 2 - , A + E * + F , + @ A @ 2 G 2 1 A : > 9 ? ? @ 9 F A G 2 1 9 2 2 1 A F A 2 1 + C� 1 / ? . A E A . A @ : A / ? ? 2 + . A C / @ 2 1 A B 9 . / 9 = > AotherComponent

TalkToMe� < ? 2 < ? A 2 1 A . A E A . A @ : A ? 2 + . A C / @otherComponent

/ @ ? 2 A 9 C + E 1 9 B / @ 0 2 + < ? AGetComponent<TalkToMe>()

Debug.Log("This is the TalkToMe Component: " + otherComponent);� 1 / ? > / @ A + E : + C A ? A @ C ? 2 1 A B 9 > < A ? 2 + . A C / @otherComponent

2 + 2 1 A ) @ / 2 -TalkToMe

* + F , + @ A @ 2 + = � A : 2K / @ A 4 5 IDebug.Log(otherComponent.hereItIs);¤ + 2 J - @ 2 9 ì / ? < ? A C 2 + > + : 9 2 A 9 @ C . A 2 . / A B A 2 1 A B 9 > < A ? 2 + . A C / @ 2 1 A B 9 . / 9 = > A

hereItIs+ E 2 1 ATalkToMe D� 1 A

hereItIs TalkToMe: > 9 ? ? D

hereItIs/ ?public

? + 2 1 9 2 / 2 : 9 @ = A 9 : : A ? ? A C E . + F + 2 1 A . ? : . / , 2 ? DotherComponent

GetComponent<TalkToMe>().hereItIs A ì 9 F , > A I

Page 117: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

[ 100 ]

� � � ý ÿ ÿ � ý � � ? ú � ý �

K / @ A 4 6 IotherComponent.MakeMeTalk();¤ + 2 J - @ 2 9 ì / ? < ? A C 2 + > + : 9 2 A 9 @ C : 9 > > 2 1 A

MakeMeTalk()F A 2 1 + C + E 2 1 A

TalkToMe* + F , + @ A @ 2 + = � A : 2TalkToMe D

Page 118: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

i j k l m n o p

[ 101 ]

# @TalkToMe

Ipublic void MakeMeTalk()� 1 A

MakeMeTalk()F A 2 1 + C / ?

public? + 2 1 9 2 / 2 : 9 @ = A : 9 > > A C E . + F + 2 1 A . ? : . / , 2 ?! 2 ? : + C A = > + : ; ? / F , > - ? A @ C ? 9 ? 2 . / @ 0 + E 2 A ì 2 2 + 2 1 A ) @ / 2 -

LearningScript: > 9 ? ?# @

LearningScriptIK / @ A 4 4 I

}* + C Aif ; A - 9 0 9 / @

TalkToMeT � � � � ü � ü � û � � � �ü � ÿ � ü ÿ � ý ü ú ? ý ü þ ú ü � � ý � ÿ T � � � � ü � ü � ÿ ú ü þ ý ü þ ú û � � ü � Accessing other GameObjects and their Components+ 2 1 A . % 9 F A + = � A : 2 ? G 9 @ C 2 1 A / . * + F , + @ A @ 2 ? < ? / @ 0 ¤ + 2 J - @ 2 9 ì D

Component variable methodor

Dot Syntax for another GameObject

To access the item in :bold

Component6

7GameObject

GameObject

GameObject5

Page 119: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

[ 102 ]

ó ô ! @ - + < .Capsule

9 @ CCube

Dõ ô ' C C 9 2 + 2 1 A ? + - + < : 9 @ A 9 ? / > - ? A A 2 1 A % 9 F A # = � A : 2 ? Dö ô 9 ? 9 @ A ì 9 F , > A I

. ô/ ô

Page 120: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

i j k l m n o p

[ 103 ]

Y ôSpinner

? : . / , 2 2 + 2 1 A 9 @ C 2 1 A % 9 F A # = � A : 2 ? Dq ô # + C / E -LeaningScript

r ô J 9 B A 2 1 As ô ! @ ) @ / 2 - G : > / : ; + @ D

Page 121: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

[ 104 ]

What just happened? I

? : . / , 2 @ 9 F A CSpinner% 9 F A # = � A : 2 ? D � 1 A @ - + < : > / : ; + @

Spinner* + F , + @ A @ 2 + = � A : 2 ? 9 . ASpinner

: > 9 ? ? / ? � < ? 2� + 9 : : A ? ? A 9 : 1Spinner

* + F , + @ A @ 2 E . + F 2 1 ALearningScript

* + F , + @ A @ 2 G - + < @ A A CSpinner> ü û � ú � � ý � � � � � � ú � ú ? � � ú T � � � � ü � ü � � � � � � � ÿ � û ý ü � � � ^ ü � �ú � � � � ý ÿ ú � ú ÿ � # @

LearningScriptI

GameObject capsuleGO;' B 9 . / 9 = > A + E 2 - , AGameObject

/ ? C A : > 9 . A C / @ 2 1 ASpinner cubeComp;' B 9 . / 9 = > A + E 2 - , A

Spinner/ ? C A : > 9 . A C

Spinner* + F , + @ A @ 2 + = � A : 2 : . A 9 2 A C E . + F2 1 A

Spinner: > 9 ? ?

Page 122: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

i j k l m n o p

[ 105 ]

void Start()� 1 AStart()" A F A F = A . G 2 1 / ? F A 2 1 + C / ? : 9 > > A C + @ > - + @ : AK / @ A 6 6 I

capsuleGO = GameObject.Find("Capsule");� 1 AFind()

F A 2 1 + C + E 2 1 AGameObject

: > 9 ? ? > + : 9 2 A ? 9 % 9 F A # = � A : 2 / @ + < .� 1 A . A E A . A @ : A 2 + 2 1 A % 9 F A # = � A : 2 / ? 9 ? ? / 0 @ A C 2 + 2 1 A B 9 . / 9 = > AcapsuleGO� 1 / ? / ? / 2 A F L / @ 2 1 A , . A B / + < ? 0 . 9 , 1 / : 9 @ C 9 > ? + + @ 2 1 A , . A B / + < ? : + C A ? : . A A @ ? 1 + 2K / @ A 6 4 I

Debug.Log(capsuleGO); % 9 F A # = � A : 2 / ? / @ E 9 : 2 . A E A . A @ : A C/ @ 2 1 A B 9 . / 9 = > AcapsuleGOK / @ A 6 7 I

cubeComp = GameObject.Find("Cube").GetComponent<Spinner>();� 1 / ? . A 2 . / A B A C . A E A . A @ : A 2 + 2 1 ASpinner

* + F , + @ A @ 2 + = � A : 2 / ? + @ 2 1 A% 9 F A # = � A : 2� 1 / ? / ?Debug.Log(cubeComp);

Spinner* + F , + @ A @ 2 / ? , 9 . 2 + E 2 1 A% 9 F A # = � A : 2 G 9 @ C / ? / @ E 9 : 2 . A E A . A @ : A C / @ 2 1 A B 9 . / 9 = > AcubeComp

if(Input.GetKey(KeyCode.LeftArrow)� 1 / ?if! E , . A ? ? A C G K / @ A 4 6 + E 2 1 A : + C A = > + : ; / ? A ì A : < 2 A CK / @ A 4 6 I

capsuleGO.GetComponent<Spinner>().SpinLeft();9 @ + 2 1 A . % 9 F A # = � A : 2 D� 1 ACapsuleGO

% 9 F A # = � A : 2� 1 ASpinner

* + F , + @ A @ 2 + = � A : 2 / ? > + : 9 2 A C + @ 2 1 A % 9 F A # = � A : 2� 1 ASpinLeft()

F A 2 1 + C / ? : 9 > > A C / @ 2 1 ASpinner

* + F , + @ A @ 2 + E 2 1 A% 9 F A # = � A : 2Spinner

* + F , + @ A @ 2 + = � A : 2

Page 123: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

[ 106 ]

public void SpinLeft()� 1 / ? / ? 2 1 ASpinLeft()

F A 2 1 + C : 9 > > A C E . + F 2 1 ALearningScript

+ = � A : 2transform.Rotate(0, 0, 60 * Time.deltaTime);� 1 A

Rotate()F A 2 1 + C + @ 2 1 A

Transform: 9 < ? A ?

transform/ ? < ? A C / @ 2 1 A ¤ + 2 J - @ 2 9 ì? 2 9 2 A F A @ 2 / @ ? 2 A 9 C + E 2 1 A

GetComponent<Transform>()F A 2 1 + C) @ / 2 - 1 9 ? ? A B A . 9 > = < / > 2 ( / @ * + F , + @ A @ 2 ? G ? < : 1 9 ? 2 1 A

Transform* + F , + @ A @ 2 : > 9 ? ?H / @ C 2 1 A

GameObject: > 9 ? ? / @ 2 1 AB 9 . / 9 = > A ? / ? @ 9 F A C

transform! @ ? 2 A 9 C + E 1 9 B / @ 0 2 + < ? A 2 1 AGetComponent()

F A 2 1 + C + @ 9 % 9 F A # = � A : 2 G) @ / 2 - 1 9 ? , . + B / C A C 9 : + @ B A @ / A @ 2 B 9 . / 9 = > A 9 > . A 9 C - 9 ? ? / 0 @ A C 2 1 A B 9 > < A + E 2 1 ATransform

* + F , + @ A @ 2transform

B 9 . / 9 = > A C A ? : . / = A C / @ 2 1 AI

� 1 ARotate()

LearningScript+ = � A : 2 D

Page 124: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

i j k l m n o p

[ 107 ]

On LearningScript:

if(Input.GetKey(KeyCode.RightArrow)� 1 / ?if

capsuleGO.GetComponent<Spinner>().SpinRight();� 1 / ? / ? 9 > F + ? 2 9 @ A ì 9 : 2 . A , A 9 2 + E > / @ A 4 6 G A ì : A , 2 2 1 ASpinRight()

F A 2 1 + C/ ? = A / @ 0 : 9 > > A Cif(Input.GetKey(KeyCode.UpArrow)� 1 / ?

if! E , . A ? ? A C G > / @ A 7 6 + E 2 1 A : + C A = > + : ; / ? A ì A : < 2 A CK / @ A 7 6 IcubeComp.SpinLeft();" A E A . = 9 : ; 2 + > / @ A 6 7 D � 1 A

cubeCompB 9 . / 9 = > A 9 > . A 9 C - ? 2 + . A ? 2 1 A . A E A . A @ : A 2 + 2 1 A% 9 F A # = � A : 2 9 @ C 2 1 A

Spinner* + F , + @ A @ 2 + = � A : 2 G 2 1 A . A E + . A O < ? 2 2 1 A B 9 . / 9 = > A

cubeComp/ ? @ A A C A C / @ 2 1 A ¤ + 2 J - @ 2 9 ì 2 + : 9 > > 2 1 A

SpinLeft()F A 2 1 + C + @ 2 1 A% 9 F A # = � A : 2

if(Input.GetKey(KeyCode.DownArrow)� 1 / ?if! @

LearningScript

SpinLeft()F A 2 1 + C + @ 2 1 A / .

Spinner

cubeComp Spinner* + F , + @ A @ 2 D � 1 A . A / ? @ +capsuleComp

Spinner* + F , + @ A @ 2 D

capsuleComp Spinner

capsuleCompD

Page 125: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

[ 108 ]

Accessing GameObjects using drag-and-drop versus

writing code

� û � ý ü þ � � ú � � � � ý ÿ > / @ A ? + E : + C A / @LearningScript

9 ? ? / 0 @ 2 1 A% 9 F A # = � A : 2 2 + 2 1 A B 9 . / 9 = > AcapsuleGO

< ? / @ 0 C . 9 0 ( 9 @ C ( C . + , Dó ô//

N G + . . A F + B A / 2 Dõ ôpublic

> / ; A 2 1 / ? Ipublic

GameObject capsuleGO;ö ô. ô ! @ ) @ / 2 - G ? A > A : 2 2 1 A % 9 F A # = � A : 2 D/ ô ¤ . 9 0 2 1 A 2 + 2 1 A � � � � � � � � � D � 1 AY ô * > / : ; + @ D

Page 126: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À

i j k l m n o p

[ 109 ]

What just happened?� 1 AcapsuleGO

B 9 . / 9 = > A D � A: 1 9 @ 0 ALearningScript

Summary! 1 + , A - + < 1 9 B A C / ? : + B A . A C 2 1 9 2 ¤ + 2 J - @ 2 9 ì / ? 9 : 2 < 9 > > - 9 ? / F , > A , . + : A ? ? E + . 9 : : A ? ? / @ 0 + 2 1 A .; A , 2 / @ + = � A : 2 ? G 9 @ C F A 2 1 + C ? 9 . A : 9 > > A C + @ 9 @ + = � A : 2 2 + 0 A 2 2 1 / @ 0 ? C + @ A D ¤ + 2 J - @ 2 9 ì / ? � < ? 2 9 @9 C C . A ? ? 2 + A 9 ? / > - 9 : : A ? ? C 9 2 9 9 @ C F A 2 1 + C ? + @ + = � A : 2 ? DLearningScript

D

Page 127: Learning C# by Developing Games... 6XSSRUW ÀOHV H%RRNV GLVFRXQW RIIHUV DQG PRUH z } µ u ] P Z Á v } À ] ] ( } µ } . o v } Á v o } o } D ] Ç } µ l v } Á Z W l } + } } l À