Learning C# by Developing Games
with Unity 3D Beginner's Guide
¡ ¢ £ ¤ ¥ ¦ ¡ § ¨ ¤ © ¢ ¡ ¤ ¥ ¢ § ¥ £ ¡ ¢ ¥ ¡ £ ¥ § £ ¨ £
¢ ¡ ¡ ¥
! " # ! $ % & ' # ( # ) # ' ! 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
' $
ŽƌƚƌĂŶƐŵŝƩĞĚŝŶĂŶLJĨŽƌŵŽƌďLJĂŶLJŵĞĂŶƐ͕ǁŝƚŚŽƵƚƚŚĞƉƌŝŽƌǁƌŝƩĞŶƉĞƌŵŝƐƐŝŽŶŽĨƚŚĞ ƉƵďůŝƐŚĞƌ͕ĞdžĐĞƉƚŝŶƚŚĞĐĂƐĞŽĨďƌŝĞĨƋƵŽƚĂƟŽŶƐĞŵďĞĚĚĞĚŝŶĐƌŝƟĐĂůĂƌƟĐůĞƐŽƌƌĞǀŝĞǁƐ͘
ǀĞƌLJĞīŽƌƚŚĂƐďĞĞŶŵĂĚĞŝŶƚŚĞƉƌĞƉĂƌĂƟŽŶŽĨƚŚŝƐŬƚŽĞŶƐƵƌĞƚŚĞĂĐĐƵƌĂĐLJŽĨƚŚĞ ŝŶĨŽƌŵĂƟŽŶƉƌĞƐĞŶƚĞĚ͘,ŽǁĞǀĞƌ͕ƚŚĞŝŶĨŽƌŵĂƟŽŶĐŽŶƚĂŝŶĞĚŝŶƚŚŝƐŬŝƐƐŽůĚǁŝƚŚŽƵƚ ǁĂƌƌĂŶƚLJ͕ĞŝƚŚĞƌĞdžƉƌĞƐƐŽƌŝŵƉůŝĞĚ͘EĞŝƚŚĞƌƚŚĞĂƵƚŚŽƌ͕ŶŽƌWĂĐŬƚWƵďůŝƐŚŝŶŐ͕ĂŶĚŝƚƐĚĞĂůĞƌƐ
ĂŶĚĚŝƐƚƌŝďƵƚŽƌƐǁŝůůďĞŚĞůĚůŝĂďůĞĨŽƌĂŶLJĚĂŵĂŐĞƐĐĂƵƐĞĚŽƌĂůůĞŐĞĚƚŽďĞĐĂƵƐĞĚĚŝƌĞĐƚůLJŽƌ
/ @ C / . A : 2 > - = - 2 1 /? = + + ; D
WĂĐŬƚWƵďůŝƐŚŝŶŐŚĂƐĞŶĚĞĂǀŽƌĞĚƚŽƉƌŽǀŝĚĞƚƌĂĚĞŵĂƌŬŝŶĨŽƌŵĂƟŽŶĂďŽƵƚĂůůŽĨƚŚĞ ĐŽŵƉĂŶŝĞƐĂŶĚƉƌŽĚƵĐƚƐŵĞŶƟŽŶĞĚŝŶƚŚŝƐŬďLJƚŚĞĂƉƉƌŽƉƌŝĂƚĞƵƐĞŽĨĐĂƉŝƚĂůƐ͘,ŽǁĞǀĞƌ͕
WĂĐŬƚWƵďůŝƐŚŝŶŐĐĂŶŶŽƚŐƵĂƌĂŶƚĞĞƚŚĞĂĐĐƵƌĂĐLJŽĨƚŚŝƐŝŶĨŽƌŵĂƟŽŶ͘
/ . ? 2 , < = > /? 1 A C I J A , 2 A F = A . 4 5 6 7 H
WƌŽĚƵĐƟŽŶZĞĨĞƌĞŶĐĞ͗ϭϭϵϬϵϭϯ
8 < = > /? 1 A C = - 8 9 : ; 2 8 < = > /? 1 / @ 0 K 2 C D
K /B A . - 8 > 9 : A
7 L K /B A . - J 2 . A A 2
/ . F / @ 0 1 9 F 7 4 8 G D D
) M
/^EϵϳϴͲϭͲϴϰϵϲϵͲϲϱϴͲϲ
www.packtpub.com N ŽǀĞƌ/ŵĂŐĞďLJƌƟĞEŐ; [email protected]
Credits
P Q R S T
O WƌŽũĞĐƚŽŽƌĚŝŶĂƚŽƌ
z u v o d { o p p
V j [ \ j U V W W X Y Z W [ Z \
T b
^ _ ` ^ a ^
] WƌŽŽĨƌĞĂĚĞƌ
z i o d c
V V j W V V \
c d e d f c d
W W g
<ƌŝƐƟĂŶ,ĞĚĞŚŽůŵ
/ŶĚĞdžĞƌƐ
v o d d p
m V Y W
ĐƋƵŝƐŝƟŽŶĚŝƚŽƌ
h d i h d r | p
V j Z \ V j U V y Z \
} T ~ R b
>ĞĂĚdĞĐŚŶŝĐĂůĚŝƚŽƌ `
d d d i
k X \ l X V j d v o e f
m Z \ k W
dĞĐŚŶŝĐĂůĚŝƚŽƌƐ WƌŽĚƵĐƟŽŶŽŽƌĚŝŶĂƚŽƌ
e n o p d q o d d r p
[ \ j
m ĚŝƟ'ĂũũĂƌ
r d d
k X \ s V W \ \ t V j
S T S T
_ ^
p u p v d c d v d
k Z \ W
ĚŝƟ'ĂũũĂƌ
p n d h o
w Z \ Z \
o p p d
x WZ j Z \ y [ w [ W
About the Author
ǁĂƐďŽƌŶĂŶĚƌĂŝƐĞĚŝŶĂůŝĨŽƌŶŝĂ͘ƵƌŝŶŐƚŚĞsŝĞƚŶĂŵĞƌĂ͕ŚĞƐĞƌǀĞĚƐŝdž
ĂŶĚŚĂůĨLJĞĂƌƐŝŶƚŚĞh^ŝƌ&ŽƌĐĞ͘tŚŝůĞŝŶƚŚĞŵŝůŝƚĂƌLJ͕ŚĞǁĂƐƚƌĂŝŶĞĚŝŶĞůĞĐƚƌŽŶŝĐƐĨŽƌ
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 G
( )
ĂŶĚůĂƚĞƌǁŽƌŬŝŶŐĨŽƌ:ŽƐůLJŶĞĨĞŶƐĞ^LJƐƚĞŵƐŝŶsĞƌŵŽŶƚ͕ĚĞƐŝŐŶŝŶŐĂŶĚĚĞǀĞůŽƉŝŶŐƚĞƐƚ
A < / , 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 = < 2
ŶĞǀĞƌƋƵŝƚĞĚĞůǀĞĚĚĞĞƉŝŶƚŽƚŚĞƉƌŽŐƌĂŵŵŝŶŐƐŝĚĞ͘/ƚǁĂƐŶΖƚƵŶƟůϮϬϬϰƚŚĂƚƉƌŽŐƌĂŵŵŝŶŐ ƉĞĂŬĞĚŚŝƐŝŶƚĞƌĞƐƚ͘,ĞďĞŐĂŶǁƌŝƟŶŐĂƌƟĐůĞƐĨŽƌK^ͬϮDĂŐĂnjŝŶĞƚŽƚĞĂĐŚннƉƌŽŐƌĂŵŵŝŶŐ͘
hŶĨŽƌƚƵŶĂƚĞůLJ͕ĚĂŵĂŐŝŶŐŚŝƐůĞŌŚĂŶĚŝŶĂƐŶŽǁďůŽǁĞƌĂĐĐŝĚĞŶƚŝŶϮϬϬϱĞŶĚĞĚŚŝƐǁƌŝƟŶŐĨŽƌ
9 : + < , > A - A 9 . ? D
/DĂďĂŶĚŽŶĞĚK^ͬϮ͕ƐŽdĞƌƌLJďŽƵŐŚƚŚŝƐĮƌƐƚƉƉůĞĐŽŵƉƵƚĞƌŝŶĞĂƌůLJϮϬϬϲ͘,ĞƚƌŝĞĚĂ ĨĞǁƟŵĞƐƚŽůĞĂƌŶKďũĞĐƟǀĞͲ͕ďƵƚǁŽƌŬĂŶĚĨĂŵŝůLJĂůǁĂLJƐƐĞĞŵĞĚƚŽƐŝĚĞƚƌĂĐŬŚŝƐĞīŽƌƚƐ͘ /ƚǁĂƐŶΖƚƵŶƟůĂďŽƵƚϮϬϭϬǁŚĞŶŚĞĚŝƐĐŽǀĞƌĞĚhŶŝƚLJĂŶĚƚŚĞŶĞĞĚƚŽǁƌŝƚĞƐĐƌŝƉƚƐ͕ƚŚĂƚŚĞ
ĮŶĂůůLJŵĂĚĞƐŽŵĞƉƌŽŐƌĞƐƐŝŶƚŽƚŚĞƉƌŽŐƌĂŵŵŝŶŐǁŽƌůĚ͘,ĞďĞŐĂŶǁƌŝƟŶŐĂŶŽŶůŝŶĞ
ƚƵƚŽƌŝĂůĨŽƌhŶŝƚLJ^ĐƌŝƉƚƟƚůĞĚ ͘/ƚǁĂƐĂďĂƐŝĐƚƵƚŽƌŝĂůĨŽƌďĞŐŝŶŶĞƌƐ
F 9 C A 9 B 9 / > 9 = > A < ? 2 = A E + . A @ / 2 A 4 5 6 6 D )
^ŝŶĐĞƚŚĞŶ͕dĞƌƌLJŚĂƐďĞĞŶůĞĂƌŶŝŶŐηĨŽƌǁƌŝƟŶŐƐĐƌŝƉƚƐĨŽƌhŶŝƚLJ͘WĂĐŬƚWƵďůŝƐŚŝŶŐŶŽƟĐĞĚ
ĂŶĚĂƐŬĞĚŝĨŚĞǁŽƵůĚďĞŝŶƚĞƌĞƐƚĞĚŝŶǁƌŝƟŶŐĂŬĂďŽƵƚůĞĂƌŶŝŶŐ hŶŝƚLJ^ĐƌŝƉƚ͘,ĞĚĞĐůŝŶĞĚ͘,ĞĨĞůƚƚŚĂƚηǁĂƐĂďĞƩĞƌůĂŶŐƵĂŐĞ͕ĂŶĚŚŝƐŚĞĂƌƚũƵƐƚǁĂƐŶΖƚŝŶƚŽ
hŶŝƚLJ^ĐƌŝƉƚĂŶLJůŽŶŐĞƌ͘dǁŽǁĞĞŬƐůĂƚĞƌ͕WĂĐŬƚŽīĞƌĞĚŚŝŵƚŚĞŽƉƉŽƌƚƵŶŝƚLJƚŽǁƌŝƚĞĂŬ
9 = + < 2 > A 9 . @ / @ 0 * E + . @ / 2 - D A < F , A C + @ / 2 D
) &
/ǁĂŶƚƚŽƚŚĂŶŬŵLJĚĂƵŐŚƚĞƌŵŝůLJEŽƌƚŽŶ͕ƚŚĞĂƌƟƐƚŝŶƚŚĞĨĂŵŝůLJ͕ĨŽƌ ŚĞůƉŝŶŐŵĞǁŝƚŚƚŚĞŐƌĂƉŚŝĐΖƐĚĞƐŝŐŶ͘
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 /?
% )
ƵŶĚĞƌͲŐƌĂĚƵĂƚĞƐƚƵĚŝĞƐ͕ŚĞƐƚĂƌƚĞĚŚŝƐĐĂƌĞĞƌĂƐĂŶŝŶĚŝĞŐĂŵĞƉƌŽŐƌĂŵŵĞƌ͕ďƵƚĚŝĚŶΖƚ ŐĂŝŶƐƵĐĐĞƐƐďĞĐĂƵƐĞŽĨĂůĂĐŬŽĨŽƌƐĂLJ͕ŶŽĞdžƉĞƌŝĞŶĐĞ͘ŌĞƌƚŚŝƐ͕ŚĞůĞĂƌŶƚƚŚĂƚƉĂƐƐŝŽŶŝƐ ŶŽƚƚŚĞŽŶůLJƚŚŝŶŐĨŽƌŐĞƟŶŐƐƵĐĐĞƐƐ͖ĞdžƉĞƌŝĞŶĐĞŵĂƩĞƌƐĂůŽƚ͘dŚĞŶŚĞũŽŝŶĞĚ/ƐŝƐĞƐŝŐŶ ^ĞƌǀŝĐĞĂƐĂŐĂŵĞƉƌŽŐƌĂŵŵĞƌ͕ǁŚĞƌĞŚĞƉƵďůŝƐŚĞĚĂĨĞǁŝK^ƟƚůĞƐĂŶĚŽŶĞǁĞďͲďĂƐĞĚ ŐĂŵĞ͘,ĞǁŽƌŬĞĚƚŚĞƌĞĨŽƌĂLJĞĂƌĂŶĚĂŚĂůĨ͘dŚĞŶ͕ŚĞŵŽǀĞĚƚŽ:ƵŵƉ'ĂŵĞƐ͕WƵŶĞ͕ĂŶĚ ǁŽƌŬĞĚŽŶĂĨĞǁŐŽŽĚŐĂŵĞƟƚůĞƐƐƵĐŚĂƐZĞĂůƐƚĞĂůĂŶĚĂŶĐŝŶŐǁŝƚŚƚŚĞ^ƚĂƌƐ͘EŽǁ͕ŚĞ
ǁŽƌŬƐĨŽƌDƌDĂŶǀĞŶĚĞƌ^ŚƵŬƵůŝŶ>ĂŬƐŚLJĂŝŐŝƚĂůWǀƚůƚĚ͘ĂŶĚŚĂƐďĞĞŶƚŚĞƌĞƐŝŶĐĞƚŚĞ
, 9 ? 2 - A 9 . D
,ĞŚĂƐŶΖƚƌĞǀŝĞǁĞĚĂŬďĞĨŽƌĞ͕ďƵƚŽŶĞŽĨŚŝƐĂƌƟĐůĞƐǁĂƐƉƵďůŝƐŚĞĚŝŶ'ĂŵĞŽĚĞƌ DĂŐĂnjŝŶĞ͘dŚĞĂƌƟĐůĞǁĂƐŽŶhŶŝƚLJϯ͘zŽƵĐĂŶĚŽǁŶůŽĂĚƚŚĞĂƌƟĐůĞĨƌŽŵŚŝƐƉĞƌƐŽŶĂů ǁĞďƐŝƚĞ͕ http://gauravgarg.com/ D
/ǁŽƵůĚůŝŬĞƚŽƚŚĂŶŬƐŵLJƉĂƌĞŶƚƐǁŚŽƚĂƵŐŚƚŵĞƚŚĞǀĂůƵĞŽĨŚĂƌĚǁŽƌŬ ĂŶĚĂŶĞĚƵĐĂƟŽŶ͘
/ŶĞĞĚƚŽƚŚĂŶŬƐŵLJĨƌŝĞŶĚƐ͕ƉĂƌƟĐƵůĂƌůLJDĂŶũŝƚŚĂŶĚsŝďŚĂƐŚ͕ǁŚŽĂůǁĂLJƐ
ƚŽŽŬƚŚĞƟŵĞƚŽůŝƐƚĞŶ͕ĞǀĞŶǁŚĞŶ/ǁĂƐũƵƐƚĐŽŵƉůĂŝŶŝŶŐ͘dŚĞLJĂůǁĂLJƐĂƌĞ
F - = A ? 2 ? < , , + . 2 A . ? 9 @ C 9 C B /? + . ? D
&ŝŶĂůůLJ͕/ǁŽƵůĚůŝŬĞƚŽƚŚĂŶŬ,ĂƌƐŚŝƚǁŚŽŐŝǀĞƐŵĞƚŚŝƐŽƉƉŽƌƚƵŶŝƚLJ͘ <ƌŝƐƟĂŶ,ĞĚĞŚŽůŵ ƐƚƵĚŝĞĚŽŵƉƵƚĞƌ^ĐŝĞŶĐĞĂƚĂƌŚƵƐhŶŝǀĞƌƐŝƚLJĂŶĚŶŽǁǁŽƌŬƐĂƐĂ ŐĂŵĞƉƌŽŐƌĂŵŵĞƌĂƚ^ĞƌŝŽƵƐ'ĂŵĞƐ/ŶƚĞƌĂĐƟǀĞŝŶŽƉĞŶŚĂŐĞŶ͕ĞŶŵĂƌŬ͘^ŝŶĐĞ<ƌŝƐƟĂŶ ũŽŝŶĞĚƚŚĞŐĂŵĞŝŶĚƵƐƚƌLJďĂĐŬŝŶϮϬϬϵ͕ŚĞŚĂƐǁŽƌŬĞĚŽŶĂĐŽƵƉůĞŽĨƌĞůĞĂƐĞĚĐĂƐƵĂůŐĂŵĞƐ͘ /ŶĂĚĚŝƟŽŶƚŽƚŚŝƐ͕ŚĞŝƐĂůƐŽƚŚĞĐŚĂŝƌŵĂŶŽĨĂŶĂƐƐŽĐŝĂƟŽŶĐĂůůĞĚzŽƵŶŐ'ĂŵĞĞǀĞůŽƉĞƌƐ͕ ǁŚŝĐŚĂŝŵƐƚŽƐƉƌĞĂĚŝŶĨŽƌŵĂƟŽŶĂďŽƵƚŐĂŵĞĚĞǀĞůŽƉŵĞŶƚĂŵŽŶŐĐŚŝůĚƌĞŶĂŶĚƚĞĞŶĂŐĞƌƐ͘ /ŶƚŚĞĨƵƚƵƌĞ͕<ƌŝƐƟĂŶǁŝůůƵƐĞŚŝƐΗĐŽŵƉƵƚĞƌŵŝŶĚΗƚŽĚĞǀĞůŽƉĂƌƟĮĐŝĂůŝŶƚĞůůŝŐĞŶĐĞĂŶĚ ĚLJŶĂŵŝĐĚŝĸĐƵůƚLJĂĚũƵƐƚŵĞŶƚƐLJƐƚĞŵƐĨŽƌĐŽŵƉƵƚĞƌŐĂŵĞƐ͘
tŚĞŶ<ƌŝƐƟĂŶŝƐŶΖƚĚĞǀĞůŽƉŝŶŐŐĂŵĞƐ͕ƚĞĂĐŚŝŶŐŽƚŚĞƌƐƚŽĚĞǀĞůŽƉŐĂŵĞƐ͕ŽƌƉůĂLJŝŶŐŐĂŵĞƐ
1 / F ? A > E G 1 A 2 1 / @ ; ? 9 = + < 2 2 1 A F 9 > + 2 ¥ www.PacktPub.com
6XSSRUWÀOHVH%RRNVGLVFRXQWRIIHUVDQGPRUH
zŽƵŵŝŐŚƚǁĂŶƚƚŽǀŝƐŝƚ www.PacktPub.comĨŽƌƐƵƉƉŽƌƚĮůĞƐĂŶĚĚŽǁŶůŽĂĚƐƌĞůĂƚĞĚƚŽ
- + < . = + + ; D
ŝĚLJŽƵŬŶŽǁƚŚĂƚWĂĐŬƚŽīĞƌƐĞŽŽŬǀĞƌƐŝŽŶƐŽĨĞǀĞƌLJŬƉƵďůŝƐŚĞĚ͕ǁŝƚŚW&ĂŶĚĞWƵď
@ C 9 ? 9 , . / @ 2 ĮůĞƐĂǀĂŝůĂďůĞ͍zŽƵĐĂŶƵƉŐƌĂĚĞƚŽƚŚĞĞŽŽŬǀĞƌƐŝŽŶĂƚ www.PacktPub.com 9
ŬĐƵƐƚŽŵĞƌ͕LJŽƵĂƌĞĞŶƟƚůĞĚƚŽĂĚŝƐĐŽƵŶƚŽŶƚŚĞĞŽŽŬĐŽƉLJ͘'ĞƚŝŶƚŽƵĐŚǁŝƚŚƵƐĂƚ
+ . F + . A C A 2 9 / > ? D
[email protected] E 2 ' www.PacktPub.com͕LJŽƵĐĂŶĂůƐŽƌĞĂĚĂĐŽůůĞĐƟŽŶŽĨĨƌĞĞƚĞĐŚŶŝĐĂůĂƌƟĐůĞƐ͕ƐŝŐŶƵƉ
ĨŽƌĂƌĂŶŐĞŽĨĨƌĞĞŶĞǁƐůĞƩĞƌƐĂŶĚƌĞĐĞŝǀĞĞdžĐůƵƐŝǀĞĚŝƐĐŽƵŶƚƐĂŶĚŽīĞƌƐŽŶWĂĐŬƚŬƐ
9 @ C A + + ; ? D
TM
http://PacktLib.PacktPub.com ŽLJŽƵŶĞĞĚŝŶƐƚĂŶƚƐŽůƵƟŽŶƐƚŽLJŽƵƌ/dƋƵĞƐƟŽŶƐ͍WĂĐŬƚ>ŝďŝƐWĂĐŬƚΖƐŽŶůŝŶĞĚŝŐŝƚĂůŬ ůŝďƌĂƌLJ͘,ĞƌĞ͕LJŽƵĐĂŶĂĐĐĞƐƐ͕ƌĞĂĚĂŶĚƐĞĂƌĐŚĂĐƌŽƐƐWĂĐŬƚΖƐĞŶƟƌĞůŝďƌĂƌLJŽĨŬƐ͘
Why Subscribe?
< > > - ? A 9 . : 1 9 = > A 9 : . + ? ? A B A . - = + + ; , < = > /? 1 A C = - 8 9 : ; 2 H
* + , - 9 @ C , 9 ? 2 A G , . / @ 2 9 @ C = + + ; F 9 . ; : + @ 2 A @ 2
KŶĚĞŵĂŶĚĂŶĚĂĐĐĞƐƐŝďůĞǀŝĂǁĞďďƌŽǁƐĞƌ
)UHH$FFHVVIRU3DFNWDFFRXQWKROGHUV
- + < : 9 @ < ? A 2 1 /? 2 + 9 : : A ? ? /ĨLJŽƵŚĂǀĞĂŶĂĐĐŽƵŶƚǁŝƚŚWĂĐŬƚĂƚwww.PacktPub.comG
WĂĐŬƚ>ŝďƚŽĚĂLJĂŶĚǀŝĞǁŶŝŶĞĞŶƟƌĞůLJĨƌĞĞŬƐ͘^ŝŵƉůLJƵƐĞLJŽƵƌůŽŐŝŶĐƌĞĚĞŶƟĂůƐĨŽƌ
/ F F A C / 9 2 A 9 : : A ? ? D
7DEOHRI&RQWHQWV
¨
¦ § ©
ŚĂƉƚĞƌϭ͗ŝƐĐŽǀĞƌŝŶŐzŽƵƌ,ŝĚĚĞŶ^ĐƌŝƉƟŶŐ^ŬŝůůƐ ϳ WƌĞƌĞƋƵŝƐŝƚĞŬŶŽǁůĞĚŐĞĨŽƌƵƐŝŶŐƚŚŝƐŬ ϴ ĞĂůŝŶŐǁŝƚŚƐĐƌŝƉƚƉŚŽďŝĂ ϴ dĞĂĐŚŝŶŐďĞŚĂǀŝŽƌƐƚŽ'ĂŵĞKďũĞĐƚƐ ϵ ŚŽŽƐŝŶŐƚŽƵƐĞηŝŶƐƚĞĂĚŽĨhŶŝƚLJ^ĐƌŝƉƚ ϭϬ ZĞĂƐŽŶϭĨŽƌĐŚŽŽƐŝŶŐηʹǀĂƐƚĂŵŽƵŶƚŽĨĚŽĐƵŵĞŶƚĂƟŽŶŽŶƚŚĞ/ŶƚĞƌŶĞƚ ϭϬ ZĞĂƐŽŶϮĨŽƌĐŚŽŽƐŝŶŐηʹŇĞdžŝďŝůŝƚLJƚŽƵƐĞhŶŝƚLJƐĐƌŝƉƚƐĂŶĚƌĞŐƵůĂƌ ηĐŽĚĞĮůĞƐ ϭϬ ZĞĂƐŽŶϯĨŽƌĐŚŽŽƐŝŶŐηʹĐŽĚŝŶŐƌƵůĞƐĂƌĞƐƉĞĐŝĮĐ ϭϭ DĂŶĞƵǀĞƌŝŶŐĂƌŽƵŶĚhŶŝƚLJΖƐĚŽĐƵŵĞŶƚĂƟŽŶ ϭϭ dŝŵĞĨŽƌĂĐƟŽŶʹŽƉĞŶŝŶŐƚŚĞZĞĨĞƌĞŶĐĞDĂŶƵĂůĚŽĐƵŵĞŶƚĂƟŽŶ ĨŽƌƚŚĞƚƌĂŶƐĨŽƌŵŽŵƉŽŶĞŶƚ ϭϭ dŝŵĞĨŽƌĂĐƟŽŶʹŽƉĞŶŝŶŐƚŚĞƐĐƌŝƉƟŶŐƌĞĨĞƌĞŶĐĞĚŽĐƵŵĞŶƚĂƟŽŶ ĨŽƌƚŚĞƚƌĂŶƐĨŽƌŵĐŽŵƉŽŶĞŶƚ ϭϮ ƌĞǁĞƌĞĂůůLJƐƵƉƉŽƐĞĚƚŽŬŶŽǁĂůůƚŚĂƚƐƚƵī͍ ϭϯ tŚĂƚŝƐĂůůƚŚĂƚŝŶĨŽƌŵĂƟŽŶ͍ ϭϯ tŽƌŬŝŶŐǁŝƚŚηƐĐƌŝƉƚĮůĞƐ ϭϰ
dŝŵĞĨŽƌĂĐƟŽŶʹĐƌĞĂƚĞĂηƐĐƌŝƉƚĮůĞ ϭϰ
ª « ¬ ® ¯ ° ± ² « ³ ¬ ´ µ ¶ ® « ® · µ ¸ µ ¹ ® º ± ® ¯ µ µ ¯ ² ¬ ® » ¼
^LJŶĐŝŶŐηĮůĞƐďĞƚǁĞĞŶDŽŶŽĞǀĞůŽƉĂŶĚhŶŝƚLJ ϭϱ dŝŵĞĨŽƌĂĐƟŽŶʹŽƉĞŶŝŶŐ>ĞĂƌŶŝŶŐ^ĐƌŝƉƚŝŶDŽŶŽĞǀĞůŽƉ ϭϱ tĂƚĐŚŝŶŐĨŽƌĂƉŽƐƐŝďůĞΗŐŽƚĐŚĂΗǁŚĞŶĐƌĞĂƟŶŐƐĐƌŝƉƚĮůĞƐŝŶhŶŝƚLJ ϭϲ &ŝdžŝŶŐƐLJŶĐŝĨŝƚŝƐŶΖƚǁŽƌŬŝŶŐƉƌŽƉĞƌůLJ ϭϲ ^ƵŵŵĂƌLJ ϭϳ ŚĂƉƚĞƌϮ͗/ŶƚƌŽĚƵĐŝŶŐƚŚĞƵŝůĚŝŶŐůŽĐŬƐĨŽƌhŶŝƚLJ^ĐƌŝƉƚƐ ϭϵ hƐŝŶŐƚŚĞƚĞƌŵŵĞƚŚŽĚŝŶƐƚĞĂĚŽĨĨƵŶĐƟŽŶ ϮϬ hŶĚĞƌƐƚĂŶĚŝŶŐǁŚĂƚĂǀĂƌŝĂďůĞĚŽĞƐŝŶĂƐĐƌŝƉƚ ϮϬ
½ ¾ ¿ À Á Â Ã Ä Â Å ÆÁ Å Æ Ç
È É Ê ² « ³ É ¸ É ² É Ë ¹ µ Ì »
ǀĂƌŝĂďůĞŶĂŵĞŝƐũƵƐƚĂƐƵďƐƟƚƵƚĞĨŽƌĂǀĂůƵĞ Ϯϭ dŝŵĞĨŽƌĂĐƟŽŶʹĐƌĞĂƟŶŐĂǀĂƌŝĂďůĞĂŶĚƐĞĞŝŶŐŚŽǁŝƚǁŽƌŬƐ ϮϮ dŝŵĞĨŽƌĂĐƟŽŶʹĐŚĂŶŐŝŶŐƚŚĞŶƵŵďĞƌϵƚŽĂĚŝīĞƌĞŶƚŶƵŵďĞƌ Ϯϯ hƐŝŶŐĂŵĞƚŚŽĚŝŶĂƐĐƌŝƉƚ Ϯϰ tŚĂƚŝƐĂŵĞƚŚŽĚ͍ Ϯϰ dŝŵĞĨŽƌĂĐƟŽŶʹůĞĂƌŶŝŶŐŚŽǁĂŵĞƚŚŽĚǁŽƌŬƐ Ϯϰ tŚĂƚΖƐŝŶƚŚŝƐƐĐƌŝƉƚĮůĞ͍ Ϯϱ DĞƚŚŽĚŶĂŵĞƐĂƌĞƐƵďƐƟƚƵƚĞƐƚŽŽ Ϯϱ /ŶƚƌŽĚƵĐŝŶŐƚŚĞĐůĂƐƐ Ϯϳ LJƵƐŝŶŐĂůŝƩůĞhŶŝƚLJŵĂŐŝĐ͕ĂƐĐƌŝƉƚďĞĐŽŵĞƐĂŽŵƉŽŶĞŶƚ Ϯϴ ŵŽƌĞƚĞĐŚŶŝĐĂůůŽŽŬĂƚƚŚĞŵĂŐŝĐ Ϯϴ ǀĞŶŵŽƌĞhŶŝƚLJŵĂŐŝĐ Ϯϵ ŽŵƉŽŶĞŶƚƐĐŽŵŵƵŶŝĐĂƟŶŐƵƐŝŶŐƚŚĞŽƚ^LJŶƚĂdž Ϯϵ tŚĂƚΖƐǁŝƚŚƚŚĞĚŽƚƐ͍ ϯϬ ^ƵŵŵĂƌLJ ϯϬ ŚĂƉƚĞƌϯ͗'ĞƫŶŐŝŶƚŽƚŚĞĞƚĂŝůƐŽĨsĂƌŝĂďůĞƐ ϯϭ tƌŝƟŶŐηƐƚĂƚĞŵĞŶƚƐƉƌŽƉĞƌůLJ ϯϮ hŶĚĞƌƐƚĂŶĚŝŶŐŽŵƉŽŶĞŶƚƉƌŽƉĞƌƟĞƐŝŶhŶŝƚLJΖƐ/ŶƐƉĞĐƚŽƌ ϯϮ
sĂƌŝĂďůĞƐďĞĐŽŵĞŽŵƉŽŶĞŶƚƉƌŽƉĞƌƟĞƐ ϯϯ
Í « ² ¬ Î ± ´ É « ³ µ Ï Ï ± ² º ¬ É « ¯ ¸ É ² É Ë ¹ µ « É Ê µ Ï Ï ¹ ² ³ ´ ¬ ¹ Î Ð Ð
ŚĂŶŐŝŶŐĂƉƌŽƉĞƌƚLJΖƐǀĂůƵĞŝŶƚŚĞ/ŶƐƉĞĐƚŽƌƉĂŶĞů ϯϯ ŝƐƉůĂLJŝŶŐƉƵďůŝĐǀĂƌŝĂďůĞƐŝŶƚŚĞ/ŶƐƉĞĐƚŽƌƉĂŶĞů ϯϰ dŝŵĞĨŽƌĂĐƟŽŶʹŵĂŬŝŶŐĂǀĂƌŝĂďůĞƉƌŝǀĂƚĞ ϯϰ EĂŵŝŶŐLJŽƵƌǀĂƌŝĂďůĞƐƉƌŽƉĞƌůLJ ϯϱ ĞŐŝŶǀĂƌŝĂďůĞŶĂŵĞƐǁŝƚŚůŽǁĞƌĐĂƐĞ ϯϲ hƐŝŶŐŵƵůƟͲǁŽƌĚǀĂƌŝĂďůĞŶĂŵĞƐ ϯϲ ĞĐůĂƌŝŶŐĂǀĂƌŝĂďůĞĂŶĚŝƚƐƚLJƉĞ ϯϳ dŚĞŵŽƐƚĐŽŵŵŽŶďƵŝůƚͲŝŶǀĂƌŝĂďůĞƚLJƉĞƐ ϯϴ dŝŵĞĨŽƌĂĐƟŽŶʹĂƐƐŝŐŶŝŶŐǀĂůƵĞƐǁŚŝůĞĚĞĐůĂƌŝŶŐƚŚĞǀĂƌŝĂďůĞ ϯϴ tŚĞƌĞLJŽƵĚĞĐůĂƌĞĂǀĂƌŝĂďůĞŝƐŝŵƉŽƌƚĂŶƚ ϯϵ sĂƌŝĂďůĞƐĐŽƉĞʹĚĞƚĞƌŵŝŶŝŶŐǁŚĞƌĞĂǀĂƌŝĂďůĞĐĂŶďĞƵƐĞĚ ϰϬ ^ƵŵŵĂƌLJ ϰϮ ŚĂƉƚĞƌϰ͗'ĞƫŶŐŝŶƚŽƚŚĞĞƚĂŝůƐŽĨDĞƚŚŽĚƐ ϰϯ ŶĚŝŶŐĂŵĞƚŚŽĚĚĞĮŶŝƟŽŶƵƐŝŶŐĐƵƌůLJďƌĂĐĞƐ ϰϰ hƐŝŶŐŵĞƚŚŽĚƐŝŶĂƐĐƌŝƉƚ ϰϰ EĂŵŝŶŐŵĞƚŚŽĚƐƉƌŽƉĞƌůLJ ϰϰ ĞŐŝŶŵĞƚŚŽĚŶĂŵĞƐǁŝƚŚĂŶƵƉƉĞƌĐĂƐĞůĞƩĞƌ ϰϱ hƐŝŶŐŵƵůƟͲǁŽƌĚŶĂŵĞƐĨŽƌĂŵĞƚŚŽĚ ϰϱ WĂƌĞŶƚŚĞƐĞƐĂƌĞƉĂƌƚŽĨƚŚĞŵĞƚŚŽĚŶĂŵĞ ϰϱ
[ ii ]
½ ¾ ¿ À Á Â Ã Ä Â Å ÆÁ Å Æ Ç
ĞĮŶŝŶŐĂŵĞƚŚŽĚƉƌŽƉĞƌůLJ ϰϱ dŚĞŵŝŶŝŵƵŵƌĞƋƵŝƌĞŵĞŶƚƐĨŽƌĚĞĮŶŝŶŐĂŵĞƚŚŽĚ ϰϲ hŶĚĞƌƐƚĂŶĚŝŶŐƉĂƌĞŶƚŚĞƐĞƐʹǁŚLJĂƌĞƚŚĞLJƚŚĞƌĞ͍ ϰϳ dŝŵĞĨŽƌĂĐƟŽŶʹĂĚĚŝŶŐĐŽĚĞďĞƚǁĞĞŶƚŚĞƉĂƌĞŶƚŚĞƐĞƐ ϰϳ ^ƉĞĐŝĨLJŝŶŐĂŵĞƚŚŽĚΖƐƉĂƌĂŵĞƚĞƌƐ ϰϴ ,ŽǁŵĂŶLJƉĂƌĂŵĞƚĞƌƐĐĂŶĂŵĞƚŚŽĚŚĂǀĞ͍ ϰϵ ĂůůŝŶŐĂŵĞƚŚŽĚ ϰϵ hƐŝŶŐĂƌŐƵŵĞŶƚƐŝŶƚŚĞƉĂƌĞŶƚŚĞƐĞƐŽĨĂŵĞƚŚŽĚ ϰϵ ZĞƚƵƌŶŝŶŐĂǀĂůƵĞĨƌŽŵĂŵĞƚŚŽĚ ϱϬ dŝŵĞĨŽƌĂĐƟŽŶʹƌĞƚƵƌŶŝŶŐĂǀĂůƵĞĨƌŽŵĚĚdǁŽEƵŵďĞƌƐ;Ϳ ϱϭ ĂůůŝŶŐĂŵĞƚŚŽĚŝƐĂůŽŐŝĐĚĞƚŽƵƌ ϱϰ hƐŝŶŐhŶŝƚLJΖƐhƉĚĂƚĞĂŶĚ^ƚĂƌƚŵĞƚŚŽĚƐ ϱϰ
dŚĞ^ƚĂƌƚŵĞƚŚŽĚŝƐĐĂůůĞĚŽŶĞƟŵĞ ϱϱ
Ñ ´ µ Í º ¯ É ¬ µ Ê µ ¬ ´ ® ¯ ² Ï ± É ¹ ¹ µ ¯ ® ¸ µ É « ¯ ® ¸ µ É « ¯ ® ¸ µ Ò ¼ ¼
^ƵŵŵĂƌLJ ϱϲ ŚĂƉƚĞƌϱ͗DĂŬŝŶŐĞĐŝƐŝŽŶƐŝŶŽĚĞ ϱϳ dĞƐƟŶŐĐŽŶĚŝƟŽŶƐǁŝƚŚĂŶŝĨƐƚĂƚĞŵĞŶƚ ϱϴ dĞƐƟŶŐŝĨĐŽŶĚŝƟŽŶƐĂƌĞƚƌƵĞŽƌĨĂůƐĞ ϱϴ dŝŵĞĨŽƌĂĐƟŽŶʹĐƌĞĂƚĞĂĐŽƵƉůĞŽĨŝĨƐƚĂƚĞŵĞŶƚƐ ϱϴ hƐŝŶŐƚŚĞEKdŽƉĞƌĂƚŽƌƚŽĐŚĂŶŐĞƚŚĞĐŽŶĚŝƟŽŶ ϲϬ ŚĞĐŬŝŶŐŵĂŶLJĐŽŶĚŝƟŽŶƐŝŶĂŶŝĨƐƚĂƚĞŵĞŶƚ ϲϬ dŝŵĞĨŽƌĂĐƟŽŶʹĐƌĞĂƚĞŝĨƐƚĂƚĞŵĞŶƚƐǁŝƚŚŵŽƌĞƚŚĂŶŽŶĞĐŽŶĚŝƟŽŶƚŽĐŚĞĐŬ ϲϬ hƐŝŶŐĂŶŝĨͲĞůƐĞƐƚĂƚĞŵĞŶƚƚŽĞdžĞĐƵƚĞĂůƚĞƌŶĂƚĞĐŽĚĞ ϲϯ dŝŵĞĨŽƌĂĐƟŽŶʹĂĚĚΗĞůƐĞΗƚŽƚŚĞŝĨƐƚĂƚĞŵĞŶƚ ϲϯ DĂŬŝŶŐĚĞĐŝƐŝŽŶƐďĂƐĞĚŽŶƵƐĞƌŝŶƉƵƚ ϲϱ ^ƚŽƌŝŶŐĚĂƚĂŝŶĂŶĂƌƌĂLJ͕Ă>ŝƐƚ͕ŽƌĂŝĐƟŽŶĂƌLJ ϲϲ ^ƚŽƌŝŶŐŝƚĞŵƐŝŶĂŶĂƌƌĂLJ ϲϲ ^ƚŽƌŝŶŐŝƚĞŵƐŝŶĂ>ŝƐƚ ϲϴ dŝŵĞĨŽƌĂĐƟŽŶʹĐƌĞĂƚĞĂ>ŝƐƚŽĨƉŽŶLJŶĂŵĞƐ ϲϴ ^ƚŽƌŝŶŐŝƚĞŵƐŝŶĂŝĐƟŽŶĂƌLJ ϳϯ dŝŵĞĨŽƌĂĐƟŽŶʹĐƌĞĂƚĞĂĚŝĐƟŽŶĂƌLJŽĨƉŽŶLJŶĂŵĞƐĂŶĚŬĞLJƐ ϳϯ hƐŝŶŐĂŽůůĞĐƟŽŶ/ŶŝƟĂůŝnjĞƌƚŽĂĚĚŝƚĞŵƐƚŽĂ>ŝƐƚŽƌŝĐƟŽŶĂƌLJ ϳϱ dŝŵĞĨŽƌĂĐƟŽŶʹĂĚĚŝŶŐƉŽŶŝĞƐƵƐŝŶŐĂŽůůĞĐƟŽŶ/ŶŝƟĂůŝnjĞƌ ϳϱ >ŽŽƉŝŶŐƚŚŽƵŐŚůŝƐƚƐƚŽŵĂŬĞĚĞĐŝƐŝŽŶƐ ϳϳ hƐŝŶŐƚŚĞĨŽƌĞĂĐŚůŽŽƉ ϳϳ dŝŵĞĨŽƌĂĐƟŽŶʹƵƐŝŶŐĨŽƌĞĂĐŚůŽŽƉƐƚŽƌĞƚƌŝĞǀĞĚĂƚĂ ϳϳ hƐŝŶŐƚŚĞĨŽƌůŽŽƉ ϴϭ dŝŵĞĨŽƌĂĐƟŽŶʹƐĞůĞĐƟŶŐĂƉŽŶLJĨƌŽŵĂ>ŝƐƚƵƐŝŶŐĂĨŽƌůŽŽƉ ϴϭ hƐŝŶŐƚŚĞǁŚŝůĞůŽŽƉ ϴϰ dŝŵĞĨŽƌĂĐƟŽŶʹĮŶĚŝŶŐĚĂƚĂĂŶĚďƌĞĂŬŽƵƚŽĨƚŚĞǁŚŝůĞůŽŽƉ ϴϰ ^ƵŵŵĂƌLJ ϴϳ
[ iii ]
½ ¾ ¿ À Á Â Ã Ä Â Å ÆÁ Å Æ Ç
ŚĂƉƚĞƌϲ͗hƐŝŶŐŽƚ^LJŶƚĂdžĨŽƌKďũĞĐƚŽŵŵƵŶŝĐĂƟŽŶ ϴϵ hƐŝŶŐŽƚ^LJŶƚĂdžŝƐůŝŬĞĂĚĚƌĞƐƐŝŶŐĂůĞƩĞƌ ϵϬ ^ŝŵƉůŝĨLJŝŶŐƚŚĞĚŽƚƐŝŶŽƚ^LJŶƚĂdž ϵϬ hƐŝŶŐĂĐĐĞƐƐŵŽĚŝĮĞƌƐĨŽƌǀĂƌŝĂďůĞƐĂŶĚŵĞƚŚŽĚƐ ϵϭ tŽƌŬŝŶŐǁŝƚŚŽďũĞĐƚƐŝƐĂĐůĂƐƐĂĐƚ ϵϭ hƐŝŶŐŽƚ^LJŶƚĂdžŝŶĂƐĐƌŝƉƚ ϵϯ ĐĐĞƐƐŝŶŐĂŽŵƉŽŶĞŶƚΖƐŽǁŶǀĂƌŝĂďůĞƐĂŶĚŵĞƚŚŽĚƐ ϵϯ dŝŵĞĨŽƌĂĐƟŽŶʹĂĐĐĞƐƐŝŶŐĂǀĂƌŝĂďůĞŝŶƚŚĞĐƵƌƌĞŶƚŽŵƉŽŶĞŶƚ ϵϰ ĐĐĞƐƐŝŶŐĂŶŽƚŚĞƌŽŵƉŽŶĞŶƚŽŶƚŚĞĐƵƌƌĞŶƚ'ĂŵĞKďũĞĐƚ ϵϳ
dŝŵĞĨŽƌĂĐƟŽŶʹĐŽŵŵƵŶŝĐĂƟŶŐǁŝƚŚĂŶŽƚŚĞƌŽŵƉŽŶĞŶƚŽŶƚŚĞDĂŝŶĂŵĞƌĂ ϵϳ
Ó ± ± µ Ï Ï ² « ³ ® ¬ ´ µ Ô É Ê µ Õ Ë Ö µ ± ¬ Ï É « ¯ ¬ ´ µ ² × ® Ê º ® « µ « ¬ Ï » Ø »
dŝŵĞĨŽƌĂĐƟŽŶʹĐƌĞĂƟŶŐƚǁŽ'ĂŵĞKďũĞĐƚƐĂŶĚĂŶĞǁƐĐƌŝƉƚ ϭϬϮ ĐĐĞƐƐŝŶŐ'ĂŵĞKďũĞĐƚƐƵƐŝŶŐĚƌĂŐͲĂŶĚͲĚƌŽƉǀĞƌƐƵƐǁƌŝƟŶŐĐŽĚĞ ϭϬϴ dŝŵĞĨŽƌĂĐƟŽŶʹƚƌLJŝŶŐĚƌĂŐͲĂŶĚͲĚƌŽƉƚŽĂƐƐŝŐŶĂ'ĂŵĞKďũĞĐƚ ϭϬϴ ^ƵŵŵĂƌLJ ϭϬϵ ŚĂƉƚĞƌϳ͗ƌĞĂƟŶŐƚŚĞ'ĂŵĞƉůĂLJŝƐ:ƵƐƚĂWĂƌƚŽĨƚŚĞ'ĂŵĞ ϭϭϭ ƉƉůLJŝŶŐLJŽƵƌŶĞǁĐŽĚŝŶŐƐŬŝůůƐƚŽĂ^ƚĂƚĞDĂĐŚŝŶĞ ϭϭϮ hŶĚĞƌƐƚĂŶĚŝŶŐƚŚĞĐŽŶĐĞƉƚƐŽĨĂ^ƚĂƚĞDĂĐŚŝŶĞ ϭϭϮ ĞŶĞĮƚƐŽĨďLJƵƐŝŶŐĂ^ƚĂƚĞDĂĐŚŝŶĞ ϭϭϯ &ŽůůŽǁŝŶŐƚŚĞ^ƚĂƚĞDĂĐŚŝŶĞůŽŐŝĐŇŽǁ ϭϭϰ ĞůĞŐĂƟŶŐŐĂŵĞĐŽŶƚƌŽůƚŽĂ^ƚĂƚĞ ϭϭϰ ^ǁŝƚĐŚŝŶŐƚŽĂŶŽƚŚĞƌ^ƚĂƚĞǁŚĞŶĐĂůůĞĚƚŽĚŽƐŽ ϭϭϱ <ĞĞƉŝŶŐƚƌĂĐŬŽĨƚŚĞĂĐƟǀĞ^ƚĂƚĞ ϭϭϲ ƌĞĂƟŶŐŽŵƉŽŶĞŶƚƐŽďũĞĐƚƐĂŶĚηŽďũĞĐƚƐ ϭϭϳ hŶŝƚLJĐƌĞĂƚĞƐŽŵƉŽŶĞŶƚƐďĞŚŝŶĚƚŚĞƐĐĞŶĞƐ ϭϭϳ /ŶƐƚĂŶƟĂƚĞĂĐůĂƐƐƚŽĐƌĞĂƚĞĂŶŽďũĞĐƚ ϭϭϳ dŝŵĞĨŽƌĂĐƟŽŶʹĐƌĞĂƟŶŐĂƐĐƌŝƉƚĂŶĚĂĐůĂƐƐ ϭϭϴ dŝŵĞĨŽƌĂĐƟŽŶʹŝŶƐƚĂŶƟĂƟŶŐƚŚĞĞŐŝŶ^ƚĂƚĞĐůĂƐƐ ϭϮϭ ^ƉĞĐŝĨLJŝŶŐĂĮůĞΖƐůŽĐĂƟŽŶǁŝƚŚĂŶĂŵĞƐƉĂĐĞĚĞĐůĂƌĂƟŽŶ ϭϮϮ >ŽĐĂƟŶŐĐŽĚĞĮůĞƐǁŝƚŚĂƵƐŝŶŐƐƚĂƚĞŵĞŶƚ ϭϮϯ /ŶƚƌŽĚƵĐŝŶŐƚŚĞηŝŶƚĞƌĨĂĐĞ ϭϮϯ dŚĞ^ƚĂƚĞDĂĐŚŝŶĞĂŶĚƚŚĞŝŶƚĞƌĨĂĐĞŐƵĂƌĂŶƚĞĞ ϭϮϰ dŝŵĞĨŽƌĂĐƟŽŶʹŝŵƉůĞŵĞŶƟŶŐĂŶŝŶƚĞƌĨĂĐĞ ϭϮϰ ^ƵŵŵĂƌLJ ϭϮϴ ŚĂƉƚĞƌϴ͗ĞǀĞůŽƉŝŶŐƚŚĞ^ƚĂƚĞDĂĐŚŝŶĞ ϭϮϵ ƌĞĂƟŶŐĨŽƵƌ^ƚĂƚĞĐůĂƐƐĞƐ ϭϯϬ dŝŵĞĨŽƌĂĐƟŽŶʹŵŽĚLJŝĮŶŐĞŐŝŶ^ƚĂƚĞĂŶĚĂĚĚƚŚƌĞĞŵŽƌĞ^ƚĂƚĞƐ ϭϯϬ ^ĞƫŶŐƵƉƚŚĞ^ƚĂƚĞDĂŶĂŐĞƌĐŽŶƚƌŽůůĞƌ ϭϯϮ ^ƚƵĚLJŝŶŐĂŶĞdžĂŵƉůĞŽĨŝŶŚĞƌŝƚĂŶĐĞ ϭϯϰ ŶƚĞƌƚŚĞ/^ƚĂƚĞĂƐĞŝŶƚĞƌĨĂĐĞĂŐĂŝŶ ϭϯϲ
[ iv ]
½ ¾ ¿ À Á Â Ã Ä Â Å ÆÁ Å Æ Ç
dŝŵĞĨŽƌĂĐƟŽŶʹŵŽĚŝĨLJ^ƚĂƚĞDĂŶĂŐĞƌ ϭϯϳ ĚĚŝŶŐĂŶŽƚŚĞƌ^ƚĂƚĞ ϭϰϮ dŝŵĞĨŽƌĂĐƟŽŶʹŵŽĚŝĨLJŝŶŐWůĂLJ^ƚĂƚĞƚŽĂĚĚĂŶŽƚŚĞƌ^ƚĂƚĞ ϭϰϮ ĚĚŝŶŐKŶ'h/ƚŽƚŚĞ^ƚĂƚĞDĂŶĂŐĞƌĐůĂƐƐ ϭϰϯ dŝŵĞĨŽƌĂĐƟŽŶʹĂĚĚŝŶŐKŶ'h/;ͿƚŽ^ƚĂƚĞDĂŶĂŐĞƌ ϭϰϯ ŚĂŶŐŝŶŐƚŚĞĂĐƟǀĞ^ƚĂƚĞĂŶĚĐŽŶƚƌŽůůŝŶŐƚŚĞ^ĐĞŶĞ ϭϰϰ dŝŵĞĨŽƌĂĐƟŽŶʹĂĚĚŝŶŐ'ĂŵĞKďũĞĐƚƐĂŶĚĂďƵƩŽŶƚŽƚŚĞ^ĐĞŶĞ ϭϰϰ WĂƵƐŝŶŐƚŚĞŐĂŵĞ^ĐĞŶĞ ϭϰϱ dŝŵĞĨŽƌĂĐƟŽŶʹĂĚĚŝŶŐĐŽĚĞƚŽƉĂƵƐĞƚŚĞŐĂŵĞ^ĐĞŶĞ ϭϰϲ dŝŵĞĨŽƌĂĐƟŽŶʹĐƌĞĂƟŶŐĂƟŵĞƌŝŶĞŐŝŶ^ƚĂƚĞ ϭϰϳ ŚĂŶŐŝŶŐ^ĐĞŶĞƐ ϭϱϭ dŝŵĞĨŽƌĂĐƟŽŶʹƐĞƫŶŐƵƉĂŶŽƚŚĞƌ^ĐĞŶĞ ϭϱϮ ŚĂŶŐŝŶŐ^ĐĞŶĞƐĚĞƐƚƌŽLJƐƚŚĞĞdžŝƐƟŶŐ'ĂŵĞKďũĞĐƚƐ ϭϱϯ <ĞĞƉŝŶŐ'ĂŵĞDĂŶĂŐĞƌďĞƚǁĞĞŶƐĐĞŶĞƐ ϭϱϯ
dŝŵĞĨŽƌĂĐƟŽŶʹĂĚĚŝŶŐƚŚĞǁĂŬĞŵĞƚŚŽĚƚŽ^ƚĂƚĞDĂŶĂŐĞƌ ϭϱϰ
× ´ É « ³ ² « ³ ¬ ´ µ Ù ± µ « µ Ï » ¼ ¼
dŝŵĞĨŽƌĂĐƟŽŶʹĂĚĚŝŶŐƚŚĞĐŽĚĞƚŽĐŚĂŶŐĞƚŚĞ^ĐĞŶĞƐ ϭϱϲ sĞƌŝĨLJŝŶŐƚŚĞĐŽĚĞŽĨLJŽƵƌĐůĂƐƐĞƐ ϭϱϳ ^ƵŵŵĂƌLJ ϭϲϭ ŚĂƉƚĞƌϵ͗^ƚĂƌƚƵŝůĚŝŶŐĂ'ĂŵĞĂŶĚ'ĞƚƚŚĞĂƐŝĐ^ƚƌƵĐƚƵƌĞZƵŶŶŝŶŐ ϭϲϯ ĂƐŝŶŐŝŶƚŽhŶŝƚLJΖƐƐĐƌŝƉƟŶŐĚŽĐƵŵĞŶƚĂƟŽŶ ϭϲϰ ZĞĂĚŝŶŐƚŚĞhŶŝƚLJZĞĨĞƌĞŶĐĞDĂŶƵĂůĮƌƐƚ ϭϲϱ &ŝŶĚŝŶŐĐŽĚĞĞdžĂŵƉůĞƐŝŶƚŚĞ^ĐƌŝƉƟŶŐZĞĨĞƌĞŶĐĞĂƐŶĞĞĚĞĚ ϭϲϱ ^ĞƚƵƉƚŚĞ^ƚĂƚĞDĂĐŚŝŶĞĂŶĚĂĚĚĂWůĂLJĞƌ'ĂŵĞKďũĞĐƚ ϭϲϱ dŝŵĞĨŽƌĂĐƟŽŶʹƐĞƫŶŐƵƉŶŝŶĞ^ƚĂƚĞƐĂŶĚƚŚƌĞĞ^ĐĞŶĞƐ ϭϲϳ ĂůůŝŶŐƚŚĞZĞƐƚĂƌƚŵĞƚŚŽĚŽĨƚŚĞ^ƚĂƚĞDĂŶĂŐĞƌ ϭϲϵ ĚĚĂWůĂLJĞƌ'ĂŵĞKďũĞĐƚ ϭϳϬ WůĂĐŝŶŐĂŶĚƵƐŝŶŐƚŚĞWůĂLJĞƌŽůůŝĚĞƌ ϭϳϭ WůĂĐŝŶŐĂŶĚƵƐŝŶŐƚŚĞ^ƉŚĞƌĞŽůůŝĚĞƌ ϭϳϭ dŝŵĞĨŽƌĂĐƟŽŶͲĂĚĚŝŶŐĂWůĂLJĞƌ'ĂŵĞKďũĞĐƚ ϭϳϮ ^ƚŽƌŝŶŐŐĂŵĞĚĂƚĂŝŶŝƚƐŽǁŶƐĐƌŝƉƚ ϭϳϮ dŝŵĞĨŽƌĂĐƟŽŶʹĐƌĞĂƟŶŐĂ'ĂŵĞĂƚĂƐĐƌŝƉƚ ϭϳϯ ŝƐƉůĂLJŝŶŐƚŚĞƐƉůĂƐŚƐĐƌĞĞŶƐ ϭϳϰ ŽŶƚƌŽůůŝŶŐƚŚĞWůĂLJĞƌ'ĂŵĞKďũĞĐƚ ϭϳϵ dŝŵĞĨŽƌĂĐƟŽŶʹƌŽƚĂƟŶŐWůĂLJĞƌŝŶ^ĞƚƵƉ^ƚĂƚĞ ϭϴϬ ĚĚŝŶŐƚŚĞWůĂLJĞƌŽůŽƌŽƉƟŽŶ ϭϴϯ dŝŵĞĨŽƌĂĐƟŽŶʹĐŚĂŶŐŝŶŐƚŚĞĐŽůŽƌƵƐŝŶŐ'h/ďƵƩŽŶƐ ϭϴϰ ĚĚŝŶŐƚŚĞ>ŝǀĞƐŽƉƟŽŶĨŽƌWůĂLJĞƌ ϭϴϳ dŝŵĞĨŽƌĂĐƟŽŶʹƐĞƫŶŐƚŚĞ>ŝǀĞƐĨŽƌWůĂLJĞƌ ϭϴϳ ^ƵŵŵĂƌLJ ϭϵϭ
[ v ]
½ ¾ ¿ À Á Â Ã Ä Â Å ÆÁ Å Æ Ç
ŚĂƉƚĞƌϭϬ͗DŽǀŝŶŐƌŽƵŶĚ͕ŽůůŝƐŝŽŶƐ͕ĂŶĚ<ĞĞƉŝŶŐ^ĐŽƌĞ ϭϵϯ sŝƐƵĂůŝnjŝŶŐƚŚĞĐŽŵƉůĞƚĞĚŐĂŵĞ ϭϵϰ ^ǁŝƚĐŚŝŶŐƚŽƚŚĞĮƌƐƚƉůĂLJ^ƚĂƚĞĂŶĚƉůĂLJĂďůĞƐĐĞŶĞ ϭϵϰ >ŽĂĚŝŶŐ^ĐĞŶĞϭƵƐŝŶŐĐŽĚĞ ϭϵϱ ĚĚŝŶŐĐĂŵĞƌĂƐĨŽƌĚŝīĞƌĞŶƚǀŝĞǁŝŶŐŽƉƟŽŶƐ ϭϵϲ dŝŵĞĨŽƌĂĐƟŽŶʹƐĞƫŶŐƵƉƚǁŽĂĚĚŝƟŽŶĂůĐĂŵĞƌĂƐŝŶƚŚĞƐĐĞŶĞ ϭϵϲ ƩĂĐŚŝŶŐƐĐƌŝƉƚƐƚŽƚŚĞŶĞǁĐĂŵĞƌĂƐ ϭϵϵ dŝŵĞĨŽƌĂĐƟŽŶŝŶŐʹĂƩĂĐŚƚŚĞ>ŽŽŬƚWůĂLJĞƌĐĂŵĞƌĂƐĐƌŝƉƚ ϭϵϵ dŝŵĞĨŽƌĂĐƟŽŶʹĂƩĂĐŚŝŶŐƚŚĞ&ŽůůŽǁŝŶŐWůĂLJĞƌĐĂŵĞƌĂƐĐƌŝƉƚ ϮϬϬ DŽǀŝŶŐƚŚĞWůĂLJĞƌƵƐŝŶŐZŝŐŝĚďŽĚLJƉŚLJƐŝĐƐ ϮϬϭ dŝŵĞĨŽƌĂĐƟŽŶʹĂĚĚŝŶŐĂZŝŐŝĚďŽĚLJƚŽƚŚĞWůĂLJĞƌ ϮϬϮ <ĞĞƉŝŶŐƐĐŽƌĞĚƵƌŝŶŐƚŚĞŐĂŵĞ ϮϬϰ /ŶŝƟĂůŝnjŝŶŐƚŚĞƐĐŽƌŝŶŐƐLJƐƚĞŵ ϮϬϱ <ĞĞƉŝŶŐƐĐŽƌĞŝŶƚŚĞ^ĐĞŶĞϭƉůĂLJ^ƚĂƚĞ ϮϬϳ >ŽƐŝŶŐƚŚĞŐĂŵĞŝŶ^ĐĞŶĞϭ ϮϬϳ tŝŶŶŝŶŐƚŚĞůĞǀĞůŝŶ^ĐĞŶĞϭ ϮϬϴ ĞƚĞƌŵŝŶŝŶŐŚŽǁƚŽǁŝŶŽƌůŽƐĞ ϮϭϬ dŝŵĞĨŽƌĂĐƟŽŶʹĐƌĞĂƟŶŐĂŐŽŽĚĂŶĚďĂĚƉƌĞĨĂď ϮϭϬ ^ĐŽƌŝŶŐĨŽƌƚŚĞǁŝŶ ϮϭϬ >ŽƐŝŶŐǁŚĞŶWůĂLJĞƌĐƌĂƐŚĞƐ Ϯϭϭ ^ŚŽŽƟŶŐƉƌŽũĞĐƟůĞƐĂƚƚŚĞŽƌďƐ ϮϭϮ dŝŵĞĨŽƌĂĐƟŽŶʹĐƌĞĂƟŶŐƚŚĞŶĞƌŐLJWƵůƐĞƉƌĞĨĂď ϮϭϮ ^ŚŽŽƟŶŐĂƐŝŶŐůĞͲƐŚŽƚŶĞƌŐLJWƵůƐĞ Ϯϭϰ ^ŚŽŽƟŶŐƌĂƉŝĚͲĮƌĞŶĞƌŐLJWƵůƐĞƐ Ϯϭϰ dŚĞŶĞƌŐLJWƵůƐĞŝƐĮƌĞĚ Ϯϭϱ ŽŶƚƌŽůůŝŶŐŶĞƌŐLJWƵůƐĞŽďũĞĐƚƐ Ϯϭϲ ^ƵŵŵĂƌLJ Ϯϭϵ ŚĂƉƚĞƌϭϭ͗^ƵŵŵĂƌŝnjŝŶŐzŽƵƌEĞǁŽĚŝŶŐ^ŬŝůůƐ ϮϮϭ ŽĚŝŶŐĂhŶŝƚLJWƌŽũĞĐƚ ϮϮϮ tŽƌŬŝŶŐǁŝƚŚŽďũĞĐƚƐ ϮϮϮ
^ĐƌĂƚĐŚŝŶŐƚŚĞƐƵƌĨĂĐĞŽĨηƉƌŽŐƌĂŵŵŝŶŐ ϮϮϯ
Ú ® ® Û ² « ³ É ¬ µ ¸ µ « Ê ® µ × Ü Ý µ É ¬ ° µ Ï Ì Ì Ð
>ŽŽŬŝŶŐĂƚĞǀĞŶŵŽƌĞhŶŝƚLJĨĞĂƚƵƌĞƐ ϮϮϰ ŽŶƚƌŽůůŝŶŐƚŚĞŐĂŵĞǁŝƚŚĂ^ƚĂƚĞDĂĐŚŝŶĞ ϮϮϰ
hƐŝŶŐĂ^ƚĂƚĞDĂĐŚŝŶĞŝƐĂĚĞƐŝŐŶƉĂƩĞƌŶĐŚŽŝĐĞ ϮϮϱ
Í Ï ² « ³ ¬ ´ µ Ù ¬ É ¬ µ ¶ É ± ´ ² « µ É ¬ ¬ ´ µ Ô É Ê µ Õ Ë Ö µ ± ¬ ¹ µ ¸ µ ¹ Ì Ì ¼
WƵůůŝŶŐĂůůƚŚĞůŝƩůĞηƉŝĞĐĞƐƚŽŐĞƚŚĞƌ ϮϮϲ >ĞĂƌŶŝŶŐŵŽƌĞĂŌĞƌƚŚŝƐŬ ϮϮϲ sŝƐŝƚŵLJĨĂǀŽƌŝƚĞǁĞďƐŝƚĞĨŽƌη ϮϮϳ sŝƐŝƚŵLJĨĂǀŽƌŝƚĞǁĞďƐŝƚĞƐĨŽƌhŶŝƚLJĐŽĚŝŶŐ͗ ϮϮϳ ^ƵŵŵĂƌLJ ϮϮϳ
[ vi ]
½ ¾ ¿ À Á Â Ã Ä Â Å ÆÁ Å Æ Ç
ƉƉĞŶĚŝdž͗/ŶŝƟĂů^ƚĂƚĞDĂĐŚŝŶĞĮůĞƐ ϮϮϵ ĞŐŝŶ^ƚĂƚĞ ϮϯϬ ^ĞƚƵƉ^ƚĂƚĞ ϮϯϬ WůĂLJ^ƚĂƚĞ^ĐĞŶĞϭͺϭ͗;ϭŽĨϮĂǀĂŝůĂďůĞ^ƚĂƚĞƐŝŶ^ĐĞŶĞϭͿ Ϯϯϭ WůĂLJ^ƚĂƚĞ^ĐĞŶĞϭͺϮ͗;ϮŽĨϮĂǀĂŝůĂďůĞ^ƚĂƚĞƐŝŶ^ĐĞŶĞϭͿ ϮϯϮ tŽŶ^ƚĂƚĞ^ĐĞŶĞϭ Ϯϯϯ >ŽƐƚ^ƚĂƚĞ^ĐĞŶĞϭ Ϯϯϰ WůĂLJ^ƚĂƚĞ^ĐĞŶĞϮ Ϯϯϱ tŽŶ^ƚĂƚĞ^ĐĞŶĞϮ Ϯϯϲ >ŽƐƚ^ƚĂƚĞ^ĐĞŶĞϮ Ϯϯϲ ^ƚĂƚĞDĂŶĂŐĞƌ Ϯϯϳ /^ƚĂƚĞĂƐĞ Ϯϯϵ ƉƉĞŶĚŝdž͗ŽŵƉůĞƚĞĚĐŽĚĞĮůĞƐĨŽƌŚĂƉƚĞƌƐϵĂŶĚϭϬ Ϯϰϭ ĞŐŝŶ^ƚĂƚĞ Ϯϰϭ ^ĞƚƵƉ^ƚĂƚĞ ϮϰϮ WůĂLJ^ƚĂƚĞ^ĐĞŶĞϭͺϭ͗;ϭŽĨϮĂǀĂŝůĂďůĞ^ƚĂƚĞƐŝŶ^ĐĞŶĞϭͿ Ϯϰϰ WůĂLJ^ƚĂƚĞ^ĐĞŶĞϭͺϮ͗;ϮŽĨϮĂǀĂŝůĂďůĞ^ƚĂƚĞƐŝŶ^ĐĞŶĞϭͿ Ϯϰϲ tŽŶ^ƚĂƚĞ^ĐĞŶĞϭ Ϯϰϳ >ŽƐƚ^ƚĂƚĞ^ĐĞŶĞϭ Ϯϰϴ WůĂLJ^ƚĂƚĞ^ĐĞŶĞϮ Ϯϰϵ tŽŶ^ƚĂƚĞ^ĐĞŶĞϮ Ϯϱϭ >ŽƐƚ^ƚĂƚĞ^ĐĞŶĞϮ ϮϱϮ ^ƚĂƚĞDĂŶĂŐĞƌ Ϯϱϯ WůĂLJĞƌŽŶƚƌŽů Ϯϱϰ 'ĂŵĞĂƚĂ Ϯϱϲ >ŽŽŬƚWůĂLJĞƌ Ϯϱϳ &ŽůůŽǁŝŶŐWůĂLJĞƌ Ϯϱϴ ŶĞƌŐLJWƵůƐĞWŽǁĞƌ Ϯϱϴ /^ƚĂƚĞĂƐĞ Ϯϱϵ ƉƉĞŶĚŝdž͗WŽƉYƵŝnjŶƐǁĞƌƐ Ϯϲϭ /ŶĚĞdž Ϯϲϳ
[ vii ]
3UHIDFH
@ / 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 < . )
ŚŽďďLJŝƐƚƚŽƚŚĞƉƌŽĨĞƐƐŝŽŶĂůǁŽƌŬŝŶŐŝŶĂůĂƌŐĞƐƚƵĚŝŽ͘hŶŝƚLJƵƐĞĚƚŽďĞĐŽŶƐŝĚĞƌĞĚĂϯƚŽŽů͕
ďƵƚǁŝƚŚƚŚĞƌĞůĞĂƐĞŽĨhŶŝƚLJϰ͘ϯ͕ŝƚŶŽǁŚĂƐĚĞĚŝĐĂƚĞĚϮƚŽŽůƐ͘dŚŝƐǁŝůůĞdžƉĂŶĚhŶŝƚLJΖƐƵƐĞ
A B A @ F + . A D
ĞǀĞůŽƉĞƌƐůŽǀĞŝƚƐŽďũĞĐƚͲŽƌŝĞŶƚĞĚĚƌĂŐͲĂŶĚͲĚƌŽƉƵƐĞƌŝŶƚĞƌĨĂĐĞǁŚŝĐŚŵĂŬĞƐĐƌĞĂƟŶŐĂ ŐĂŵĞŽƌŝŶƚĞƌĂĐƟǀĞƉƌŽĚƵĐƚƐŽĞĂƐLJ͘ĞƐƉŝƚĞƚŚĞǀŝƐƵĂůĞĂƐĞŽĨǁŽƌŬŝŶŐŝŶhŶŝƚLJ͕ƚŚĞƌĞŝƐĂ ŶĞĞĚƚŽƵŶĚĞƌƐƚĂŶĚƐŽŵĞďĂƐŝĐƉƌŽŐƌĂŵŵŝŶŐƚŽďĞĂďůĞƚŽǁƌŝƚĞƐĐƌŝƉƚƐĨŽƌ'ĂŵĞKďũĞĐƚƐ͘ &ŽƌŐĂŵĞĚĞǀĞůŽƉĞƌƐƚŚĂƚŚĂǀĞĂŶLJƉƌŽŐƌĂŵŵŝŶŐŬŶŽǁůĞĚŐĞ͕ůĞĂƌŶŝŶŐŚŽǁƚŽǁƌŝƚĞƐĐƌŝƉƚƐ ŝƐƋƵŝƚĞĞĂƐLJ͘&ŽƌƚŚĞƚŚĞĂƌƟƐƚĐŽŵŝŶŐƚŽhŶŝƚLJ͕ĐƌĞĂƟŶŐƚŚĞǀŝƐƵĂůĂƐƉĞĐƚƐŽĨĂŐĂŵĞŝƐĂ ďƌĞĞnjĞ͕ďƵƚǁƌŝƟŶŐƐĐƌŝƉƚƐŵĂLJĂƉƉĞĂƌƚŽďĞĂŐŝĂŶƚƌŽĂĚďůŽĐŬ͘ dŚŝƐŬŝƐĨŽƌƚŚŽƐĞǁŝƚŚŶŽĐŽŶĐĞƉƚŽĨƉƌŽŐƌĂŵŵŝŶŐ͘/ŝŶƚƌŽĚƵĐĞƚŚĞďƵŝůĚŝŶŐďůŽĐŬƐ͕ƚŚĂƚ ŝƐ͕ďĂƐŝĐĐŽŶĐĞƉƚƐŽĨƉƌŽŐƌĂŵŵŝŶŐƵƐŝŶŐĞǀĞƌLJĚĂLJĞdžĂŵƉůĞƐLJŽƵĂƌĞĨĂŵŝůŝĂƌǁŝƚŚ͘ůƐŽ͕ŵLJ ĂƉƉƌŽĂĐŚƚŽƚĞĂĐŚŝŶŐŝƐŶŽƚǁŚĂƚLJŽƵǁŝůůĮŶĚŝŶƚŚĞƚLJƉŝĐĂůƉƌŽŐƌĂŵŵŝŶŐŬ͘/ŶƚŚĞĞŶĚ͕ LJŽƵǁŝůůůĞĂƌŶƚŚĞďĂƐŝĐƐŽĨη͕ďƵƚ/ǁŝůůƐƉŽŽŶͲĨĞĞĚLJŽƵƚŚĞĚĞƚĂŝůƐĂƐƚŚĞLJĂƌĞŶĞĞĚĞĚ͘
/ǁŝůůƚĂŬĞLJŽƵƚŚƌŽƵŐŚƚŚĞƐƚĞƉƐŶĞĞĚĞĚƚŽĐƌĞĂƚĞĂƐŝŵƉůĞŐĂŵĞ͕ǁŝƚŚƚŚĞĨŽĐƵƐŶŽƚďĞŝŶŐ ƚŚĞŐĂŵĞŝƚƐĞůĨďƵƚŽŶŚŽǁƚŚĞŵĂŶLJƐĞƉĂƌĂƚĞƐĞĐƟŽŶƐŽĨĐŽĚĞĐŽŵĞƚŽŐĞƚŚĞƌƚŽŵĂŬĞĂ ǁŽƌŬŝŶŐŐĂŵĞ͘/ǁŝůůĂůƐŽŝŶƚƌŽĚƵĐĞƚŚĞĐŽŶĐĞƉƚŽĨĂ^ƚĂƚĞDĂĐŚŝŶĞƚŽŽƌŐĂŶŝnjĞĐŽĚĞŝŶƚŽ ƐŝŵƉůĞ͕ŐĂŵĞĐŽŶƚƌŽůůŝŶŐďůŽĐŬƐ͘ƚƚŚĞĞŶĚ͕LJŽƵǁŝůůďĞƐĂLJŝŶŐΗtŽǁ͊/ĐĂŶΖƚďĞůŝĞǀĞŚŽǁ ĞĂƐLJƚŚĂƚǁĂƐ͊Η
What this book covers
Þ ß à G
á â ŝƐĐŽǀĞƌŝŶŐzŽƵƌ,ŝĚĚĞŶ^ĐƌŝƉƟŶŐ^ŬŝůůƐ͕ ĞdžƉůĂŝŶƐƚŚĂƚƚŚĞǀĞƌLJĮƌƐƚƚŚŝŶŐLJŽƵ ŶĞĞĚƚŽĚŽŝƐŽǀĞƌĐŽŵĞLJŽƵƌƉĞƌĐĞŝǀĞĚĨĞĂƌŽĨǁƌŝƟŶŐƐĐƌŝƉƚƐ͘zŽƵΖůůƐĞĞƚŚĂƚǁƌŝƟŶŐƐĐƌŝƉƚƐ ŝƐǀĞƌLJƐŝŵŝůĂƌƚŽŵĂŶLJŽĨLJŽƵƌĚĂŝůLJƌŽƵƟŶĞƐ͘tĞĂůƐŽŚĂǀĞĂĮƌƐƚůŽŽŬĂƚhŶŝƚLJΖƐƐĐƌŝƉƟŶŐ ĚŽĐƵŵĞŶƚĂƟŽŶ͘&ŝŶĂůůLJ͕ǁĞƐĞĞŚŽǁƚŽĐƌĞĂƚĞĂηƐĐƌŝƉƚĮůĞŝŶhŶŝƚLJ͘
ã ä Á Ã ¾ å Á
Þ ß à 4 G
á /ŶƚƌŽĚƵĐŝŶŐƚŚĞƵŝůĚŝŶŐůŽĐŬƐĨŽƌhŶŝƚLJ^ĐƌŝƉƚƐ͕ ĞdžƉůĂŝŶƐƚŚĂƚƚŚĞƌĞĂƌĞƚǁŽ ƉƌŝŵĂƌLJďƵŝůĚŝŶŐďůŽĐŬƐĨŽƌǁƌŝƟŶŐĐŽĚĞ͕ǀĂƌŝĂďůĞƐĂŶĚŵĞƚŚŽĚƐ͘dŚŝƐĐŚĂƉƚĞƌŝŶƚƌŽĚƵĐĞƐ ƚŚĞĐŽŶĐĞƉƚƐŽĨĂǀĂƌŝĂďůĞĂŶĚĂŵĞƚŚŽĚ͘tŝƚŚƚŚĞƐĞƚǁŽďƵŝůĚŝŶŐďůŽĐŬƐ͕ǁĞůŽŽŬŝŶƚŽƚŚĞ ĐŽŶĐĞƉƚŽĨĂΗĐůĂƐƐ͕ΗĂĐŽŶƚĂŝŶĞƌŽĨǀĂƌŝĂďůĞƐĂŶĚŵĞƚŚŽĚƐƵƐĞĚƚŽĐƌĞĂƚĞhŶŝƚLJŽŵƉŽŶĞŶƚƐ͘
&ŝŶĂůůLJ͕ĐŽŵŵƵŶŝĐĂƟŽŶďĞƚǁĞĞŶ'ĂŵĞKďũĞĐƚƐŝƐĚŝƐĐƵƐƐĞĚďLJŝŶƚƌŽĚƵĐŝŶŐŽƚ^LJŶƚĂdž͘
Þ ß à G
á é 'ĞƫŶŐŝŶƚŽƚŚĞĞƚĂŝůƐŽĨsĂƌŝĂďůĞƐ͕ ĞdžƉůĂŝŶƐƵƐŝŶŐǀĂƌŝĂďůĞƐŝŶĚĞƚĂŝů͘tĞƐĞĞŚŽǁ ƚŚĞLJΖƌĞƵƐĞĚĨŽƌƐƚŽƌŝŶŐĚĂƚĂ͕ĂŶĚŚŽǁƚŚĞŵĂŐŝĐǁŽƌŬƐƚŽƚƵƌŶǀĂƌŝĂďůĞƐŝŶƚŽŽŵƉŽŶĞŶƚ
ƉƌŽƉĞƌƟĞƐǁŚŝĐŚĂƉƉĞĂƌŝŶƚŚĞhŶŝƚLJ/ŶƐƉĞĐƚŽƌƉĂŶĞů͘
Þ ß à G
á ê 'ĞƫŶŐŝŶƚŽƚŚĞĞƚĂŝůƐŽĨDĞƚŚŽĚƐ͕ ĞdžƉůĂŝŶƐŚŽǁŵĞƚŚŽĚƐƉĞƌĨŽƌŵƚŚĞĂĐƟŽŶƐƚŚĂƚ ƚĂŬĞƉůĂĐĞŽŶ'ĂŵĞKďũĞĐƚƐ͘tĞƐĞĞŚŽǁƚŽĐƌĞĂƚĞĂŶĚƵƐĞŵĞƚŚŽĚƐŝŶĚĞƚĂŝů͘tĞĂůƐŽůŽŽŬŝŶƚŽ
ƚǁŽŽĨhŶŝƚLJΖƐŵŽƐƚŽŌĞŶƵƐĞĚŵĞƚŚŽĚƐ͕ƚŚĞ^ƚĂƌƚ;ͿŵĞƚŚŽĚĂŶĚƚŚĞhƉĚĂƚĞ;ͿŵĞƚŚŽĚ͘
Þ ß à G A ì , > 9 / @ ? 2 1 9 2 C < . / @ 0 0 9 F A , > 9 - G C A : /? / + @ ? 1 9 B A 2 + = A
á ë DĂŬŝŶŐĞĐŝƐŝŽŶƐŝŶŽĚĞ͕ ŵĂĚĞĂďŽƵƚŵĂŶLJƚŚŝŶŐƐ͕ũƵƐƚůŝŬĞLJŽƵĚŽŝŶLJŽƵƌĚĂŝůLJůŝĨĞ͘tĞůŽŽŬĂƚŵĂŶLJŽĨƚŚĞǁĂLJƐ
ĐŚŽŝĐĞƐĂƌĞŵĂĚĞĂŶĚƐŽŵĞŽĨƚŚĞĐŽŵŵŽŶƌĞĂƐŽŶƐĨŽƌǁŚŝĐŚĚĞĐŝƐŝŽŶƐĂƌĞƌĞƋƵŝƌĞĚ͘
Þ ß à G
á í hƐŝŶŐŽƚ^LJŶƚĂdžĨŽƌKďũĞĐƚŽŵŵƵŶŝĐĂƟŽŶ͕ ƐŚŽǁƐƵƐǁŚĂƚŽƚ^LJŶƚĂdžĂĐƚƵĂůůLJŝƐ͕
ĂƐŝŵƉůĞĂĚĚƌĞƐƐĨŽƌŵĂƚƚŽƌĞƚƌŝĞǀĞŝŶĨŽƌŵĂƟŽŶŽƌƐĞŶĚŝŶĨŽƌŵĂƟŽŶƚŽŽƚŚĞƌŽŵƉŽŶĞŶƚƐ͘
Þ ß à G
á î ƌĞĂƟŶŐƚŚĞ'ĂŵĞƉůĂLJŝƐ:ƵƐƚĂWĂƌƚŽĨƚŚĞ'ĂŵĞ͕ ƐŚŽǁƐƚŚĂƚĚĞǀĞůŽƉŝŶŐƚŚĞ ŐĂŵĞƉůĂLJŝƐĨƵŶ͕ďƵƚƚŚĞƌĞĂƌĞŽƚŚĞƌƉĂƌƚƐŶĞĞĚĞĚƚŽŵĂŬĞĂĨƵůůLJĨƵŶĐƟŽŶĂůŐĂŵĞ͘tĞůŽŽŬ
ŝŶƚŽƐŽŵĞŽĨƚŚĞƉŽƐƐŝďůĞƉĂƌƚƐŶĞĞĚĞĚĂŶĚŚŽǁƚŽŽƌŐĂŶŝnjĞĂůůƚŚĞƉĂƌƚƐďLJŝŶƚƌŽĚƵĐŝŶŐƚŚĞ
< ? A + E 9 J 2 9 2 A 9 : 1 / @ A D
#
Þ ß à G
á ï ĞǀĞůŽƉŝŶŐƚŚĞ^ƚĂƚĞDĂĐŚŝŶĞ͕ ĐƌĞĂƚĞƐĂƐŝŵƉůĞ^ƚĂƚĞDĂĐŚŝŶĞƚŽƐŚŽǁŚŽǁŝƚ ǁŽƌŬƐ͕ĂŶĚƐĞĞƚŚĞƐŝŵƉůŝĐŝƚLJŝƚďƌŝŶŐƐĨŽƌĐŽŶƚƌŽůůŝŶŐĂŐĂŵĞ͘tĞƐŚŽǁŚŽǁƚŽĐŚĂŶŐĞ^ĐĞŶĞƐ
ĨŽƌĂŵƵůƟͲůĞǀĞůŐĂŵĞĂŶĚŚŽǁƚŽĚĞĂůǁŝƚŚ'ĂŵĞKďũĞĐƚƐǁŚĞŶĐŚĂŶŐŝŶŐƚŽĂŶŽƚŚĞƌƐĐĞŶĞ͘
Þ ß à G
á ð ^ƚĂƌƚƵŝůĚŝŶŐĂ'ĂŵĞĂŶĚ'ĞƚƚŚĞĂƐŝĐ^ƚƌƵĐƚƵƌĞZƵŶŶŝŶŐ͕ ƚĞĂĐŚĞƐƵƐŚŽǁƚŽ ĂĐĐĞƐƐĂŶĚƵƐĞhŶŝƚLJΖƐ^ĐƌŝƉƟŶŐZĞĨĞƌĞŶĐĞĂŶĚƚŚĞZĞĨĞƌĞŶĐĞDĂŶƵĂůĨŽƌƚŚĞĨĞĂƚƵƌĞƐǁĞ ǁĂŶƚ͘dŚĞŶǁĞďĞŐŝŶĐƌĞĂƟŶŐĂŵƵůƟͲůĞǀĞůŐĂŵĞƵƐŝŶŐƚŚĞƐƚĂƚĞŵĂĐŚŝŶĞĂŶĚƚŚƌĞĞƐĐĞŶĞƐ͘
WůĂLJĞƌ'ĂŵĞKďũĞĐƚŝƐĂĚĚĞĚĂŶĚǁĞůĞĂƌŶŚŽǁƚŽĐŽŶƚƌŽůŝƚ͘
Þ ß à G
á â ñ DŽǀŝŶŐƌŽƵŶĚ͕ŽůůŝƐŝŽŶƐ͕ĂŶĚ<ĞĞƉŝŶŐ^ĐŽƌĞ͕ ƐŚŽǁƐŚŽǁƚŽŵŽǀĞƚŚĞWůĂLJĞƌ ĂƌŽƵŶĚƵƐŝŶŐhŶŝƚLJΖƐƉŚLJƐŝĐƐƐLJƐƚĞŵ͕ĂŶĚŚĂǀĞĐĂŵĞƌĂƐĨŽůůŽǁƚŚĞWůĂLJĞƌΖƐŵŽǀĞŵĞŶƚƐ͘tĞ ĚĞǀĞůŽƉĂ'h/ƐĐŽƌŝŶŐƐLJƐƚĞŵ͕ƐƚĂƌƚƐŚŽŽƟŶŐƉƌŽũĞĐƟůĞƐĂƚĞŶĞŵLJŽďũĞĐƚƐ͕ĂŶĚƐĞĞŚŽǁƚŽ ǁŝŶŽƌůŽƐĞƚŚĞŐĂŵĞ͘hůƟŵĂƚĞůLJ͕ǁĞƐĞĞŚŽǁĂůůƚŚĞƐĞƉĂƌĂƚĞƉŝĞĐĞƐŽĨĐŽĚĞĐŽŵĞƚŽŐĞƚŚĞƌ
ĂŶĚǁŽƌŬƚŽŐĞƚŚĞƌ͘
Þ ß à G
á â â ^ƵŵŵĂƌŝnjŝŶŐzŽƵƌEĞǁŽĚŝŶŐ^ŬŝůůƐ͕ ƌĞǀŝĞǁƐƚŚĞŵĂŝŶƉŽŝŶƚƐLJŽƵůĞĂƌŶĞĚĂďŽƵƚ ƉƌŽŐƌĂŵŵŝŶŐǁŝƚŚηĂŶĚǁŽƌŬŝŶŐǁŝƚŚŽďũĞĐƚƐ͘/ƚĞůůLJŽƵĂďŽƵƚƐŽŵĞŽĨƚŚĞηĂŶĚhŶŝƚLJ ĨĞĂƚƵƌĞƐLJŽƵŵĂLJǁĂŶƚƚŽůĞĂƌŶŶŽǁƚŚĂƚLJŽƵƵŶĚĞƌƐƚĂŶĚƚŚĞďĂƐŝĐƐŽĨη͘/ǁŝůůŚŝŐŚůŝŐŚƚ
ƚŚĞďĞŶĞĮƚƐŽĨŝŶĐŽƌƉŽƌĂƟŶŐĂƐƚĂƚĞŵĂĐŚŝŶĞŝŶƚŽLJŽƵƌhŶŝƚLJƉƌŽũĞĐƚƐ͘&ŝŶĂůůLJ͕/ƉƌĞƐĞŶƚŵLJ
E 9 B + . / 2 A ? + < . : A ? E + . E < . 2 1 A . > A 9 . @ / @ 0 D
æ ç è
ã ä Á Ã ¾ å Á
ƉƉĞŶĚŝdž G /ŶŝƟĂů^ƚĂƚĞŵĂĐŚŝŶĞĮůĞƐ ͕ƐŚŽǁƐƚŚĞŝŶŝƟĂůĐŽĚĞĨŽƌƚŚĞĐůĂƐƐĞƐŶĞĞĚĞĚ ĨŽƌĐŚĂŶŐŝŶŐ^ƚĂƚĞƐŝŶŽƵƌŐĂŵĞ͘dŚĞƐĞ^ƚĂƚĞDĂĐŚŝŶĞĐůĂƐƐĞƐĂƌĞƚŚĞƐƚĂƌƟŶŐƉŽŝŶƚĨŽƌ ŽƌŐĂŶŝnjŝŶŐĂŶĚĂĚĚŝŶŐŐĂŵĞĐŽĚĞ͘
ƉƉĞŶĚŝdž G ŽŵƉůĞƚĞĚĐŽĚĞĮůĞƐĨŽƌŚĂƉƚĞƌƐϵĂŶĚϭϬ ͕ƐŚŽǁƐĂůůƚŚĞĐůĂƐƐĂŶĚƐĐƌŝƉƚĮůĞƐ
< ? A C E + . , > 9 - / @ 0 + < . : + F , > A 2 A C 0 9 F A D
:KDW\RXQHHGIRUWKLVERRN zŽƵŶĞĞĚƚŚĞĨƌĞĞǀĞƌƐŝŽŶŽĨhŶŝƚLJůŽĐĂƚĞĚĂƚ http://unity3d.com/unity/download/ D dŚĞDŽŶŽĞǀĞůŽƉĐŽĚĞĞĚŝƚŽƌŝƐŝŶĐůƵĚĞĚŝŶƚŚĞhŶŝƚLJŝŶƐƚĂůůĂƟŽŶ͘ zŽƵƌĐŽŵƉƵƚĞƌǁŝůůŶĞĞĚƚŽŵĞĞƚƚŚĞŵŝŶŝŵƵŵƌĞƋƵŝƌĞŵĞŶƚƐĨŽƌhŶŝƚLJĂƐƐƉĞĐŝĮĞĚĂƚ http://unity3d.com/unity/system-requirements.html D tŝŶĚŽǁƐ͗yW^WϮŽƌůĂƚĞƌ͖DĂĐK^yΗ^ŶŽǁ>ĞŽƉĂƌĚΗϭϬ͘ϲŽƌůĂƚĞƌ͘EŽƚĞƚŚĂƚhŶŝƚLJǁĂƐŶŽƚ ƚĞƐƚĞĚŽŶƐĞƌǀĞƌǀĞƌƐŝŽŶƐŽĨtŝŶĚŽǁƐĂŶĚK^y͘
'ƌĂƉŚŝĐƐĐĂƌĚǁŝƚŚŝƌĞĐƚyϵůĞǀĞů;ƐŚĂĚĞƌŵŽĚĞůϮ͘ϬͿĐĂƉĂďŝůŝƟĞƐ͘ŶLJĐĂƌĚŵĂĚĞƐŝŶĐĞϮϬϬϰ ƐŚŽƵůĚǁŽƌŬ͘
:KRWKLVERRNLVIRU /ĨLJŽƵĚŽŶΖƚŬŶŽǁĂŶLJƚŚŝŶŐĂďŽƵƚƉƌŽŐƌĂŵŵŝŶŐŝŶŐĞŶĞƌĂů͕ǁƌŝƟŶŐĐŽĚĞ͕ǁƌŝƟŶŐƐĐƌŝƉƚƐ͕Žƌ ŚĂǀĞŶŽŝĚĞĂǁŚĞƌĞƚŽĞǀĞŶďĞŐŝŶ͕ƚŚĞŶƚŚŝƐŬŝƐƉĞƌĨĞĐƚĨŽƌLJŽƵ͘/ĨLJŽƵǁĂŶƚƚŽŵĂŬĞ ŐĂŵĞƐĂŶĚŶĞĞĚƚŽůĞĂƌŶŚŽǁƚŽǁƌŝƚĞηƐĐƌŝƉƚƐŽƌĐŽĚĞ͕ƚŚĞŶƚŚŝƐŬŝƐŝĚĞĂůĨŽƌLJŽƵ͘
Conventions /ŶƚŚŝƐŬ͕LJŽƵǁŝůůĮŶĚƐĞǀĞƌĂůŚĞĂĚŝŶŐƐĂƉƉĞĂƌŝŶŐĨƌĞƋƵĞŶƚůLJ͘ dŽŐŝǀĞĐůĞĂƌŝŶƐƚƌƵĐƟŽŶƐŽĨŚŽǁƚŽĐŽŵƉůĞƚĞĂƉƌŽĐĞĚƵƌĞŽƌƚĂƐŬ͕ǁĞƵƐĞ͗
7LPHIRUDFWLRQ²KHDGLQJ
ó ô
ĐƟŽŶϭ
õ ô
ĐƟŽŶϮ
ö ô
ĐƟŽŶϯ
æ ò è
ã ä Á Ã ¾ å Á
/ŶƐƚƌƵĐƟŽŶƐŽŌĞŶŶĞĞĚƐŽŵĞĞdžƚƌĂĞdžƉůĂŶĂƟŽŶƐŽƚŚĂƚƚŚĞLJŵĂŬĞƐĞŶƐĞ͕ƐŽƚŚĞLJĂƌĞ ĨŽůůŽǁĞĚǁŝƚŚ͗
What just happened? dŚŝƐŚĞĂĚŝŶŐĞdžƉůĂŝŶƐƚŚĞǁŽƌŬŝŶŐŽĨƚĂƐŬƐŽƌŝŶƐƚƌƵĐƟŽŶƐƚŚĂƚLJŽƵŚĂǀĞũƵƐƚĐŽŵƉůĞƚĞĚ͘ zŽƵǁŝůůĂůƐŽĮŶĚƐŽŵĞŽƚŚĞƌůĞĂƌŶŝŶŐĂŝĚƐŝŶƚŚĞŬ͕ŝŶĐůƵĚŝŶŐ͗
3RSTXL]²KHDGLQJ dŚĞƐĞĂƌĞƐŚŽƌƚŵƵůƟƉůĞͲĐŚŽŝĐĞƋƵĞƐƟŽŶƐŝŶƚĞŶĚĞĚƚŽŚĞůƉLJŽƵƚĞƐƚLJŽƵƌŽǁŶƵŶĚĞƌƐƚĂŶĚŝŶŐ͘
+DYHDJRKHUR²KHDGLQJ dŚĞƐĞƉƌĂĐƟĐĂůĐŚĂůůĞŶŐĞƐŐŝǀĞLJŽƵŝĚĞĂƐĨŽƌĞdžƉĞƌŝŵĞŶƟŶŐǁŝƚŚǁŚĂƚLJŽƵŚĂǀĞůĞĂƌŶĞĚ͘ zŽƵǁŝůůĂůƐŽĮŶĚĂŶƵŵďĞƌŽĨƐƚLJůĞƐŽĨƚĞdžƚƚŚĂƚĚŝƐƟŶŐƵŝƐŚďĞƚǁĞĞŶĚŝīĞƌĞŶƚŬŝŶĚƐŽĨ ŝŶĨŽƌŵĂƟŽŶ͘,ĞƌĞĂƌĞƐŽŵĞĞdžĂŵƉůĞƐŽĨƚŚĞƐĞƐƚLJůĞƐ͕ĂŶĚĂŶĞdžƉůĂŶĂƟŽŶŽĨƚŚĞŝƌŵĞĂŶŝŶŐ͘
ŽĚĞǁŽƌĚƐŝŶƚĞdžƚ͕ĚĂƚĂďĂƐĞƚĂďůĞŶĂŵĞƐ͕ĨŽůĚĞƌŶĂŵĞƐ͕ĮůĞŶĂŵĞƐ͕ĮůĞĞdžƚĞŶƐŝŽŶƐ͕ ƉĂƚŚŶĂŵĞƐ͕ĚƵŵŵLJhZ>Ɛ͕ƵƐĞƌŝŶƉƵƚ͕ĂŶĚdǁŝƩĞƌŚĂŶĚůĞƐĂƌĞƐŚŽǁŶĂƐĨŽůůŽǁƐ͗ΗtĞ ĐĂŶŝŶĐůƵĚĞŽƚŚĞƌĐŽŶƚĞdžƚƐƚŚƌŽƵŐŚƚŚĞƵƐĞŽĨƚŚĞŝŶĐůƵĚĞĚŝƌĞĐƟǀĞ͘Η
ďůŽĐŬŽĨĐŽĚĞŝƐƐĞƚĂƐĨŽůůŽǁƐ͗
public BeginState (StateManager managerRef) { manager = managerRef; if(Application.loadedLevelName != "Scene0") Application.LoadLevel("Scene0"); }
tŚĞŶǁĞǁŝƐŚƚŽĚƌĂǁLJŽƵƌĂƩĞŶƟŽŶƚŽĂƉĂƌƟĐƵůĂƌƉĂƌƚŽĨĂĐŽĚĞďůŽĐŬ͕ƚŚĞƌĞůĞǀĂŶƚůŝŶĞƐ
+ . / 2 A F ? 9 . A ? A 2 / @ = + > C I
if(instanceRef == null) { instanceRef = this; DontDestroyOnLoad(gameObject); }
ŶLJĐŽŵŵĂŶĚͲůŝŶĞŝŶƉƵƚŽƌŽƵƚƉƵƚŝƐǁƌŝƩĞŶĂƐĨŽůůŽǁƐ͗
# cp /usr/src/asterisk-addons/configs/cdr_mysql.conf.sample
/etc/asterisk/cdr_mysql.conf
æ ÷ è
ã ä Á Ã ¾ å Á
ŽǁŶůŽĂĚŝŶŐƚŚĞĞdžĂŵƉůĞĐŽĚĞ zŽƵĐĂŶĚŽǁŶůŽĂĚƚŚĞĞdžĂŵƉůĞĐŽĚĞĮůĞƐĨŽƌĂůůWĂĐŬƚŬƐLJŽƵŚĂǀĞƉƵƌĐŚĂƐĞĚ ĨƌŽŵLJŽƵƌĂĐĐŽƵŶƚĂƚŚƩƉ͗ͬͬǁǁǁ͘ƉĂĐŬƚƉƵď͘ĐŽŵ͘/ĨLJŽƵƉƵƌĐŚĂƐĞĚƚŚŝƐŬ ĞůƐĞǁŚĞƌĞ͕LJŽƵĐĂŶǀŝƐŝƚŚƩƉ͗ͬͬǁǁǁ͘ƉĂĐŬƚƉƵď͘ĐŽŵͬƐƵƉƉŽƌƚĂŶĚƌĞŐŝƐƚĞƌƚŽŚĂǀĞ
ƚŚĞĮůĞƐ͘ĞͲŵĂŝůĞĚĚŝƌĞĐƚůLJƚŽLJŽƵ͘
@ C EĞǁƚĞƌŵƐ 9 ŝŵƉŽƌƚĂŶƚǁŽƌĚƐ ĂƌĞƐŚŽǁŶŝŶďŽůĚ͘tŽƌĚƐƚŚĂƚLJŽƵƐĞĞŽŶƚŚĞƐĐƌĞĞŶ͕ŝŶ ŵĞŶƵƐŽƌĚŝĂůŽŐďŽdžĞƐĨŽƌĞdžĂŵƉůĞ͕ĂƉƉĞĂƌŝŶƚŚĞƚĞdžƚůŝŬĞƚŚŝƐ͗ΗĐůŝĐŬŝŶŐƚŚĞ EĞdžƚ ďƵƩŽŶ
ŵŽǀĞƐLJŽƵƚŽƚŚĞŶĞdžƚƐĐƌĞĞŶΗ͘
ù ú û ü ý ü þ ÿ û ý ¡ ¢ û £ ú ü £ ü £ ¤ ÿ ú ¢ ¢ ¤ ú û ý ü ú ¥ ¦ § ý ¨ ¤ £ © ý ÿ
ý ¢ ÿ ú ü £ û ý ¨ ÿ ú ¢ ¢ ¤ ú û § ý ¨ ¤ £ © ý ÿ
5HDGHUIHHGEDFN &ĞĞĚďĂĐŬĨƌŽŵŽƵƌƌĞĂĚĞƌƐŝƐĂůǁĂLJƐǁĞůĐŽŵĞ͘>ĞƚƵƐŬŶŽǁǁŚĂƚLJŽƵƚŚŝŶŬĂďŽƵƚƚŚŝƐ ŬͶǁŚĂƚLJŽƵůŝŬĞĚŽƌŵĂLJŚĂǀĞĚŝƐůŝŬĞĚ͘ZĞĂĚĞƌĨĞĞĚďĂĐŬŝƐŝŵƉŽƌƚĂŶƚĨŽƌƵƐƚŽ
ĚĞǀĞůŽƉƟƚůĞƐƚŚĂƚLJŽƵƌĞĂůůLJŐĞƚƚŚĞŵŽƐƚŽƵƚŽĨ͘
+ ? A @ C < ? 0 A @ A . 9 > E A A C = 9 : ; G ? / F , > - ? A @ C 9 @ A F 9 / > 2 + G ( [email protected] ĂŶĚŵĞŶƟŽŶƚŚĞŬƟƚůĞǀŝĂƚŚĞƐƵďũĞĐƚŽĨLJŽƵƌŵĞƐƐĂŐĞ͘
/ĨƚŚĞƌĞŝƐĂƚŽƉŝĐƚŚĂƚLJŽƵŚĂǀĞĞdžƉĞƌƟƐĞŝŶĂŶĚLJŽƵĂƌĞŝŶƚĞƌĞƐƚĞĚŝŶĞŝƚŚĞƌǁƌŝƟŶŐŽƌ ĐŽŶƚƌŝďƵƟŶŐƚŽĂŬ͕ƐĞĞŽƵƌĂƵƚŚŽƌŐƵŝĚĞŽŶ www.packtpub.com/authors D
Customer support
EŽǁƚŚĂƚLJŽƵĂƌĞƚŚĞƉƌŽƵĚŽǁŶĞƌŽĨĂWĂĐŬƚŬ͕ǁĞŚĂǀĞĂŶƵŵďĞƌŽĨƚŚŝŶŐƐƚŽŚĞůƉLJŽƵ
2 + 0 A 2 2 1 A F + ? 2 E . + F - + < . , < . : 1 9 ? A D
Downloading the example code
zŽƵĐĂŶĚŽǁŶůŽĂĚƚŚĞĞdžĂŵƉůĞĐŽĚĞĮůĞƐĨŽƌĂůůWĂĐŬƚŬƐLJŽƵŚĂǀĞƉƵƌĐŚĂƐĞĚĨƌŽŵLJŽƵƌ
: : + < @ 2 9 2
9 http://www.packtpub.com͘/ĨLJŽƵƉƵƌĐŚĂƐĞĚƚŚŝƐŬĞůƐĞǁŚĞƌĞ͕LJŽƵĐĂŶ
/? / 2
B http://www.packtpub.com/supportĂŶĚƌĞŐŝƐƚĞƌƚŽŚĂǀĞƚŚĞĮůĞƐĞͲŵĂŝůĞĚĚŝƌĞĐƚůLJ
2 + - + < D
æ ø è
ã ä Á Ã ¾ å Á
Errata ůƚŚŽƵŐŚǁĞŚĂǀĞƚĂŬĞŶĞǀĞƌLJĐĂƌĞƚŽĞŶƐƵƌĞƚŚĞĂĐĐƵƌĂĐLJŽĨŽƵƌĐŽŶƚĞŶƚ͕ŵŝƐƚĂŬĞƐĚŽ ŚĂƉƉĞŶ͘/ĨLJŽƵĮŶĚĂŵŝƐƚĂŬĞŝŶŽŶĞŽĨŽƵƌŬƐͶŵĂLJďĞĂŵŝƐƚĂŬĞŝŶƚŚĞƚĞdžƚŽƌƚŚĞ ĐŽĚĞͶǁĞǁŽƵůĚďĞŐƌĂƚĞĨƵůŝĨLJŽƵǁŽƵůĚƌĞƉŽƌƚƚŚŝƐƚŽƵƐ͘LJĚŽŝŶŐƐŽ͕LJŽƵĐĂŶƐĂǀĞŽƚŚĞƌ ƌĞĂĚĞƌƐĨƌŽŵĨƌƵƐƚƌĂƟŽŶĂŶĚŚĞůƉƵƐŝŵƉƌŽǀĞƐƵďƐĞƋƵĞŶƚǀĞƌƐŝŽŶƐŽĨƚŚŝƐŬ͘/ĨLJŽƵĮŶĚ
ĂŶLJĞƌƌĂƚĂ͕ƉůĞĂƐĞƌĞƉŽƌƚƚŚĞŵďLJǀŝƐŝƟŶŐ http://www.packtpub.com/submit-errataG
> / @ ; G 9 @ C A @ 2 A . / @ 0 2 1 A C A 2 9 / > ? + E
ƐĞůĞĐƟŶŐLJŽƵƌŬ͕ĐůŝĐŬŝŶŐŽŶƚŚĞ ƐƵďŵŝƐƐŝŽŶ ĨŽƌŵ LJŽƵƌĞƌƌĂƚĂ͘KŶĐĞLJŽƵƌĞƌƌĂƚĂĂƌĞǀĞƌŝĮĞĚ͕LJŽƵƌƐƵďŵŝƐƐŝŽŶǁŝůůďĞĂĐĐĞƉƚĞĚĂŶĚƚŚĞĞƌƌĂƚĂ ǁŝůůďĞƵƉůŽĂĚĞĚŽŶŽƵƌǁĞďƐŝƚĞ͕ŽƌĂĚĚĞĚƚŽĂŶLJůŝƐƚŽĨĞdžŝƐƟŶŐĞƌƌĂƚĂ͕ƵŶĚĞƌƚŚĞƌƌĂƚĂ ƐĞĐƟŽŶŽĨƚŚĂƚƟƚůĞ͘ŶLJĞdžŝƐƟŶŐĞƌƌĂƚĂĐĂŶďĞǀŝĞǁĞĚďLJƐĞůĞĐƟŶŐLJŽƵƌƟƚůĞĨƌŽŵ http://www.packtpub.com/support D
Piracy
8 / . 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 G
! '
ǁĞƚĂŬĞƚŚĞƉƌŽƚĞĐƟŽŶŽĨŽƵƌĐŽƉLJƌŝŐŚƚĂŶĚůŝĐĞŶƐĞƐǀĞƌLJƐĞƌŝŽƵƐůLJ͘/ĨLJŽƵĐŽŵĞĂĐƌŽƐƐĂŶLJ ŝůůĞŐĂůĐŽƉŝĞƐŽĨŽƵƌǁŽƌŬƐ͕ŝŶĂŶLJĨŽƌŵ͕ŽŶƚŚĞ/ŶƚĞƌŶĞƚ͕ƉůĞĂƐĞƉƌŽǀŝĚĞƵƐǁŝƚŚƚŚĞůŽĐĂƟŽŶ
ĂĚĚƌĞƐƐŽƌǁĞďƐŝƚĞŶĂŵĞŝŵŵĞĚŝĂƚĞůLJƐŽƚŚĂƚǁĞĐĂŶƉƵƌƐƵĞĂƌĞŵĞĚLJ͘
> A 9 ? A : + @ 2 9 : 2 < ? 9 2
8 [email protected]ǁŝƚŚĂůŝŶŬƚŽƚŚĞƐƵƐƉĞĐƚĞĚ
, / . 9 2 A C F 9 2 A . / 9 > D
tĞĂƉƉƌĞĐŝĂƚĞLJŽƵƌŚĞůƉŝŶƉƌŽƚĞĐƟŶŐŽƵƌĂƵƚŚŽƌƐ͕ĂŶĚŽƵƌĂďŝůŝƚLJƚŽďƌŝŶŐLJŽƵ
B 9 > < 9 = > A : + @ 2 A @ 2 D
Questions zŽƵĐĂŶĐŽŶƚĂĐƚƵƐĂƚ [email protected]ŝĨLJŽƵĂƌĞŚĂǀŝŶŐĂƉƌŽďůĞŵǁŝƚŚĂŶLJ
ĂƐƉĞĐƚŽĨƚŚĞŬ͕ĂŶĚǁĞǁŝůůĚŽŽƵƌďĞƐƚƚŽĂĚĚƌĞƐƐŝƚ͘
æ è 1 Discovering Your Hidden Scripting Skills
ŽŵƉƵƚĞƌƉƌŽŐƌĂŵŵŝŶŐŝƐǀŝĞǁĞĚďLJƚŚĞĂǀĞƌĂŐĞƉĞƌƐŽŶĂƐƌĞƋƵŝƌŝŶŐůŽŶŐ ƉĞƌŝŽĚƐŽĨƚƌĂŝŶŝŶŐƚŽůĞĂƌŶƐŬŝůůƐƚŚĂƚĂƌĞƚŽƚĂůůLJĨŽƌĞŝŐŶ͕ĂŶĚĚĂƌŶŶĞĂƌ ŝŵƉŽƐƐŝďůĞƚŽƵŶĚĞƌƐƚĂŶĚ͘dŚĞǁŽƌĚŐĞĞŬŝƐŽĨƚĞŶƵƐĞĚƚŽĚĞƐĐƌŝďĞĂƉĞƌƐŽŶ ƚŚĂƚĐĂŶǁƌŝƚĞĐŽŵƉƵƚĞƌĐŽĚĞ͘dŚĞƉĞƌĐĞƉƚŝŽŶŝƐƚŚĂƚůĞĂƌŶŝŶŐƚŽǁƌŝƚĞĐŽĚĞ ƚĂŬĞƐŐƌĞĂƚƚĞĐŚŶŝĐĂůƐŬŝůůƚŚĂƚŝƐũƵƐƚƐŽŚĂƌĚƚŽůĞĂƌŶ͘dŚŝƐƉĞƌĐĞƉƚŝŽŶŝƐƚŽƚĂůůLJ ƵŶǁĂƌƌĂŶƚĞĚ͘zŽƵĂůƌĞĂĚLJŚĂǀĞƚŚĞƐŬŝůůƐŶĞĞĚĞĚďƵƚĚŽŶΖƚƌĞĂůŝnjĞŝƚ͘dŽŐĞƚŚĞƌ ǁĞǁŝůůĐƌƵƐŚƚŚŝƐĨĂůƐĞƉĞƌĐĞƉƚŝŽŶLJŽƵŵĂLJŚĂǀĞŽĨLJŽƵƌƐĞůĨďLJƌĞĨŽĐƵƐŝŶŐ͕ŽŶĞ ƐƚĞƉĂƚĂƚŝŵĞ͕ƚŚĞŬŶŽǁůĞĚŐĞLJŽƵĂůƌĞĂĚLJƉŽƐƐĞƐƐƚŽǁƌŝƚĞhŶŝƚLJƐĐƌŝƉƚƐ͘
/ŶƚŚŝƐĐŚĂƉƚĞƌǁĞƐŚĂůů͗
ĞĂůǁŝƚŚƉƌĞĐŽŶĐĞŝǀĞĚĨĞĂƌƐĂŶĚĐŽŶĐĞƉƚƐĂďŽƵƚƐĐƌŝƉƚƐ
^ĞĞǁŚLJǁĞƐŚŽƵůĚƵƐĞηŝŶƐƚĞĂĚŽĨhŶŝƚLJ^ĐƌŝƉƚ
/ŶƚƌŽĚƵĐĞhŶŝƚLJΖƐĚŽĐƵŵĞŶƚĂƟŽŶĨŽƌƐĐƌŝƉƟŶŐ
>ĞĂƌŶŚŽǁhŶŝƚLJĂŶĚƚŚĞDŽŶŽĞǀĞůŽƉĞĚŝƚŽƌǁŽƌŬƚŽŐĞƚŚĞƌ
>ĞƚΖƐďĞŐŝŶŽƵƌũŽƵƌŶĞLJďLJĞůŝŵŝŶĂƟŶŐĂŶLJĂŶdžŝĞƚLJĂďŽƵƚǁƌŝƟŶŐƐĐƌŝƉƚƐĨŽƌhŶŝƚLJ͕ ĂŶĚďĞĐŽŵĞĨĂŵŝůŝĂƌǁŝƚŚŽƵƌƐĐƌŝƉƟŶŐĞŶǀŝƌŽŶŵĞŶƚ͘ ŝƐĐŽǀĞƌŝŶŐzŽƵƌ,ŝĚĚĞŶ^ĐƌŝƉƟŶŐ^ŬŝůůƐ 3UHUHTXLVLWHNQRZOHGJHIRUXVLQJWKLVERRN 'ƌĞĂƚŶĞǁƐŝĨLJŽƵĂƌĞĂƐĐƌŝƉƟŶŐďĞŐŝŶŶĞƌ͊dŚŝƐŬŝƐĨŽƌƚŚŽƐĞǁŝƚŚĂďƐŽůƵƚĞůLJŶŽ ŬŶŽǁůĞĚŐĞŽĨƉƌŽŐƌĂŵŵŝŶŐ͘/ƚŝƐĚĞǀŽƚĞĚƚŽƚĞĂĐŚŝŶŐƚŚĞďĂƐŝĐƐŽĨηǁŝƚŚhŶŝƚLJ͘
,ŽǁĞǀĞƌ͕ƐŽŵĞŬŶŽǁůĞĚŐĞŽĨhŶŝƚLJΖƐŽƉĞƌĂƟŽŶŝƐƌĞƋƵŝƌĞĚ͘/ǁŝůůŽŶůLJďĞĐŽǀĞƌŝŶŐƚŚĞƉĂƌƚƐ ŽĨƚŚĞhŶŝƚLJŝŶƚĞƌĨĂĐĞƚŚĂƚĂƌĞƌĞůĂƚĞĚƚŽǁƌŝƟŶŐηĐŽĚĞ͘/ĂŵĂƐƐƵŵŝŶŐƚŚĂƚLJŽƵŬŶŽǁLJŽƵƌ
ǁĂLJĂƌŽƵŶĚhŶŝƚLJΖƐŝŶƚĞƌĨĂĐĞ͕ŚŽǁƚŽǁŽƌŬǁŝƚŚ'ĂŵĞKďũĞĐƚƐŝŶLJŽƵƌ ^ĐĞŶĞ ͕ĂŶĚŚŽǁƚŽ
> + : 9 2 A / @ 2 1 A D
ŽŵƉŽŶĞŶƚƐ ĂŶĚǀŝĞǁƚŚĞŝƌ WƌŽƉĞƌƟĞƐ
Dealing with scriptphobia zŽƵΖǀĞŐŽƚhŶŝƚLJƵƉĂŶĚƌƵŶŶŝŶŐ͕ƐƚƵĚŝĞĚƚŚĞŝŶƚĞƌĨĂĐĞ͕ĂĚĚĞĚƐŽŵĞ'ĂŵĞKďũĞĐƚƐƚŽƚŚĞ
^ĐĞŶĞ͘EŽǁLJŽƵΖƌĞƌĞĂĚLJƚŽŚĂǀĞƚŚŽƐĞ'ĂŵĞKďũĞĐƚƐŵŽǀĞĂƌŽƵŶĚ͕ůŝƐƚĞŶ͕ƐƉĞĂŬ͕ƉŝĐŬƵƉ
+ 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
ĂŶĚŶŽƚŚŝŶŐŚĂƉƉĞŶƐ͘tĞůůĚĂƌŶŝƚĂůůĂŶLJǁĂLJ͘ zŽƵũƵƐƚůĞĂƌŶĞĚĂďŝŐůĞƐƐŽŶ͕ĂůůƚŚŽƐĞĨĂŶƚĂƐƟĐ͕ŚŝŐŚůLJĚĞƚĂŝůĞĚ'ĂŵĞKďũĞĐƚƐĂƌĞĚƵŵďĞƌ ƚŚĂŶĂŚĂŵŵĞƌ͘dŚĞLJĚŽŶΖƚŬŶŽǁĂŶLJƚŚŝŶŐ͕ĂŶĚƚŚĞLJƐƵƌĞĚŽŶΖƚŬŶŽǁŚŽǁƚŽĚŽĂŶLJƚŚŝŶŐ͘
^ŽLJŽƵƉƌŽĐĞĞĚƚŽƌĞĂĚƚŚĞhŶŝƚLJĨŽƌƵŵƐ͕ƐƚƵĚLJƐŽŵĞƐĐƌŝƉƟŶŐƚƵƚŽƌŝĂůƐ͕ŵĂLJďĞĞǀĞŶĐŽƉLJ ĂŶĚƉĂƐƚĞƐŽŵĞƐĐƌŝƉƚƐƚŽŐĞƚƐŽŵĞĂĐƟŽŶŐŽŝŶŐǁŚĞŶLJŽƵƉƌĞƐƐWůĂLJ͘dŚĂƚΖƐŐƌĞĂƚ͕ďƵƚƚŚĞŶ LJŽƵƌĞĂůŝnjĞLJŽƵĚŽŶΖƚƵŶĚĞƌƐƚĂŶĚĂŶLJƚŚŝŶŐŝŶƚŚĞƐĐƌŝƉƚƐLJŽƵΖǀĞĐŽƉŝĞĚ͘^ƵƌĞ͕LJŽƵƉƌŽďĂďůLJ
ƌĞĐŽŐŶŝnjĞƚŚĞǁŽƌĚƐ͕ďƵƚLJŽƵĨĂŝůƚŽƵŶĚĞƌƐƚĂŶĚǁŚĂƚƚŚŽƐĞǁŽƌĚƐĚŽŽƌŵĞĂŶŝŶĂƐĐƌŝƉƚ͘/ƚ
E A A > ? > / ; A 0 / = = A . /? 1 D zŽƵůŽŽŬĂƚƚŚĞĐŽĚĞ͕LJŽƵƌƉĂůŵƐŐĞƚƐǁĞĂƚLJ͕ĂŶĚLJŽƵƚŚŝŶŬƚŽLJŽƵƌƐĞůĨ͕Η'ĞĞnj͕/ΖůůŶĞǀĞƌďĞ ĂďůĞƚŽǁƌŝƚĞƐĐƌŝƉƚƐ͊ΗWĞƌŚĂƉƐLJŽƵŚĂǀĞ ƐĐƌŝƉƚƉŚŽďŝĂ ͗ƚŚĞĨĞĂƌŽĨŶŽƚďĞŝŶŐĂďůĞƚŽǁƌŝƚĞ ŝŶƐƚƌƵĐƟŽŶƐ;/ŵĂĚĞƚŚĂƚƵƉͿ͘/ƐƚŚĂƚǁŚĂƚLJŽƵŚĂǀĞ͍ dŚĞĨĞĂƌƚŚĂƚLJŽƵĐĂŶŶŽƚǁƌŝƚĞĚŽǁŶŝŶƐƚƌƵĐƟŽŶƐŝŶĂĐŽŚĞƌĞŶƚŵĂŶŶĞƌ͍zŽƵŵĂLJďĞůŝĞǀĞ LJŽƵŚĂǀĞƚŚŝƐĂŋŝĐƟŽŶ͕ďƵƚLJŽƵĚŽŶΖƚ͘zŽƵŽŶůLJƚŚŝŶŬLJŽƵĚŽ͘ dŚĞďĂƐŝĐƐŽĨǁƌŝƟŶŐĐŽĚĞĂƌĞƋƵŝƚĞƐŝŵƉůĞ͘/ŶĨĂĐƚ͕LJŽƵĚŽƚŚŝŶŐƐĞǀĞƌLJĚĂLJƚŚĂƚĂƌĞũƵƐƚůŝŬĞ ƚŚĞƐƚĞƉƐĞdžĞĐƵƚĞĚŝŶĂƐĐƌŝƉƚ͘&ŽƌĞdžĂŵƉůĞ͕ĚŽLJŽƵŬŶŽǁŚŽǁƚŽŝŶƚĞƌĂĐƚǁŝƚŚŽƚŚĞƌƉĞŽƉůĞ͍ ,ŽǁƚŽŽƉĞƌĂƚĞĂĐŽŵƉƵƚĞƌ͍ŽLJŽƵĨƌĞƚƐŽŵƵĐŚĂďŽƵƚŵĂŬŝŶŐĂďĂůŽŶĞLJƐĂŶĚǁŝĐŚƚŚĂƚ LJŽƵŚĂǀĞƚŽŐŽƚŽĂŶŽŶůŝŶĞĨŽƌƵŵĂŶĚĂƐŬŚŽǁƚŽĚŽŝƚ͍
KĨĐŽƵƌƐĞLJŽƵĚŽŶΖƚ͘/ŶĨĂĐƚ͕LJŽƵŬŶŽǁƚŚĞƐĞƚŚŝŶŐƐĂƐΗĞǀĞƌLJĚĂLJƌŽƵƟŶĞƐΗ͕ŽƌŵĂLJďĞĂƐ ŚĂďŝƚƐ͘dŚŝŶŬĨŽƌĂŵŽŵĞŶƚ͕ĚŽLJŽƵŚĂǀĞƚŽĐŽŶƐĐŝŽƵƐůLJƚŚŝŶŬĂďŽƵƚƚŚĞƐĞƌŽƵƟŶĞƐLJŽƵ ĚŽĞǀĞƌLJĚĂLJ͍WƌŽďĂďůLJŶŽƚ͘ŌĞƌLJŽƵĚŽƚŚĞŵŽǀĞƌĂŶĚŽǀĞƌ͕ƚŚĞLJďĞĐŽŵĞĂƵƚŽŵĂƟĐ͘
[ 8 ]
Ä ¾ Æ Á ä dŚĞƉŽŝŶƚŝƐ͕LJŽƵĚŽƚŚŝŶŐƐĞǀĞƌLJĚĂLJĨŽůůŽǁŝŶŐƐĞƋƵĞŶĐĞƐŽĨƐƚĞƉƐ͘tŚŽĐƌĞĂƚĞĚƚŚĞƐĞƐƚĞƉƐ LJŽƵĨŽůůŽǁ͍DŽƌĞƚŚĂŶůŝŬĞůLJLJŽƵĚŝĚ͕ǁŚŝĐŚŵĞĂŶƐLJŽƵΖǀĞďĞĞŶƐĐƌŝƉƟŶŐLJŽƵƌǁŚŽůĞůŝĨĞ͘ zŽƵũƵƐƚŶĞǀĞƌŚĂĚƚŽǁƌŝƚĞĚŽǁŶƚŚĞƐƚĞƉƐ͕ĨŽƌLJŽƵƌĚĂŝůLJƌŽƵƟŶĞƐ͕ŽŶĂƉŝĞĐĞŽĨƉĂƉĞƌ ďĞĨŽƌĞĚŽŝŶŐƚŚĞŵ͘zŽƵĐŽƵůĚǁƌŝƚĞƚŚĞƐƚĞƉƐĚŽǁŶŝĨLJŽƵƌĞĂůůLJǁĂŶƚĞĚƚŽ͕ďƵƚŝƚƚĂŬĞƐ ƚŽŽŵƵĐŚƟŵĞĂŶĚƚŚĞƌĞΖƐŶŽŶĞĞĚ͘ƵƚLJŽƵĚŽ͕ŝŶĨĂĐƚ͕ŬŶŽǁŚŽǁƚŽ͘tĞůů͕ŐƵĞƐƐǁŚĂƚ͍ dŽǁƌŝƚĞƐĐƌŝƉƚƐ͕LJŽƵŽŶůLJŚĂǀĞƚŽŵĂŬĞŽŶĞƐŵĂůůĐŚĂŶŐĞ͕ƐƚĂƌƚǁƌŝƟŶŐĚŽǁŶƚŚĞƐƚĞƉƐ͘ EŽƚĨŽƌLJŽƵƌƐĞůĨďƵƚĨŽƌƚŚĞǁŽƌůĚLJŽƵΖƌĞĐƌĞĂƟŶŐŝŶhŶŝƚLJ͘
^ŽLJŽƵƐĞĞ͕LJŽƵĂƌĞĂůƌĞĂĚLJĨĂŵŝůŝĂƌǁŝƚŚƚŚĞĐŽŶĐĞƉƚŽĨĚĞĂůŝŶŐǁŝƚŚƐĐƌŝƉƚƐ͘DŽƐƚďĞŐŝŶŶĞƌƐ ƚŽhŶŝƚLJĞĂƐŝůLJůĞĂƌŶƚŚĞŝƌǁĂLJĂƌŽƵŶĚƚŚĞhŶŝƚLJŝŶƚĞƌĨĂĐĞ͕ŚŽǁƚŽĂĚĚĂƐƐĞƚƐ͕ĂŶĚǁŽƌŬŝŶ ƚŚĞ^ĐĞŶĞĂŶĚ,ŝĞƌĂƌĐŚLJǁŝŶĚŽǁƐ͘dŚĞŝƌƉƌŝŵĂƌLJĨĞĂƌ͕ĂŶĚƌŽĂĚďůŽĐŬ͕ŝƐƚŚĞŝƌĨĂůƐĞďĞůŝĞĨ ƚŚĂƚƐĐƌŝƉƟŶŐŝƐƚŽŽŚĂƌĚƚŽůĞĂƌŶ͘
ZĞůĂdž͊zŽƵŶŽǁŚĂǀĞƚŚŝƐŬ͘/ĂŵŐŽŝŶŐƚŽŐĞƚƌĞĂůůLJďĂƐŝĐŝŶƚŚĞďĞŐŝŶŶŝŶŐĐŚĂƉƚĞƌƐ͘
ĂůůƚŚĞŵďĂďLJͲƐƚĞƉƐŝĨLJŽƵǁĂŶƚ͕ďƵƚLJŽƵǁŝůůƐĞĞƚŚĂƚƐĐƌŝƉƟŶŐĨŽƌhŶŝƚLJŝƐƐŝŵŝůĂƌƚŽĚŽŝŶŐ
1 / @ 0 ? - + < 2 ĂůƌĞĂĚLJĚŽĞǀĞƌLJĚĂLJ͘/ΖŵƐƵƌĞLJŽƵǁŝůůŚĂǀĞŵĂŶLJΗŚͲ,ĂΗŵŽŵĞŶƚƐĂƐLJŽƵůĞĂƌŶ ĂŶĚŽǀĞƌĐŽŵĞLJŽƵƌƵŶũƵƐƟĮĞĚĨĞĂƌƐĂŶĚďĞůŝĞĨƐ͘
Teaching behaviors to GameObjects zŽƵŚĂǀĞhŶŝƚLJďĞĐĂƵƐĞLJŽƵǁĂŶƚƚŽŵĂŬĞĂŐĂŵĞŽƌƐŽŵĞƚŚŝŶŐŝŶƚĞƌĂĐƟǀĞ͘zŽƵΖǀĞĮůůĞĚLJŽƵƌ ŐĂŵĞĨƵůůŽĨĚƵŵď'ĂŵĞKďũĞĐƚƐ͘tŚĂƚLJŽƵŚĂǀĞƚŽĚŽŶŽǁŝƐďĞƚŚĞŝƌƚĞĂĐŚĞƌ͘zŽƵŚĂǀĞƚŽ ƚĞĂĐŚƚŚĞŵĞǀĞƌLJƚŚŝŶŐƚŚĞLJŶĞĞĚƚŽŬŶŽǁƚŽůŝǀĞŝŶƚŚŝƐŵĂŬĞͲďĞůŝĞǀĞǁŽƌůĚ͘dŚŝƐƚŚĞƉĂƌƚ ǁŚĞƌĞLJŽƵŚĂǀĞƚŽǁƌŝƚĞĚŽǁŶƚŚĞŝŶƐƚƌƵĐƟŽŶƐƐŽƚŚĂƚLJŽƵƌ'ĂŵĞKďũĞĐƚƐĐĂŶďĞƐŵĂƌƚĞƌ͘
,ĞƌĞΖƐĂƋƵŽƚĞĨƌŽŵƚŚĞhŶŝƚLJDĂŶƵĂů͗
dŚĞ ďĞŚĂǀŝŽƌ ŽĨ'ĂŵĞKďũĞĐƚƐŝƐĐŽŶƚƌŽůůĞĚďLJƚŚĞ ŽŵƉŽŶĞŶƚƐ ƚŚĂƚĂƌĞĂƩĂĐŚĞĚ ƚŽƚŚĞŵ͘͘͘hŶŝƚLJĂůůŽǁƐLJŽƵƚŽĐƌĞĂƚĞLJŽƵƌŽǁŶ ŽŵƉŽŶĞŶƚƐ ƵƐŝŶŐƐĐƌŝƉƚƐ͘
EŽƟĐĞƚŚĂƚǁŽƌĚ͕ďĞŚĂǀŝŽƌ͘/ƚƌĞŵŝŶĚƐŵĞŽĨĂƉĂƌĞŶƚƚĞĂĐŚŝŶŐĂĐŚŝůĚƉƌŽƉĞƌďĞŚĂǀŝŽƌ͘ dŚŝƐŝƐĞdžĂĐƚůLJǁŚĂƚǁĞĂƌĞŐŽŝŶŐƚŽĚŽǁŚĞŶǁĞǁƌŝƚĞƐĐƌŝƉƚƐĨŽƌŽƵƌ'ĂŵĞKďũĞĐƚƐ͕ǁĞΖƌĞ ƚĞĂĐŚŝŶŐƚŚĞŵƚŚĞďĞŚĂǀŝŽƌƐǁĞǁĂŶƚƚŚĞŵƚŽŚĂǀĞ͘dŚĞďĞƐƚƉĂƌƚŝƐ͕hŶŝƚLJŚĂƐƉƌŽǀŝĚĞĚ ĂďŝŐůŝƐƚŽĨĂůůƚŚĞďĞŚĂǀŝŽƌƐǁĞĐĂŶŐŝǀĞƚŽŽƵƌ'ĂŵĞKďũĞĐƚƐ͘dŚŝƐůŝƐƚŽĨďĞŚĂǀŝŽƌƐŝƐ ĚŽĐƵŵĞŶƚĞĚŝŶƚŚĞ^ĐƌŝƉƟŶŐZĞĨĞƌĞŶĐĞ͘ dŚŝƐŵĞĂŶƐǁĞĐĂŶƉŝĐŬĂŶĚĐŚŽƐĞ͕ĨƌŽŵƚŚŝƐůŝƐƚŽĨďĞŚĂǀŝŽƌƐĂŶLJƚŚŝŶŐǁĞǁĂŶƚĂ 'ĂŵĞKďũĞĐƚƚŽĚŽ͘hŶŝƚLJŚĂƐĚŽŶĞĂůůƚŚĞŚĂƌĚǁŽƌŬŽĨƉƌŽŐƌĂŵŵŝŶŐĂůůƚŚĞƐĞďĞŚĂǀŝŽƌƐ ĨŽƌLJŽƵ͘ůůǁĞŶĞĞĚƚŽĚŽŝƐƵƐĞĂůŝƩůĞĐŽĚĞƚŽƟĞŝŶƚŽƚŚĞƐĞďĞŚĂǀŝŽƌƐ͘ŝĚLJŽƵĐĂƚĐŚƚŚĂƚ͍ hŶŝƚLJŚĂƐĂůƌĞĂĚLJĐƌĞĂƚĞĚƚŚĞďĞŚĂǀŝŽƌƐ͕ĂůůǁĞŚĂǀĞƚŽĚŽŝƐƐƵƉƉůLJĂůŝƩůĞďŝƚŽĨηĐŽĚĞƚŽ ĂƉƉůLJƚŚĞƐĞďĞŚĂǀŝŽƌƐƚŽŽƵƌ'ĂŵĞKďũĞĐƚƐ͘EŽǁƌĞĂůůLJ͕ŚŽǁĚŝĸĐƵůƚĐĂŶŝƚďĞƐŝŶĐĞhŶŝƚLJŚĂƐ ĂůƌĞĂĚLJĚŽŶĞŵŽƐƚŽĨƚŚĞƉƌŽŐƌĂŵŵŝŶŐ͍
[ 9 ] ŝƐĐŽǀĞƌŝŶŐzŽƵƌ,ŝĚĚĞŶ^ĐƌŝƉƟŶŐ^ŬŝůůƐ &KRRVLQJWRXVH&LQVWHDGRI8QLW\6FULSW ^ŽǁŚLJĐŚŽŽƐĞηƚŽĐƌĞĂƚĞƚŚŝƐĐŽĚĞ͍dŚŝƐŵĂLJďĞĂŌĞƌͲƚŚĞͲĨĂĐƚŝŶĨŽƌŵĂƟŽŶĨŽƌLJŽƵŝĨ LJŽƵΖǀĞĂůƌĞĂĚLJĂĐƋƵŝƌĞĚƚŚŝƐŬĂŶĚĐŚŽƐĞŶƚŽƵƐĞη͕ďƵƚƚŚĞƐĞĂƌĞǀĂůƵĂďůĞƉŽŝŶƚƐ ƚŽŬŶŽǁĂŶLJǁĂLJ͗
5HDVRQIRUFKRRVLQJ&²YDVWDPRXQWRIGRFXPHQWDWLRQ
on the Internet
9 B A 9 > + + ; 9 2
& ƚŚĞĨŽůůŽǁŝŶŐďƵůůĞƚůŝƐƚ͕ŝƚǁŝůůŚĞůƉLJŽƵƵŶĚĞƌƐƚĂŶĚƚŚĞƌĞĂƐŽŶ
E + . : 1 + + ? / @ 0 * I
ηŝƐĂǁĞůůŬŶŽǁŶĂŶĚĂŚĞĂǀŝůLJƵƐĞĚƉƌŽŐƌĂŵŵŝŶŐůĂŶŐƵĂŐĞĚĞǀĞůŽƉĞĚďLJ DŝĐƌŽƐŽŌĨŽƌĐƌĞĂƟŶŐtŝŶĚŽǁƐĂƉƉůŝĐĂƟŽŶĂŶĚǁĞďͲďĂƐĞĚĂƉƉůŝĐĂƟŽŶƐ͘/ĨLJŽƵ ĞǀĞƌŶĞĞĚƚŽŬŶŽǁĂŶLJƚŚŝŶŐĂďŽƵƚη͕ƐŝŵƉůLJĚŽĂƐĞĂƌĐŚŽŶƚŚĞ/ŶƚĞƌŶĞƚ͘
hŶŝƚLJ^ĐƌŝƉƚŝƐũƵƐƚĂƐĐƌŝƉƟŶŐůĂŶŐƵĂŐĞĚĞƐŝŐŶĞĚƐƉĞĐŝĮĐĂůůLJĨŽƌhŶŝƚLJ͘/ƚΖƐƐŝŵŝůĂƌ ƚŽ:ĂǀĂ^ĐƌŝƉƚ͕LJĞƚŝƚŝƐŶΖƚ͘zŽƵŵĂLJďĞĂďůĞƚŽƐĞĂƌĐŚĨŽƌ:ĂǀĂ^ĐƌŝƉƚƐŽůƵƟŽŶƐŽŶ ƚŚĞǁĞď͕ďƵƚƚŚĞĐŽĚĞŵĂLJŽƌŵĂLJŶŽƚǁŽƌŬǁŝƚŚŝŶƚŚĞĐŽŶĮŶĞƐŽĨhŶŝƚLJǁŝƚŚŽƵƚ ŵŽĚŝĮĐĂƟŽŶ͕ŝĨĂƚĂůů͘
tŚLJƐƚĂƌƚŽīůĞĂƌŶŝŶŐĂůŝŵŝƚĞĚƐĐƌŝƉƟŶŐůĂŶŐƵĂŐĞ͕ƐƉĞĐŝĮĐŽŶůLJƚŽhŶŝƚLJ͕ǁŚĞŶ LJŽƵĐĂŶƵƐĞη͕ĂƚƌƵĞƉƌŽŐƌĂŵŵŝŶŐůĂŶŐƵĂŐĞ͕ĂŶĚĮŶĚŝŶĨŽƌŵĂƟŽŶĞǀĞƌLJǁŚĞƌĞ͍
tŚŽŬŶŽǁƐ͕ŽŶĐĞLJŽƵƐĞĞŚŽǁĞĂƐLJηŝƐ͕ŵĂLJďĞLJŽƵŵŝŐŚƚĚĞĐŝĚĞƚŽĚĞǀĞůŽƉ ĨŽƌtŝŶĚŽǁƐŽƌƚŚĞtĞďƐŽŵĞĚĂLJ͘zŽƵΖůůĂůƌĞĂĚLJŚĂǀĞƚŚĞďĂƐŝĐƐŽĨη͘
KŶĐĞLJŽƵůĞĂƌŶη͕LJŽƵΖůůƉƌĞƩLJŵƵĐŚŬŶŽǁhŶŝƚLJ^ĐƌŝƉƚ͕ƚŽŽ͘
5HDVRQIRUFKRRVLQJ&²ÁH[LELOLW\WRXVH8QLW\VFULSWVDQG
UHJXODU&FRGHÀOHV
- + < 1 9 B A / @ - + < . @ / 2 - 8 . + A : 2 E + > C A .G 2 1 9 2 9 . A @ + 2 @ / 2 - ? : . / , 2 ? G
) ) ŶLJηĮůĞƐ ĂƌĞĂĐĐĞƐƐŝďůĞǁŝƚŚŽƵƚƚŚĞŶĞĞĚŽĨĂƩĂĐŚƚŚĞŵƚŽ'ĂŵĞKďũĞĐƚƐ͘
dŚĞ^ƚĂƚĞDĂĐŚŝŶĞƉƌŽũĞĐƚǁĞǁŝůůĐƌĞĂƚĞĨŽƌƚŚŝƐŬŵĂŬĞƐƵƐĞŽĨηĐŽĚĞ ĮůĞƐƚŚĂƚĂƌĞŶŽƚĂƩĂĐŚĞĚƚŽĂŶLJ'ĂŵĞKďũĞĐƚ͘
/ΖŵŶŽƚƐĂLJŝŶŐLJŽƵĐĂŶΖƚĐƌĞĂƚĞĂ^ƚĂƚĞDĂĐŚŝŶĞďLJƵƐŝŶŐhŶŝƚLJ^ĐƌŝƉƚ͘/ƚΖƐũƵƐƚƐŽ ŵƵĐŚĞĂƐŝĞƌǁŝƚŚη͘ǀĞƌLJhŶŝƚLJ^ĐƌŝƉƚĮůĞŚĂƐƚŽďĞĂƩĂĐŚĞĚƚŽĂ'ĂŵĞKďũĞĐƚ ƚŽǁŽƌŬĂŶĚďĞĂĐĐĞƐƐŝďůĞƚŽŽƚŚĞƌƐĐƌŝƉƚƐ͘ηŽǀĞƌĐŽŵĞƐƚŚŝƐŶĞĐĞƐƐŝƚLJ͘
[ 10 ]
Ä ¾ Æ Á ä
5HDVRQIRUFKRRVLQJ&²FRGLQJUXOHVDUHVSHFLÀF ηŝƐŬŶŽǁŶĂƐĂƐƚƌŝĐƚůLJͲƚLJƉĞĚůĂŶŐƵĂŐĞ͘tŚĂƚĚŽĞƐƚŚŝƐŵĞĂŶƐƚŽLJŽƵ͍
ƐLJŽƵǁƌŝƚĞĐŽĚĞ͕hŶŝƚLJǁŝůůĐĂƚĐŚĐŽĚŝŶŐĞƌƌŽƌƐŝŵŵĞĚŝĂƚĞůLJ͘>ĞĂƌŶŝŶŐĂƐƵďũĞĐƚ ŝƐĂůǁĂLJƐĞĂƐŝĞƌǁŚĞŶƚŚĞƌƵůĞƐĂƌĞƐƉĞĐŝĮĐ͕ĂŶĚŶŽƚƐŽŵĞĨƵnjnjLJΗLJŽƵĐĂŶŝĨLJŽƵ ǁĂŶƚƚŽΗŬŝŶĚŽĨůŽŐŝĐ͘
hŶŝƚLJ^ĐƌŝƉƚŝƐŶŽƚĂƐƚƌŝĐƚůLJͲƚLJƉĞĚůĂŶŐƵĂŐĞ͘zŽƵŚĂǀĞƚŚĞƉŽƚĞŶƟĂůƚŽǁƌŝƚĞĐŽĚĞ ƚŚĂƚŝƐŶŽƚǀĂůŝĚ͕ďƵƚhŶŝƚLJǁŽŶΖƚĐĂƚĐŚƚŚĞĞƌƌŽƌƐƵŶƟůLJŽƵƉƌĞƐƐWůĂLJ͘
&ŝŶĚŝŶŐŵŝƐƚĂŬĞƐĂƐLJŽƵǁƌŝƚĞƚŚĞĐŽĚĞŝƐƐŽŵƵĐŚĞĂƐŝĞƌƚŚĂŶŚĂǀŝŶŐƚŽĚĞĂů ǁŝƚŚƚŚĞŵǁŚĞŶĂƵƐĞƌŚĂƐĨŽƵŶĚƚŚĞŵǁŚĞŶƚŚĞLJΖƌĞƉůĂLJŝŶŐƚŚĞŐĂŵĞ͘
WůĞĂƐĞďĞĂǁĂƌĞ͕ŝƚŝƐĞĂƐLJƚŽĨŽƌĐĞhŶŝƚLJ^ĐƌŝƉƚƚŽďĞƐƚƌŝĐƚůLJͲƚLJƉĞĚ͕ďƵƚŝĨLJŽƵΖƌĞ
+ / @ 0 2 +
0 ĚŽƚŚĂƚ͕ƚŚĞŶLJŽƵŵĂLJĂƐǁĞůůďĞƵƐŝŶŐηĂŶLJǁĂLJ͕ǁŚŝĐŚďƌŝŶŐƐƵƐďĂĐŬ
2 + A 9 ? + @ 6 D "
Maneuvering around Unity's documentation tŚĞŶǁĞďĞŐŝŶǁƌŝƟŶŐƐĐƌŝƉƚƐ͕ǁĞǁŝůůďĞůŽŽŬŝŶŐĂƚhŶŝƚLJΖƐĚŽĐƵŵĞŶƚĂƟŽŶƋƵŝƚĞŽŌĞŶ͕ ƐŽŝƚΖƐďĞŶĞĮĐŝĂůƚŽŬŶŽǁŚŽǁƚŽĂĐĐĞƐƐƚŚĞŝŶĨŽƌŵĂƟŽŶǁĞŶĞĞĚ͘&ŽƌĂŶŽǀĞƌǀŝĞǁŽĨĂ
ƚŽƉŝĐǁĞΖůůƵƐĞƚŚĞ ZĞĨĞƌĞŶĐĞDĂŶƵĂů ͘&ŽƌƐƉĞĐŝĮĐĐŽĚŝŶŐĚĞƚĂŝůƐĂŶĚĞdžĂŵƉůĞƐǁĞΖůůƵƐĞ
1 A D
2 ^ĐƌŝƉƟŶŐZĞĨĞƌĞŶĐĞ
£ © ¤ ¢ û ¥ ú ¥ § ù © ¤ ü § ¨ ú £ £ © ¤ ¤ ¤ ¦ ú ¡ ¢ § ¤ ÿ ý ü £ © ¤
^ĐƌŝƉƟŶŐZĞĨĞƌĞŶĐĞ ǁŽŶΖƚŵĂŬĞƐĞŶƐĞƚŽLJŽƵ͕ǁŚŝĐŚŝƐĞdžƉĞĐƚĞĚĂƚƚŚŝƐƉŽŝŶƚ͘/ŶƚŚĞďĞŐŝŶŶŝŶŐ
ĐŚĂƉƚĞƌƐ͕ĂƐ/ƚĞĂĐŚLJŽƵƚŚĞďĂƐŝĐƐŽĨƉƌŽŐƌĂŵŵŝŶŐ͕ŝƚǁŝůůďĞŶĞĐĞƐƐĂƌLJĨŽƌŵĞ
© ú ÿ ý ÿ ¢ § ú ý ü þ ÿ ¡ ¤ £ ¢ £ ƚŽƵƐĞĂĨĞǁƚŚŝŶŐƐŝŶƚŚĞ ^ĐƌŝƉƟŶŐZĞĨĞƌĞŶĐĞ ÿ
ƚŽhŶŝƚLJΖƐ ŽŶƐŽůĞ ͘&ŽƌŶŽǁ͕ũƵƐƚĐŽƉLJƚŚĞĐŽĚĞ/ƵƐĞďĞĐĂƵƐĞLJŽƵǁŝůůďĞ
§ ¤ ú û ü ý ü þ £ © ¤ ¤ £ ú ý § ý £ § ú £ ¤ û
7LPHIRUDFWLRQ²RSHQLQJWKH5HIHUHQFH0DQXDOGRFXPHQWDWLRQ
IRUWKHWUDQVIRUP&RPSRQHQW
+ 0 A 2 9 E A A > E + .
"
ĂĐĐĞƐƐŝŶŐhŶŝƚLJΖƐĚŽĐƵŵĞŶƚĂƟŽŶĨƌŽŵǁŝƚŚŝŶhŶŝƚLJ͕ǁĞΖůůƵƐĞƚŚĞ !
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 ? +
ĂŵĞƌĂ % dƌĂŶƐĨŽƌŵ
@ 2 1 A 9 @ C 2 1 A
ǁĞΖůůůŽŽŬĂƚƚŚĞĚŽĐƵŵĞŶƚĂƟŽŶĨŽƌ dƌĂŶƐĨŽƌŵ / ZĞĨĞƌĞŶĐĞDĂŶƵĂů ^ĐƌŝƉƟŶŐ
$
% ͘'ĞƫŶŐƚŽƚŚĞŝŶĨŽƌŵĂƟŽŶŝƐƉƌĞƩLJĞĂƐLJ͘ůŝĐŬŽŶƚŚĞƟŶLJŬŝĐŽŶǁŝƚŚƚŚĞ
ƋƵĞƐƟŽŶŵĂƌŬ͘
& '
@ 2 1 A 2 9 = G ? A > A : 2 2 1 A D ! ,ŝĞƌĂƌĐŚLJ DĂŝŶĂŵĞƌĂ
[ 11 ]
ŝƐĐŽǀĞƌŝŶŐzŽƵƌ,ŝĚĚĞŶ^ĐƌŝƉƟŶŐ^ŬŝůůƐ
( '
D > /: ; + @ 2 1 A = + + ; /: + @ E + . 2 1 A * dƌĂŶƐĨŽƌŵ
What just happened? dŚĞǁĞďďƌŽǁƐĞƌŽƉĞŶĞĚƚŚĞ ZĞĨĞƌĞŶĐĞDĂŶƵĂů ƐŚŽǁŝŶŐŝŶĨŽƌŵĂƟŽŶĂďŽƵƚdƌĂŶƐĨŽƌŵ͘
7LPHIRUDFWLRQ²RSHQLQJWKHVFULSWLQJUHIHUHQFH
GRFXPHQWDWLRQIRUWKHWUDQVIRUPFRPSRQHQW
. + F 2 1 A H ZĞĨĞƌĞŶĐĞDĂŶƵĂů ͕ǁĞΖůůŶŽǁŽƉĞŶƚŚĞ ^ĐƌŝƉƟŶŐZĞĨĞƌĞŶĐĞ ĚŽĐƵŵĞŶƚĂƟŽŶĨŽƌƚŚĞ
dƌĂŶƐĨŽƌŵŽŵƉŽŶĞŶƚ D
ó ô
> /: ; 2 1 A > / @ ; * ^ǁŝƚĐŚƚŽ^ĐƌŝƉƟŶŐ ŝŶƚŚĞƵƉƉĞƌƌŝŐŚƚͲŚĂŶĚƐŝĚĞŽĨƚŚĞďƌŽǁƐĞƌǁŝŶĚŽǁ ĂƐƐŚŽǁŶŝŶƚŚĞĨŽůůŽǁŝŶŐƐĐƌĞĞŶƐŚŽƚ͗
[ 12 ]
Ä ¾ Æ Á ä
What just happened?
1 A , 9 0 A / @ 2 1 A dƌĂŶƐĨŽƌŵ ^ĐƌŝƉƟŶŐZĞĨĞƌĞŶĐĞ ŽƉĞŶƐŝŶƚŚĞǁĞďďƌŽǁƐĞƌĂƐƐŚŽǁŶŝŶƚŚĞ ĨŽůůŽǁŝŶŐƐĐƌĞĞŶƐŚŽƚ͗
$UHZHUHDOO\VXSSRVHGWRNQRZDOOWKDWVWXII" ĐƚƵĂůůLJ͕ŶŽ͘dŚĞǁŚŽůĞƌĞĂƐŽŶĨŽƌǁŚLJƚŚĞ^ĐƌŝƉƟŶŐZĞĨĞƌĞŶĐĞĞdžŝƐƚŝƐƐŽǁĞĐĂŶůŽŽŬĨŽƌ ŝŶĨŽƌŵĂƟŽŶĂƐǁĞŶĞĞĚŝƚ͘tŚŝĐŚǁŝůůĂĐƚƵĂůůLJŚĂƉƉĞŶƵƐƚŽƌĞŵĞŵďĞƌƚŚĞĐŽĚĞǁĞĚŽ ŽǀĞƌĂŶĚŽǀĞƌ͕ũƵƐƚůŝŬĞŽƵƌŽƚŚĞƌĚĂŝůLJƌŽƵƟŶĞƐĂŶĚŚĂďŝƚƐ͘
:KDWLVDOOWKDWLQIRUPDWLRQ" dŚĞƉƌĞǀŝŽƵƐƐĐƌĞĞŶƐŚŽƚƐŚŽǁƐĂĚĞƐĐƌŝƉƟŽŶĂŶĚƐŽŵĞƐĂŵƉůĞĐŽĚĞǁŚŝĐŚƉƌŽďĂďůLJĚŽĞƐŶΖƚ ŵĞĂŶŵƵĐŚƌŝŐŚƚŶŽǁ͘&ĞĂƌŶŽƚ͊zŽƵΖůůĞǀĞŶƚƵĂůůLJďĞĂďůĞƚŽůŽŽŬĂƚƚŚĂƚĂŶĚƐĂLJ͕Η,ĞLJ͕/ŬŶŽǁ ǁŚĂƚƚŚĂƚŵĞĂŶƐ͊Η
[ 13 ] ŝƐĐŽǀĞƌŝŶŐzŽƵƌ,ŝĚĚĞŶ^ĐƌŝƉƟŶŐ^ŬŝůůƐ :RUNLQJZLWK&VFULSWÀOHV hŶƟůLJŽƵůĞĂƌŶƐŽŵĞďĂƐŝĐƉƌŽŐƌĂŵŵŝŶŐĐŽŶĐĞƉƚƐ͕ŝƚΖƐƚŽŽĞĂƌůLJƚŽƐƚƵĚLJŚŽǁƐĐƌŝƉƚƐǁŽƌŬ͕ ďƵƚǁĞƐƟůůŶĞĞĚƚŽŬŶŽǁŚŽǁƚŽĐƌĞĂƚĞŽŶĞ͘
dŚĞƌĞĂƌĞƐĞǀĞƌĂůǁĂLJƐƚŽĐƌĞĂƚĞĂƐĐƌŝƉƚĮůĞƵƐŝŶŐhŶŝƚLJ͗
@ 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 + + *
! ( (
- η^ĐƌŝƉƚ
&ƌŽŵŶŽǁŽŶ͕ǁŚĞŶ/ƚĞůůLJŽƵƚŽĐƌĞĂƚĞĂηƐĐƌŝƉƚ͕ƉůĞĂƐĞ ƵƐĞǁŚŝĐŚĞǀĞƌŵĞƚŚŽĚLJŽƵƉƌĞĨĞƌ͘
7LPHIRUDFWLRQ²FUHDWHD&VFULSWÀOH
? + < . @ / 2 - ) ' ƉƌŽũĞĐƚƉƌŽŐƌĞƐƐĞƐ͕ǁĞǁŝůůŚĂǀĞƐĞǀĞƌĂůĨŽůĚĞƌƐƚŽŽƌŐĂŶŝnjĞĂŶĚƐƚŽƌĞĂůůŽĨ
ŽƵƌηĮůĞƐ͘
ó ô
ƌĞĂƚĞĂŶĞǁhŶŝƚLJƉƌŽũĞĐƚĂŶĚŶĂŵĞŝƚĂƐ State Machine D
õ ô
D / 0 1 2 : > /: ; + @ / @ 2 1 A , 2 9 = 9 @ C : . A 9 2 A 9 E + > C A . @ 9 F A C
" (
-
Code
ö ô
/ 0 1 2 : > /: ; + @ 2 1 A E + > C A . 9 @ C 9 : . A 9 2 A 9 E + > C A . @ 9 F A C D (
" Code Scripts
ô
.
@ 2 1 A E + > C A .G : . A 9 2 A 9 D
! Scripts C# Script
ô
/
2 + D F F A C / 9 2 A > - . A @ 9 F A ! NewBehaviourScript LearningScript
What just happened?
A : . A 9 2 A C + @ A + E 2 1 A ? < = E + > C A . ? G @ 9 F A C Code Scripts͕ƚŚĂƚǁĞǁŝůůďĞƵƐŝŶŐƚŽŽƌŐĂŶŝnjĞ ŽƵƌηĮůĞƐ͘dŚŝƐĨŽůĚĞƌǁŝůůĐŽŶƚĂŝŶĂůůŽĨŽƵƌhŶŝƚLJƐĐƌŝƉƚĮůĞƐ͘>ĂƚĞƌǁĞǁŝůůĐƌĞĂƚĞŽƚŚĞƌη ĮůĞĨŽůĚĞƌƐ͘ tĞĂůƐŽƵƐĞĚhŶŝƚLJƚŽĐƌĞĂƚĞĂηƐĐƌŝƉƚĮůĞŶĂŵĞĚ LearningScript.cs D
[ 14 ]
Ä ¾ Æ Á ä
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 + . ƐƚĂƌƚĞƌηƐĐƌŝƉƚĨŽƌƵƐ͕ǁĞƐƟůůŚĂǀĞƚŽĞĚŝƚƚŚĞƐĐƌŝƉƚ < DŽŶŽĞǀĞůŽƉ ƚŚĂƚΖƐŝŶĐůƵĚĞĚǁŝƚŚhŶŝƚLJ͘
6\QFLQJ&ÀOHVEHWZHHQ0RQR'HYHORSDQG8QLW\
J / @ : A @ / 2 - 9 @ C ) DŽŶŽĞǀĞůŽƉĂƌĞƐĞƉĂƌĂƚĞĂƉƉůŝĐĂƟŽŶƐ͕hŶŝƚLJǁŝůůŬĞĞƉDŽŶŽĞǀĞůŽƉĂŶĚ hŶŝƚLJƐLJŶĐŚƌŽŶŝnjĞĚǁŝƚŚĞĂĐŚŽƚŚĞƌ͘dŚŝƐŵĞĂŶƐƚŚĂƚŝĨLJŽƵĂĚĚ͕ĚĞůĞƚĞ͕ŽƌĐŚĂŶŐĞĂƐĐƌŝƉƚ ĮůĞŝŶŽŶĞĂƉƉůŝĐĂƟŽŶ͕ƚŚĞŽƚŚĞƌĂƉƉůŝĐĂƟŽŶǁŝůůƐĞĞƚŚĞĐŚĂŶŐĞƐĂƵƚŽŵĂƟĐĂůůLJ͘
7LPHIRUDFWLRQ²RSHQLQJ/HDUQLQJ6FULSWLQ0RQR'HYHORS
hŶŝƚLJǁŝůůƐLJŶĐŚƌŽŶŝnjĞǁŝƚŚDŽŶŽĞǀĞůŽƉƚŚĞĮƌƐƚƟŵĞLJŽƵƚĞůůhŶŝƚLJƚŽŽƉĞŶĂĮůĞĨŽƌĞĚŝƟŶŐ͘
@ 2 1 A E + > C A . D
dŚĞƐŝŵƉůĞƐƚǁĂLJƚŽĚŽƚŚŝƐŝƐũƵƐƚĚŽƵďůĞͲĐůŝĐŬŽŶ LearningScript / Scripts
ó ô /ŶhŶŝƚLJΖƐWƌŽũĞĐƚƚĂď͕ĚŽƵďůĞͲĐůŝĐŬŽŶ LearningScript I
What just happened?
, A @ G . A 9 C - 2 + A C / 2 D DŽŶŽĞǀĞůŽƉƐƚĂƌƚĞĚǁŝƚŚ LearningScript +
[ 15 ] ŝƐĐŽǀĞƌŝŶŐzŽƵƌ,ŝĚĚĞŶ^ĐƌŝƉƟŶŐ^ŬŝůůƐ :DWFKLQJIRUDSRVVLEOHJRWFKDZKHQFUHDWLQJVFULSWÀOHV in Unity EŽƟĐĞůŝŶĞϰŝŶƚŚĞƉƌĞǀŝŽƵƐƐĐƌĞĞŶƐŚŽƚ͗
public class LearningScript : MonoBehaviour
D 1 /? 1 A : > 9 ? ? @ 9 F A LearningScriptŝƐƚŚĞƐĂŵĞĂƐƚŚĞĮůĞŶĂŵĞ LearningScript.cs ŝƐĂƌĞƋƵŝƌĞŵĞŶƚ͘zŽƵƉƌŽďĂďůLJĚŽŶΖƚŬŶŽǁǁŚĂƚĂĐůĂƐƐŝƐLJĞƚ͕ƚŚĂƚΖƐŽŬ͘:ƵƐƚƌĞŵĞŵďĞƌƚŚĂƚ
ƚŚĞĮůĞŶĂŵĞĂŶĚƚŚĞĐůĂƐƐŶĂŵĞŵƵƐƚďĞƚŚĞƐĂŵĞ͘
, 2 9 = G /? / @ C / 2 F + C A G
-
tŚĞŶLJŽƵĐƌĞĂƚĞĂηƐĐƌŝƉƚĮůĞŝŶhŶŝƚLJ͕ƚŚĞĮůĞŶĂŵĞ͕ŝŶƚŚĞ
. 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 !
ƚŚĞĮůĞŶĂŵĞĂŶĚƚŚĞĐůĂƐƐŶĂŵĞǁŽŶΖƚŵĂƚĐŚ͘dŚĞĮůĞŶĂŵĞǁŽƵůĚĐŚĂŶŐĞ͕ďƵƚůŝŶĞϰǁŽƵůĚ
= A 2 1 /? I
public class NewBehaviourScript : MonoBehaviour dŚŝƐĐĂŶĞĂƐŝůLJďĞĮdžĞĚŝŶDŽŶŽĞǀĞůŽƉďLJĐŚĂŶŐŝŶŐ NewBehaviourScriptŽŶůŝŶĞϰƚŽƚŚĞ ƐĂŵĞŶĂŵĞĂƐƚŚĞĮůĞŶĂŵĞ͕ďƵƚŝƚΖƐŵƵĐŚƐŝŵƉůĞƌƚŽĚŽƚŚĞƌĞŶĂŵŝŶŐŝŶhŶŝƚLJŝŵŵĞĚŝĂƚĞůLJ͘
)L[LQJV\QFLILWLVQ WZRUNLQJSURSHUO\ ^ŽǁŚĂƚŚĂƉƉĞŶƐǁŚĞŶDƵƌƉŚLJΖƐ>ĂǁƐƚƌŝŬĞƐĂŶĚƐLJŶĐŝŶŐũƵƐƚĚŽĞƐŶΖƚƐĞĞŵƚŽďĞǁŽƌŬŝŶŐ ĐŽƌƌĞĐƚůLJ͍^ŚŽƵůĚƚŚĞƚǁŽĂƉƉƐƐŽŵĞŚŽǁŐĞƚŽƵƚͲŽĨͲƐLJŶĐĂƐLJŽƵƐǁŝƚĐŚďĂĐŬͲĂŶĚͲĨŽƌƚŚ
ďĞƚǁĞĞŶƚŚĞƚŚĞŵ͕ĨŽƌǁŚĂƚĞǀĞƌƌĞĂƐŽŶ͕ĚŽƚŚŝƐ͗
, D
- ZŝŐŚƚͲĐůŝĐŬŽŶhŶŝƚLJΖƐ ǁŝŶĚŽǁĂŶĚƐĞůĞĐƚ ^LJŶĐDŽŶŽĞǀĞůŽƉWƌŽũĞĐƚ DŽŶŽĞǀĞůŽƉǁŝůůƌĞͲƐLJŶĐǁŝƚŚhŶŝƚLJ͘
3RSTXL]²GHDOLQJZLWKVFULSWV Yϭ͘ƐĂďĞŐŝŶŶĞƌ͕ǁŚĂƚΖƐƚŚĞďŝŐŐĞƐƚŽďƐƚĂĐůĞƚŽďĞŽǀĞƌĐŽŵĞƚŽďĞĂďůĞƚŽǁƌŝƚĞηĐŽĚĞ͍
YϮ͘dŚĞ^ĐƌŝƉƟŶŐZĞĨĞƌĞŶĐĞƐƵƉƉůŝĞƐĞdžĂŵƉůĞĐŽĚĞĂŶĚĂƐŚŽƌƚĚĞƐĐƌŝƉƟŽŶŽĨǁŚĂƚƚŚĞĐŽĚĞ ĚŽĞƐ͘tŚĂƚĚŽLJŽƵƵƐĞƚŽŐĞƚĨƵůůĚĞƚĂŝůĞĚĚĞƐĐƌŝƉƟŽŶƐŽĨhŶŝƚLJΖƐŽŵƉŽŶĞŶƚƐĂŶĚĨĞĂƚƵƌĞƐ͍
Yϯ͘dŚĞ^ĐƌŝƉƟŶŐZĞĨĞƌĞŶĐĞŝƐĂůĂƌŐĞĚŽĐƵŵĞŶƚ͘,ŽǁŵƵĐŚŝƚƐŚŽƵůĚLJŽƵŬŶŽǁďĞĨŽƌĞ ĂƩĞŵƉƟŶŐƚŽǁƌŝƚĞĂŶLJƐĐƌŝƉƚƐ͍
Yϰ͘tŚĞŶĐƌĞĂƟŶŐĂƐĐƌŝƉƚĮůĞŝŶhŶŝƚLJ͕ǁŚĞŶŝƐƚŚĞďĞƐƚƟŵĞƚŽŶĂŵĞƚŚĞƐĐƌŝƉƚĮůĞ͍
[ 16 ]
Ä ¾ Æ Á ä
Summary dŚŝƐĐŚĂƉƚĞƌƚƌŝĞĚƚŽƉƵƚLJŽƵĂƚĞĂƐĞĂďŽƵƚǁƌŝƟŶŐƐĐƌŝƉƚƐĨŽƌhŶŝƚLJ͘zŽƵĚŽŚĂǀĞƚŚĞĂďŝůŝƚLJ ƚŽǁƌŝƚĞĚŽǁŶŝŶƐƚƌƵĐƟŽŶƐǁŚŝĐŚŝƐĂůůĂƐĐƌŝƉƚŝƐ͕ĂƐĞƋƵĞŶĐĞŽĨŝŶƐƚƌƵĐƟŽŶƐ͘tĞƐĂǁŚŽǁ ƐŝŵƉůĞŝƚŝƐƚŽĐƌĞĂƚĞĂŶĞǁƐĐƌŝƉƚĮůĞ͘zŽƵƉƌŽďĂďůLJĐƌĞĂƚĞĮůĞƐŽŶLJŽƵƌĐŽŵƉƵƚĞƌĂůůƚŚĞ ƟŵĞ͘tĞƐĂǁŚŽǁƚŽĞĂƐŝůLJďƌŝŶŐƵƉhŶŝƚLJΖƐĚŽĐƵŵĞŶƚĂƟŽŶ͘&ŝŶĂůůLJǁĞŚĂĚĂůŽŽŬĂƚƚŚĞ DŽŶŽĞǀĞůŽƉĞĚŝƚŽƌ͘EŽŶĞŽĨƚŚŝƐǁĂƐĐŽŵƉůŝĐĂƚĞĚ͘/ŶĨĂĐƚ͕LJŽƵƉƌŽďĂďůLJƵƐĞĂƉƉƐĂůůƚŚĞ ƟŵĞƚŚĂƚĚŽƐŝŵŝůĂƌƚŚŝŶŐƐ͘ŽƩŽŵůŝŶĞ͕ƚŚĞƌĞΖƐŶŽƚŚŝŶŐƚŽĨĞĂƌŚĞƌĞ͘
ůƌŝŐŚƚ͕ůĞƚΖƐƐƚĂƌƚŽī ŚĂƉƚĞƌϮ͕/ŶƚƌŽĚƵĐŝŶŐƚŚĞƵŝůĚŝŶŐůŽĐŬƐĨŽƌhŶŝƚLJ^ĐƌŝƉƚƐďLJŚĂǀŝŶŐĂŶ ŝŶƚƌŽĚƵĐƚŽƌLJůŽŽŬĂƚƚŚĞďƵŝůĚŝŶŐďůŽĐŬƐŽĨƉƌŽŐƌĂŵŵŝŶŐǁĞΖůůďĞƵƐŝŶŐ͗ǀĂƌŝĂďůĞƐ͕ŵĞƚŚŽĚƐ͕ Žƚ^LJŶƚĂdž͕ĂŶĚƚŚĞĐůĂƐƐ͘ŽŶΖƚůĞƚƚŚĞƐĞƚĞƌŵƐƐĐĂƌĞLJŽƵ͘dŚĞĐŽŶĐĞƉƚƐďĞŚŝŶĚĞĂĐŚŽŶĞŽĨ ƚŚĞƐĞĂƌĞƐŝŵŝůĂƌƚŽƚŚŝŶŐƐLJŽƵĚŽŽŌĞŶ͕ƉĞƌŚĂƉƐĞǀĞƌLJĚĂLJ͘
[ 17 ]
2 Introducing the Building Blocks IRU8QLW\6FULSWV
ƉƌŽŐƌĂŵŵŝŶŐůĂŶŐƵĂŐĞƐƵĐŚĂƐηĐĂŶĂƉƉĞĂƌƚŽďĞǀĞƌLJĐŽŵƉůŝĐĂƚĞĚĂƚ ĨŝƌƐƚďƵƚŝŶƌĞĂůŝƚLJ͕ƚŚĞƌĞĂƌĞƚǁŽƉĂƌƚƐƚŚĂƚĨŽƌŵŝƚƐĨŽƵŶĚĂƚŝŽŶ͘dŚĞƐĞƉĂƌƚƐ ĂƌĞǀĂƌŝĂďůĞƐĂŶĚŵĞƚŚŽĚƐ͘dŚĞƌĞĨŽƌĞ͕ƵŶĚĞƌƐƚĂŶĚŝŶŐƚŚĞƐĞĐƌŝƚŝĐĂůƉĂƌƚƐŝƐĂ ƉƌĞƌĞƋƵŝƐŝƚĞĨŽƌůĞĂƌŶŝŶŐĂŶLJŽĨƚŚĞŽƚŚĞƌĨĞĂƚƵƌĞƐŽĨη͘ĞŝŶŐĂƐĐƌŝƚŝĐĂůĂƐ ƚŚĞLJĂƌĞ͕ƚŚĞLJĂƌĞǀĞƌLJƐŝŵƉůĞĐŽŶĐĞƉƚƐƚŽƵŶĚĞƌƐƚĂŶĚ͘hƐŝŶŐƚŚĞƐĞǀĂƌŝĂďůĞĂŶĚ ŵĞƚŚŽĚĨŽƵŶĚĂƚŝŽŶƉŝĞĐĞƐ͕ǁĞΖůůďĞŝŶƚƌŽĚƵĐĞĚƚŽƚŚĞηďƵŝůĚŝŶŐďůŽĐŬƐƵƐĞĚƚŽ ĐƌĞĂƚĞhŶŝƚLJƐĐƌŝƉƚƐ͘
&ŽƌƚŚŽƐĞƉĞŽƉůĞǁŚŽŐĞƚƐǁĞĂƚLJƉĂůŵƐũƵƐƚƚŚŝŶŬŝŶŐŽĨƚŚĞǁŽƌĚƐĐƌŝƉƚ͕ǁŝƉĞLJŽƵƌŚĂŶĚƐĂŶĚ ƌĞůĂdž͘/ŶƚŚŝƐĐŚĂƉƚĞƌ͕/ΖŵŐŽŝŶŐƚŽƵƐĞƚĞƌŵƐƚŚĂƚĂƌĞĂůƌĞĂĚLJĨĂŵŝůŝĂƌƚŽLJŽƵƚŽŝŶƚƌŽĚƵĐĞƚŚĞ
ďƵŝůĚŝŶŐďůŽĐŬƐŽĨƉƌŽŐƌĂŵŵŝŶŐ͘dŚĞĨŽůůŽǁŝŶŐĂƌĞƚŚĞĐŽŶĐĞƉƚƐŝŶƚƌŽĚƵĐĞĚŝŶƚŚŝƐĐŚĂƉƚĞƌ͗
? / @ 0 B 9 . / 9 = > A ? / @ 9 ? : . / , 2 )
? / @ 0 F A 2 1 + C ? / @ 9 ? : . / , 2 )
dŚĞĐůĂƐƐǁŚŝĐŚŝƐĂĐŽŶƚĂŝŶĞƌĨŽƌǀĂƌŝĂďůĞƐĂŶĚŵĞƚŚŽĚƐ
< . @ / @ 0 9 ? : . / , 2 / @ 2 + 9 * + F , + @ A @ 2
ŽŵƉŽŶĞŶƚƐĐŽŵŵƵŶŝĐĂƟŶŐƵƐŝŶŐƚŚĞŽƚ^LJŶƚĂdž
>ĞƚΖƐŚĂǀĞĂůŽŽŬĂƚƚŚĞƐĞƉƌŝŵĂƌLJĐŽŶĐĞƉƚƐ͘
0
Å Æ ä Â 1 2 å 3 Å 4 Æ Á 5 2 3 À 1 3 Å 4 5 À Â å 6 Ç Ã Â ä 7 Å 3 Æ 8 9 å ä 3 Æ Ç
8VLQJWKHWHUPPHWKRGLQVWHDGRIIXQFWLRQ
@ C
zŽƵĂƌĞĐŽŶƐƚĂŶƚůLJŐŽŝŶŐƚŽƐĞĞƚŚĞǁŽƌĚƐ ĨƵŶĐƟŽŶ 9 ŵĞƚŚŽĚ ƵƐĞĚĞǀĞƌLJǁŚĞƌĞĂƐ
- + < > A 9 . @ @ / 2 - D )
dŚĞǁŽƌĚƐĨƵŶĐƟŽŶĂŶĚŵĞƚŚŽĚƚƌƵůLJŵĞĂŶƚŚĞƐĂŵĞ
£ © ý ü þ ý ü : ü ý £ © ¤ £ © ¤ ÿ ú ¡ ¤ £ © ý ü þ
N
/ @ : A - + < 9 . A ? 2 < C - / @ 0 * G 9 @ C * /? 9 @ > 9 @ 0 < 9 0 A G J KďũĞĐƚͲKƌŝĞŶƚĞĚWƌŽŐƌĂŵŵŝŶŐ ; KKW
/ǁŝůůƵƐĞƚŚĞǁŽƌĚΗŵĞƚŚŽĚΗƚŚƌŽƵŐŚŽƵƚƚŚŝƐŬ͕ũƵƐƚƚŽďĞĐŽŶƐŝƐƚĞŶƚǁŝƚŚηŐƵŝĚĞůŝŶĞƐ͘
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 A ^ĐƌŝƉƟŶŐZĞĨĞƌĞŶĐĞ ƉƌŽďĂďůLJƐŚŽƵůĚŚĂǀĞƵƐĞĚƚŚĞǁŽƌĚ ŵĞƚŚŽĚŝŶƐƚĞĂĚŽĨĨƵŶĐƟŽŶŝŶĂůůĚŽĐƵŵĞŶƚĂƟŽŶ͘
&ƌŽŵŶŽǁŽŶ/ΖŵŐŽŝŶŐƚŽƵƐĞƚŚĞǁŽƌĚƐŵĞƚŚŽĚŽƌŵĞƚŚŽĚƐŝŶƚŚŝƐŬ͘ tŚĞŶ/ƌĞĨĞƌƚŽƚŚĞĨƵŶĐƟŽŶƐƐŚŽǁŶŝŶƚŚĞ ^ĐƌŝƉƟŶŐZĞĨĞƌĞŶĐĞ ͕/ΖŵŐŽŝŶŐƚŽ ƵƐĞƚŚĞǁŽƌĚŵĞƚŚŽĚŝŶƐƚĞĂĚ͕ũƵƐƚƚŽďĞĐŽŶƐŝƐƚĞŶƚƚŚƌŽƵŐŚŽƵƚƚŚŝƐŬ͘
Understanding what a variable does in a script tŚĂƚŝƐĂǀĂƌŝĂďůĞ͍dĞĐŚŶŝĐĂůůLJ͕ŝƚΖƐĂƟŶLJƐĞĐƟŽŶŽĨLJŽƵƌĐŽŵƉƵƚĞƌΖƐŵĞŵŽƌLJƚŚĂƚǁŝůůŚŽůĚ ĂŶLJŝŶĨŽƌŵĂƟŽŶLJŽƵƉƵƚƚŚĞƌĞ͘tŚŝůĞĂŐĂŵĞƌƵŶƐ͕ŝƚŬĞĞƉƐƚƌĂĐŬŽĨǁŚĞƌĞƚŚĞŝŶĨŽƌŵĂƟŽŶ ŝƐƐƚŽƌĞĚ͕ƚŚĞǀĂůƵĞŬĞƉƚƚŚĞƌĞ͕ĂŶĚƚŚĞƚLJƉĞŽĨƚŚĞǀĂůƵĞ͘,ŽǁĞǀĞƌ͕ĨŽƌƚŚŝƐĐŚĂƉƚĞƌ͕ĂůůLJŽƵ ŶĞĞĚƚŽŬŶŽǁŝƐŚŽǁĂǀĂƌŝĂďůĞǁŽƌŬƐŝŶĂƐĐƌŝƉƚ͘/ƚΖƐǀĞƌLJƐŝŵƉůĞ͘
[ 20 ]
Ä ¾ Æ Á ä ; tŚĂƚΖƐƵƐƵĂůůLJŝŶĂŵĂŝůďŽdž͕ďĞƐŝĚĞƐĂŝƌ͍tĞůů͕ƵƐƵĂůůLJƚŚĞƌĞΖƐŶŽƚŚŝŶŐďƵƚŽĐĐĂƐŝŽŶĂůůLJƚŚĞƌĞ
ŝƐƐŽŵĞƚŚŝŶŐŝŶŝƚ͘^ŽŵĞƟŵĞƐƚŚĞƌĞΖƐŵŽŶĞLJ;ĂƉĂLJĐŚĞĐŬͿ͕ďŝůůƐ͕ĂƉŝĐƚƵƌĞĨƌŽŵĂƵŶƚDĂďĞů͕
? , /C A .G
9 ĂŶĚƐŽŽŶ͘dŚĞƉŽŝŶƚŝƐǁŚĂƚΖƐŝŶĂŵĂŝůďŽdžĐĂŶǀĂƌLJ͘dŚĞƌĞĨŽƌĞ͕ůĞƚΖƐĐĂůůĞĂĐŚ
F 9 / > = + ì 9 B 9 . / 9 = > A / @ ? 2 A 9 C D
Naming a variable
? / @ 0 2 1 A , /: 2 < . A + E 2 1 A ) ĐŽƵŶƚƌLJŵĂŝůďŽdžĞƐ͕ŝĨ/ĂƐŬĞĚLJŽƵƚŽƐĞĞǁŚĂƚŝƐŝŶƚŚĞŵĂŝůďŽdž͕ƚŚĞ ĮƌƐƚƚŚŝŶŐLJŽƵΖĚĂƐŬŝƐǁŚŝĐŚŽŶĞ͍/Ĩ/ƐĂŝĚŝŶƚŚĞ^ŵŝƚŚŵĂŝůďŽdž͕ŽƌƚŚĞďƌŽǁŶŵĂŝůďŽdž͕Žƌ ƚŚĞƌŽƵŶĚŵĂŝůďŽdž͕LJŽƵΖĚŬŶŽǁĞdžĂĐƚůLJǁŚŝĐŚŵĂŝůďŽdžƚŽŽƉĞŶƚŽƌĞƚƌŝĞǀĞǁŚĂƚŝƐŝŶƐŝĚĞ͘ ^ŝŵŝůĂƌůLJ͕ŝŶƐĐƌŝƉƚƐ͕LJŽƵŚĂǀĞƚŽŶĂŵĞLJŽƵƌǀĂƌŝĂďůĞƐǁŝƚŚĂƵŶŝƋƵĞŶĂŵĞ͘dŚĞŶ/ĐĂŶĂƐŬ LJŽƵǁŚĂƚΖƐŝŶƚŚĞǀĂƌŝĂďůĞŶĂŵĞĚ myNumber͕ŽƌǁŚĂƚĞǀĞƌĐŽŽůŶĂŵĞLJŽƵŵŝŐŚƚƵƐĞ͘
$YDULDEOHQDPHLVMXVWDVXEVWLWXWHIRUDYDOXH ƐLJŽƵǁƌŝƚĞĂƐĐƌŝƉƚĂŶĚŵĂŬĞĂǀĂƌŝĂďůĞ͕LJŽƵĂƌĞƐŝŵƉůLJĐƌĞĂƟŶŐĂƉůĂĐĞŚŽůĚĞƌŽƌĂ ƐƵďƐƟƚƵƚĞĨŽƌƚŚĞĂĐƚƵĂůŝŶĨŽƌŵĂƟŽŶLJŽƵǁĂŶƚƚŽƵƐĞ͘>ŽŽŬĂƚƚŚĞĨŽůůŽǁŝŶŐƐŝŵƉůĞŵĂƚŚ ĞƋƵĂƟŽŶ͗Ϯнϵсϭϭ
^ŝŵƉůĞĞŶŽƵŐŚ͘EŽǁƚƌLJƚŚĞĨŽůůŽǁŝŶŐĞƋƵĂƟŽŶ͗ϭϭн myNumberс͍͍͍
dŚĞƌĞŝƐŶŽĂŶƐǁĞƌƚŽƚŚŝƐLJĞƚ͘zŽƵĐĂŶΖƚĂĚĚĂŶƵŵďĞƌĂŶĚĂǁŽƌĚ͘'ŽŝŶŐďĂĐŬƚŽƚŚĞ
9 / > = + ì 9 @ 9 > + 0 - G F ǁƌŝƚĞƚŚĞŶƵŵďĞƌϵŽŶĂƉŝĞĐĞŽĨƉĂƉĞƌ͘WƵƚŝƚŝŶƚŚĞŵĂŝůďŽdžŶĂŵĞĚ myNumber͘EŽǁLJŽƵĐĂŶƐŽůǀĞƚŚĞĞƋƵĂƟŽŶ͘tŚĂƚΖƐƚŚĞǀĂůƵĞŝŶ myNumber͍dŚĞǀĂůƵĞ
ŝƐϵ͘^ŽŶŽǁƚŚĞĞƋƵĂƟŽŶůŽŽŬƐŶŽƌŵĂů͗ϭϭнϵсϮϬ
1 A B 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 ;ŝŶĨŽƌŵĂƟŽŶͿ͘^ŽĂŶLJǁŚĞƌĞLJŽƵǁŽƵůĚůŝŬĞƚŚĞŶƵŵďĞƌϵƚŽĂƉƉĞĂƌŝŶLJŽƵƌƐĐƌŝƉƚ͕ũƵƐƚ ǁƌŝƚĞ myNumber͕ĂŶĚƚŚĞŶƵŵďĞƌϵǁŝůůďĞƐƵďƐƟƚƵƚĞĚ͘ ůƚŚŽƵŐŚƚŚŝƐĞdžĂŵƉůĞŵŝŐŚƚƐĞĞŵƐŝůůLJĂƚĮƌƐƚ͕ǀĂƌŝĂďůĞƐĐĂŶƐƚŽƌĞĂůůŬŝŶĚƐŽĨĚĂƚĂƚŚĂƚŝƐ ŵƵĐŚŵŽƌĞĐŽŵƉůĞdžƚŚĂŶĂƐŝŵƉůĞŶƵŵďĞƌ͘dŚŝƐŝƐũƵƐƚĂƐŝŵƉůĞĞdžĂŵƉůĞƚŽƐŚŽǁLJŽƵŚŽǁ ĂǀĂƌŝĂďůĞǁŽƌŬƐ͘
[ 21 ]
0
Å Æ ä Â 1 2 å 3 Å 4 Æ Á 5 2 3 À 1 3 Å 4 5 À Â å 6 Ç Ã Â ä 7 Å 3 Æ 8 9 å ä 3 Æ Ç
7LPHIRUDFWLRQ²FUHDWLQJDYDULDEOHDQGVHHLQJKRZLWZRUNV >ĞƚΖƐƐĞĞŚŽǁƚŚŝƐĂĐƚƵĂůůLJǁŽƌŬƐŝŶŽƵƌƐĐƌŝƉƚ͘ŽŶΖƚďĞĐŽŶĐĞƌŶĞĚĂďŽƵƚƚŚĞĚĞƚĂŝůƐ
ŽĨŚŽǁƚŽǁƌŝƚĞƚŚŝƐ͕ũƵƐƚŵĂŬĞƐƵƌĞLJŽƵƌƐĐƌŝƉƚŝƐƚŚĞƐĂŵĞĂƐƚŚĞƐĐƌŝƉƚƐŚŽǁŶŝŶƚŚĞ
@ A ì 2 ? : . A A @ ? 1 + 2 D
ó ô
@ 2 1 A @ / 2 - , , 9 @ A > G C + < = > A : > /: ; + @ D
! ) (
-
LearningScript
õ ô
/ŶDŽŶŽĞǀĞůŽƉ͕ǁƌŝƚĞƚŚĞůŝŶĞƐϲ͕ϭϭ͕ĂŶĚϭϯĨƌŽŵƚŚĞŶĞdžƚƐĐƌĞĞŶƐŚŽƚ͘
ö ô ^ĂǀĞƚŚĞĮůĞ͘
dŽŵĂŬĞƚŚŝƐƐĐƌŝƉƚǁŽƌŬ͕ŝƚŚĂƐƚŽďĞĂƩĂĐŚĞĚƚŽĂ'ĂŵĞKďũĞĐƚ͘ƵƌƌĞŶƚůLJ͕ŝŶŽƵƌ ^ƚĂƚĞ
< "
! ƉƌŽũĞĐƚǁĞŽŶůLJŚĂǀĞŽŶĞ'ĂŵĞKďũĞĐƚ͕ƚŚĞ DĂŝŶĂŵĞƌĂ ͘dŚŝƐǁŝůůĚŽŶŝĐĞůLJ
/ @ : A 2 1 /? ? : . / , 2 ? ĚŽĞƐŶΖƚĂīĞĐƚƚŚĞ DĂŝŶĂŵĞƌĂ ŝŶĂŶLJǁĂLJ͘dŚĞƐĐƌŝƉƚƐŝŵƉůLJƌƵŶƐďLJ
ǀŝƌƚƵĞŽĨŝƚďĞŝŶŐĂƩĂĐŚĞĚƚŽĂ'ĂŵĞKďũĞĐƚ͘
ó ô
+ @ 2 + 2 1 A D . 9 0
¤ LearningScript DĂŝŶĂŵĞƌĂ
õ ô
J A > A : 2 ? + 2 1 9 2 / 2 9 , , A 9 . ? / @ 2 1 A , 9 @ A > D
DĂŝŶĂŵĞƌĂ
ö ô
sĞƌŝĨLJǁŚĞƚŚĞƌ LearningScriptŝƐĂƩĂĐŚĞĚ͘
ô
.
# , A @ 2 1 A @ / 2 -
) ŽŶƐŽůĞ ƉĂŶĞůƚŽǀŝĞǁƚŚĞŽƵƚƉƵƚŽĨƚŚĞƐĐƌŝƉƚ͘
ô
/
> /: ; + @ D * WůĂLJ
[ 22 ]
Ä ¾ Æ Á ä ; dŚĞƉƌĞĐĞĚŝŶŐƐƚĞƉƐĂƌĞƐŚŽǁŶŝŶƚŚĞĨŽůůŽǁŝŶŐƐĐƌĞĞŶƐŚŽƚ͗
What just happened?
/ŶƚŚĞĨŽůůŽǁŝŶŐ ŽŶƐŽůĞ ƉĂŶĞůŝƐƚŚĞƌĞƐƵůƚŽĨŽƵƌĞƋƵĂƟŽŶƐ͘ƐLJŽƵĐĂŶƐĞĞ͕ƚŚĞĞƋƵĂƟŽŶ
9 . / 9 = > A I ŽŶůŝŶĞϭϯǁŽƌŬĞĚďLJƐƵďƐƟƚƵƟŶŐƚŚĞŶƵŵďĞƌϵĨŽƌƚŚĞ myNumber B
7LPHIRUDFWLRQ²FKDQJLQJWKHQXPEHUWRDGLIIHUHQWQXPEHU
/ @ : A J myNumberŝƐĂǀĂƌŝĂďůĞ͕ƚŚĞǀĂůƵĞŝƚƐƚŽƌĞƐĐĂŶǀĂƌLJ͘/ĨǁĞĐŚĂŶŐĞǁŚĂƚŝƐƐƚŽƌĞĚŝŶŝƚ͕
ƚŚĞĂŶƐǁĞƌƚŽƚŚĞĞƋƵĂƟŽŶǁŝůůĐŚĂŶŐĞƚŽŽ͘&ŽůůŽǁƚŚĞĞŶƐƵŝŶŐƐƚĞƉƐ͗
ó ô
2 + , 2 1 A 0 9 F A 9 @ C : 1 9 @ 0 A 2 + D
J ϵ ϭϵ
õ ô EŽƟĐĞƚŚĂƚǁŚĞŶLJŽƵƌĞƐƚĂƌƚƚŚĞŐĂŵĞ͕ƚŚĞĂŶƐǁĞƌǁŝůůďĞ ϯϬ D
[ 23 ]
0
Å Æ ä Â 1 2 å 3 Å 4 Æ Á 5 2 3 À 1 3 Å 4 5 À Â å 6 Ç Ã Â ä 7 Å 3 Æ 8 9 å ä 3 Æ Ç
What just happened?
zŽƵůĞĂƌŶĞĚƚŚĂƚĂǀĂƌŝĂďůĞǁŽƌŬƐďLJƐŝŵƉůĞƉƌŽĐĞƐƐŽĨƐƵďƐƟƚƵƟŽŶ͘dŚĞƌĞΖƐŶŽƚŚŝŶŐŵŽƌĞƚŽ
/ 2 2 1 9 @ 2 1 9 2 D
+ . 2 1 A 2 - , A ? + E tĞĚŝĚŶΖƚŐĞƚŝŶƚŽƚŚĞĚĞƚĂŝůƐŽĨƚŚĞǁŽƌĚŝŶŐƵƐĞĚƚŽĐƌĞĂƚĞ myNumberG ǀĂƌŝĂďůĞƐLJŽƵĐĂŶĐƌĞĂƚĞ͕ďƵƚƚŚĂƚǁĂƐŶΖƚƚŚĞŝŶƚĞŶƚ͘dŚŝƐǁĂƐũƵƐƚƚŽƐŚŽǁLJŽƵŚŽǁĂǀĂƌŝĂďůĞ
ǁŽƌŬƐ͘/ƚũƵƐƚŚŽůĚƐĚĂƚĂƐŽLJŽƵĐĂŶƵƐĞƚŚĂƚĚĂƚĂĞůƐĞǁŚĞƌĞŝŶLJŽƵƌƐĐƌŝƉƚ͘tĞΖůůŐĞƚŝŶƚŽƚŚĞ
Þ ß à G D
á é ĮŶĞƌĚĞƚĂŝůƐŽĨǀĂƌŝĂďůĞƐŝŶ sĂƌŝĂďůĞƐŝŶĞƚĂŝů
+DYHDJRKHUR²FKDQJLQJWKHYDOXHRIP\1XPEHU
2 + ? + F A + 2 1 A . B 9 > < A G A B A @ 9 @ 2 1 A , 9 @ A > G 2 . - : 1 9 @ 0 / @ 0 2 1 A B 9 > < A + E
!
myNumber ŶĞŐĂƟǀĞǀĂůƵĞ͘EŽƟĐĞƚŚĞĐŚĂŶŐĞŝŶĂŶƐǁĞƌŝŶƚŚĞ ŽŶƐŽůĞ D
Using a method in a script DĞƚŚŽĚƐ ĂƌĞǁŚĞƌĞƚŚĞĂĐƟŽŶŝƐĂŶĚǁŚĞƌĞƚŚĞƚĂƐŬƐĂƌĞƉĞƌĨŽƌŵĞĚ͘'ƌĞĂƚ͕ƚŚĂƚΖƐƌĞĂůůLJŶŝĐĞ ƚŽŬŶŽǁďƵƚǁŚĂƚŝƐĂŵĞƚŚŽĚ͍
What is a method? tŚĞŶǁĞǁƌŝƚĞĂƐĐƌŝƉƚ͕ǁĞĂƌĞŵĂŬŝŶŐůŝŶĞƐŽĨĐŽĚĞƚŚĂƚƚŚĞĐŽŵƉƵƚĞƌŝƐŐŽŝŶŐƚŽĞdžĞĐƵƚĞ͕ ŽŶĞůŝŶĞĂƚĂƟŵĞ͘ƐǁĞǁƌŝƚĞŽƵƌĐŽĚĞ͕ƚŚĞƌĞǁŝůůďĞƚŚŝŶŐƐǁĞǁĂŶƚŽƵƌŐĂŵĞƚŽĞdžĞĐƵƚĞ ŵŽƌĞƚŚĂŶŽŶĐĞ͘&ŽƌĞdžĂŵƉůĞ͕ǁĞĐĂŶǁƌŝƚĞĂĐŽĚĞƚŚĂƚĂĚĚƐƚǁŽŶƵŵďĞƌƐ͘^ƵƉƉŽƐĞŽƵƌ
ŐĂŵĞŶĞĞĚƐƚŽĂĚĚƚŚĞƚǁŽŶƵŵďĞƌƐƚŽŐĞƚŚĞƌĂŚƵŶĚƌĞĚĚŝīĞƌĞŶƚƟŵĞƐĚƵƌŝŶŐƚŚĞŐĂŵĞ͘
+ - + < ? 9 - G J ΗtŽǁ͕/ŚĂǀĞƚŽǁƌŝƚĞƚŚĞƐĂŵĞĐŽĚĞĂŚƵŶĚƌĞĚƟŵĞƐƚŚĂƚĂĚĚƐƚǁŽŶƵŵďĞƌƐ ƚŽŐĞƚŚĞƌ͘dŚĞƌĞŚĂƐƚŽďĞĂďĞƩĞƌǁĂLJ͘Η
>ĞƚĂŵĞƚŚŽĚƚĂŬĞĂǁĂLJLJŽƵƌƚLJƉŝŶŐƉĂŝŶ͘zŽƵũƵƐƚŚĂǀĞƚŽǁƌŝƚĞƚŚĞĐŽĚĞƚŽĂĚĚƚǁŽ
< 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 ? D @ AddTwoNumbers()
EŽǁ͕ĞǀĞƌLJƟŵĞŽƵƌŐĂŵĞŶĞĞĚƐƚŽĂĚĚƚǁŽŶƵŵďĞƌƐ͕ĚŽŶΖƚǁƌŝƚĞƚŚĞĐŽĚĞŽǀĞƌĂŶĚ
B A .G < ? 2 : 9 > > 2 1 A F A 2 1 + C D + AddTwoNumbers()
7LPHIRUDFWLRQ²OHDUQLQJKRZDPHWKRGZRUNV
C / 2 tĞΖƌĞŐŽŝŶŐƚŽ A LearningScriptĂŐĂŝŶ͘/ŶƚŚĞĨŽůůŽǁŝŶŐƐĐƌĞĞŶƐŚŽƚ͕ƚŚĞƌĞĂƌĞĂĨĞǁ
ůŝŶĞƐŽĨĐŽĚĞƚŚĂƚůŽŽŬƐƚƌĂŶŐĞ͘tĞĂƌĞŶŽƚŐŽŝŶŐƚŽŐĞƚŝŶƚŽƚŚĞĚĞƚĂŝůƐŽĨǁŚĂƚƚŚĞLJŵĞĂŶ
Þ ß à G D / 0 1 2
"
á ê ŝŶƚŚŝƐĐŚĂƉƚĞƌ͘tĞǁŝůůĚŝƐĐƵƐƐƚŚĂƚŝŶ 'ĞƫŶŐŝŶƚŽƚŚĞĞƚĂŝůƐŽĨDĞƚŚŽĚƐ
ŶŽǁ͕/ĂŵũƵƐƚƐŚŽǁŝŶŐLJŽƵĂŵĞƚŚŽĚΖƐďĂƐŝĐƐƚƌƵĐƚƵƌĞĂŶĚŚŽǁŝƚǁŽƌŬƐ͗
ó ô
@ + @ + ¤ A B A > + , G ? A > A : 2 #
! LearningScriptĨŽƌĞĚŝƟŶŐ͘
õ ô ĚŝƚƚŚĞĮůĞƐŽƚŚĂƚŝƚůŽŽŬƐĞdžĂĐƚůLJůŝŬĞƚŚĞĨŽůůŽǁŝŶŐƐĐƌĞĞŶƐŚŽƚ͘
[ 24 ]
Ä ¾ Æ Á ä ;
ö ô ^ĂǀĞƚŚĞĮůĞ͘
:KDW VLQWKLVVFULSWÀOH"
/ŶƚŚĞƉƌĞǀŝŽƵƐƐĐƌĞĞŶƐŚŽƚ͕ůŝŶĞƐϲĂŶĚϳǁŝůůůŽŽŬĨĂŵŝůŝĂƌƚŽLJŽƵ͖ƚŚĞLJĂƌĞǀĂƌŝĂďůĞƐũƵƐƚĂƐ
+ < > A 9 . @ A C
- ŝŶƚŚĞƉƌĞǀŝŽƵƐƐĞĐƟŽŶ͘dŚĞƌĞĂƌĞƚǁŽŽĨƚŚĞŵƚŚŝƐƟŵĞ͘dŚĞƐĞǀĂƌŝĂďůĞƐƐƚŽƌĞ
2 1 A @ < F = A . ? 2 1 9 2 9 . A 0 + / @ 0 2 + = A 9 C C A C D
>ŝŶĞϭϲŵĂLJůŽŽŬǀĞƌLJƐƚƌĂŶŐĞƚŽLJŽƵ͘ŽŶΖƚĐŽŶĐĞƌŶLJŽƵƌƐĞůĨƌŝŐŚƚŶŽǁǁŝƚŚŚŽǁƚŚŝƐǁŽƌŬƐ͘
; A - /?
=
á
:ƵƐƚŬŶŽǁƚŚĂƚŝƚΖƐĂůŝŶĞŽĨĐŽĚĞƚŚĂƚůĞƚƐƚŚĞƐĐƌŝƉƚŬŶŽǁǁŚĞŶƚŚĞ ZĞƚƵƌŶ ͬ
, . A ? ? A C D 8 . A ? ? 2 1 A
=
á ZĞƚƵƌŶ ͬ ŬĞLJǁŚĞŶLJŽƵǁĂŶƚƚŽĂĚĚƚŚĞƚǁŽŶƵŵďĞƌƐƚŽŐĞƚŚĞƌ͘
>ŝŶĞϭϳŝƐǁŚĞƌĞƚŚĞ AddTwoNumbers()ŵĞƚŚŽĚŐĞƚƐĐĂůůĞĚŝŶƚŽĂĐƟŽŶ͘/ŶĨĂĐƚ͕ƚŚĂƚΖƐ
ĞdžĂĐƚůLJŚŽǁƚŽĚĞƐĐƌŝďĞŝƚ͘dŚŝƐůŝŶĞŽĨĐŽĚĞĐĂůůƐƚŚĞŵĞƚŚŽĚ͘
/ @ A ? 4 5 G 4 6 G 4 4 G 9 @ C 4 7 F 9 ; A < , 2 1 A K AddTwoNumbers()ŵĞƚŚŽĚ͘ŽŶΖƚďĞĐŽŶĐĞƌŶĞĚĂďŽƵƚ ƚŚĞĐŽĚĞĚĞƚĂŝůƐLJĞƚ͘/ũƵƐƚǁĂŶƚLJŽƵƚŽƵŶĚĞƌƐƚĂŶĚŚŽǁĐĂůůŝŶŐĂŵĞƚŚŽĚǁŽƌŬƐ͘
Method names are substitutes too zŽƵůĞĂƌŶĞĚƚŚĂƚĂǀĂƌŝĂďůĞŝƐĂƐƵďƐƟƚƵƚĞĨŽƌƚŚĞǀĂůƵĞŝƚĂĐƚƵĂůůLJĐŽŶƚĂŝŶƐ͘tĞůů͕ĂŵĞƚŚŽĚ
ŝƐŶŽĚŝīĞƌĞŶƚ͘
9 ; A 9 > + + ; 9 2 > / @ A 4 5 E . + F 2 1 A , . A B / + < ? ? : . A A @ ? 1 + 2 I void AddTwoNumbers ()
[ 25 ]
0
Å Æ ä Â 1 2 å 3 Å 4 Æ Á 5 2 3 À 1 3 Å 4 5 À Â å 6 Ç Ã Â ä 7 Å 3 Æ 8 9 å ä 3 Æ Ç
/? 2 1 A @ 9 F A + E 2 1 A F A 2 1 + C D K / ; A 9 B 9 . / 9 = > A G /? 1 A AddTwoNumbers() AddTwoNumbers() ŶŽƚŚŝŶŐŵŽƌĞƚŚĂŶĂŶĂŵĞĚƉůĂĐĞŚŽůĚĞƌŝŶƚŚĞŵĞŵŽƌLJ͕ďƵƚƚŚŝƐƟŵĞŝƚƐƚŽƌĞƐƐŽŵĞůŝŶĞƐŽĨ ĐŽĚĞŝŶƐƚĞĂĚ͘^ŽĂŶLJǁŚĞƌĞǁĞǁŽƵůĚůŝŬĞƚŽƵƐĞƚŚĞĐŽĚĞŽĨƚŚŝƐŵĞƚŚŽĚŝŶŽƵƌƐĐƌŝƉƚ͕ũƵƐƚ ǁƌŝƚĞ AddTwoNumbers()͕ĂŶĚƚŚĞĐŽĚĞǁŝůůďĞƐƵďƐƟƚƵƚĞĚ͘ >ŝŶĞϮϭŚĂƐĂŶŽƉĞŶŝŶŐĐƵƌůLJͲďƌĂĐĞĂŶĚůŝŶĞϮϯŚĂƐĂĐůŽƐŝŶŐĐƵƌůLJͲďƌĂĐĞ͘ǀĞƌLJƚŚŝŶŐďĞƚǁĞĞŶ
ƚŚĞƚǁŽĐƵƌůLJͲďƌĂĐĞƐŝƐƚŚĞĐŽĚĞƚŚĂƚŝƐĞdžĞĐƵƚĞĚǁŚĞŶƚŚŝƐŵĞƚŚŽĚŝƐĐĂůůĞĚŝŶ
+ < . ? : . / , 2 D
>ŽŽŬĂƚůŝŶĞϭϳĨƌŽŵƚŚĞƉƌĞǀŝŽƵƐƐĐƌĞĞŶƐŚŽƚ͗
AddTwoNumbers();
1 A F A 2 1 + C @ 9 F A
AddTwoNumbers()ŝƐĐĂůůĞĚ͘dŚŝƐŵĞĂŶƐƚŚĂƚƚŚĞĐŽĚĞďĞƚǁĞĞŶƚŚĞ
: < . > - = . 9 : A ? /? A ì A : < 2 A C D (
/ƚΖƐůŝŬĞŚĂǀŝŶŐĂůůŽĨƚŚĞĐŽĚĞŽĨĂŵĞƚŚŽĚƌŝŐŚƚƚŚĞƌĞŽŶ
ůŝŶĞϭϳ͘
E : + < . ? A G 2 1 /? F A 2 1 + C + @ > - 1 9 ? + @ A > / @ A + E : + C A 2 + A ì A : < 2 A G = < 2 9
# AddTwoNumbers()
F A 2 1 + C : + < > C 1 9 B A F 9 @ - > / @ A ? + E : + C A D
>ŝŶĞϮϮŝƐƚŚĞĂĐƟŽŶƉĂƌƚŽĨƚŚŝƐŵĞƚŚŽĚ͕ƚŚĞƉĂƌƚďĞƚǁĞĞŶƚŚĞĐƵƌůLJͲďƌĂĐĞƐ͘dŚŝƐůŝŶĞŽĨĐŽĚĞ
D 1 A @ G ŝƐĂĚĚŝŶŐƚŚĞƚǁŽǀĂƌŝĂďůĞƐƚŽŐĞƚŚĞƌĂŶĚĚŝƐƉůĂLJŝŶŐƚŚĞĂŶƐǁĞƌƚŽƚŚĞhŶŝƚLJ ŽŶƐŽůĞ
ĨŽůůŽǁƚŚĞĞŶƐƵŝŶŐƐƚĞƉƐ͗
6 D + = 9 : ; 2 + @ / 2 - 9 @ C 1 9 B A 2 1 A )
% ŽŶƐŽůĞ ƉĂŶĞůƐŚŽǁŝŶŐ͘
D D 4 EŽǁĐůŝĐŬŽŶ WůĂLJ
What 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
' ŽŶƐŽůĞ
=
á ũƵƐƚĂƐǁĞƉƌŽŐƌĂŵŵĞĚŝƚ͘>ŝŶĞϭϲŝŶƚŚĞƐĐƌŝƉƚŝƐǁĂŝƟŶŐĨŽƌLJŽƵƚŽƉƌĞƐƐƚŚĞ ZĞƚƵƌŶ ͬ ŬĞLJ͘WƌĞƐƐŝƚŶŽǁ͘
ŶĚƚŚĞƌĞLJŽƵŐŽ͊dŚĞĨŽůůŽǁŝŶŐƐĐƌĞĞŶƐŚŽƚƐŚŽǁƐLJŽƵƚŚĞƌĞƐƵůƚŽĨĂĚĚŝŶŐƚǁŽǀĂƌŝĂďůĞƐ ƚŽŐĞƚŚĞƌƚŚĂƚĐŽŶƚĂŝŶƚŚĞŶƵŵďĞƌƐϮĂŶĚϵ͗
[ 26 ]
Ä ¾ Æ Á ä ;
; A -
=
á >ŝŶĞϭϲǁĂŝƚĞĚĨŽƌLJŽƵƚŽƉƌĞƐƐƚŚĞ ZĞƚƵƌŶ ͬ ͘tŚĞŶLJŽƵĚŽƚŚŝƐ͕ůŝŶĞϭϳĞdžĞĐƵƚĞƐ
ǁŚŝĐŚĐĂůůƐƚŚĞ AddTwoNumbers()ŵĞƚŚŽĚ͘dŚŝƐĂůůŽǁƐƚŚĞĐŽĚĞďůŽĐŬŽĨƚŚĞŵĞƚŚŽĚ͕ůŝŶĞ
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 ? 9 @ C D 4 number1 number2
+DYHDJRKHUR²FKDQJLQJWKHRXWSXWRIWKHPHWKRG
1 / > A @ / 2 - /? / @ 2 1 A F + C A G ? A > A : 2 2 1 A
) WůĂLJ DĂŝŶĂŵĞƌĂ ƐŽŝƚƐŽŵƉŽŶĞŶƚƐƐŚŽǁŝŶƚŚĞ
D @ 2 1 A , 9 @ A > G > + : 9 2 A
!
>ĞĂƌŶŝŶŐ^ĐƌŝƉƚ ĂŶĚŝƚƐƚǁŽǀĂƌŝĂďůĞƐ͘ŚĂŶŐĞƚŚĞ
9 > < A ? G : < . . A @ 2 > - 9 @ C
B Ϯ ϵ͕ƚŽĚŝīĞƌĞŶƚǀĂůƵĞƐ͘DĂŬĞƐƵƌĞƚŽĐůŝĐŬLJŽƵƌŵŽƵƐĞŝŶƚŚĞ 'ĂŵĞ
, 9 @ A > ? + / 2 1 9 ? E + : < ? G 2 1 A @ , . A ? ? 2 1 A
=
á ZĞƚƵƌŶ ͬ ŬĞLJĂŐĂŝŶ͘zŽƵǁŝůůƐĞĞƚŚĞƌĞƐƵůƚŽĨƚŚĞ ŶĞǁĂĚĚŝƟŽŶŝŶƚŚĞ ŽŶƐŽůĞ D
zŽƵũƵƐƚůĞĂƌŶĞĚŚŽǁĂŵĞƚŚŽĚǁŽƌŬƐƚŽĂůůŽǁĂƐƉĞĐŝĮĐďůŽĐŬŽĨĐŽĚĞƚŽƚŽďĞĐĂůůĞĚƚŽ
, A . E + . F 9 2 9 ? ; D
tĞĚŝĚŶΖƚŐĞƚŝŶƚŽĂŶLJŽĨƚŚĞǁŽƌĚŝŶŐĚĞƚĂŝůƐŽĨŵĞƚŚŽĚƐŚĞƌĞ͕ƚŚŝƐǁĂƐũƵƐƚƚŽƐŚŽǁLJŽƵ
Þ ß à G
á ê ĨƵŶĚĂŵĞŶƚĂůůLJŚŽǁƚŚĞLJǁŽƌŬ͘tĞΖůůŐĞƚŝŶƚŽƚŚĞĮŶĞƌĚĞƚĂŝůƐŽĨŵĞƚŚŽĚƐŝŶ 'ĞƫŶŐŝŶƚŽƚŚĞĞƚĂŝůƐŽĨDĞƚŚŽĚƐ D
Introducing the class
1 A , > 9 - ĐůĂƐƐ ƐĂŵĂũŽƌƌŽůĞŝŶhŶŝƚLJ͘/ŶĨĂĐƚ͕ǁŚĂƚhŶŝƚLJĚŽĞƐǁŝƚŚĂĐůĂƐƐĂůŝƩůĞƉŝĞĐĞŽĨ ŵĂŐŝĐǁŚĞŶhŶŝƚLJĐƌĞĂƚĞƐŽŵƉŽŶĞŶƚƐ͘ zŽƵũƵƐƚůĞĂƌŶĞĚĂďŽƵƚǀĂƌŝĂďůĞƐĂŶĚŵĞƚŚŽĚƐ͘dŚĞƐĞƚǁŽŝƚĞŵƐĂƌĞƚŚĞďƵŝůĚŝŶŐďůŽĐŬƐƵƐĞĚ ƚŽďƵŝůĚhŶŝƚLJƐĐƌŝƉƚƐ͘dŚĞƚĞƌŵƐĐƌŝƉƚŝƐƵƐĞĚĞǀĞƌLJǁŚĞƌĞŝŶĚŝƐĐƵƐƐŝŽŶƐĂŶĚĚŽĐƵŵĞŶƚƐ͘ >ŽŽŬŝƚƵƉŝŶƚŚĞĚŝĐƟŽŶĂƌLJĂŶĚŝƚĐĂŶďĞŐĞŶĞƌĂůůLJĚĞƐĐƌŝďĞĚĂƐǁƌŝƩĞŶƚĞdžƚ͘^ƵƌĞĞŶŽƵŐŚ͕ ƚŚĂƚΖƐǁŚĂƚǁĞŚĂǀĞ͘,ŽǁĞǀĞƌ͕ƐŝŶĐĞǁĞĂƌĞŶΖƚũƵƐƚǁƌŝƟŶŐĂƐĐƌĞĞŶƉůĂLJŽƌƉĂƐƐŝŶŐĂŶŽƚĞ ƚŽƐŽŵĞŽŶĞ͕ǁĞŶĞĞĚƚŽůĞĂƌŶƚŚĞĂĐƚƵĂůƚĞƌŵƐƵƐĞĚŝŶƉƌŽŐƌĂŵŵŝŶŐ͘
hŶŝƚLJĐĂůůƐƚŚĞĐŽĚĞŝƚĐƌĞĂƚĞƐĂηƐĐƌŝƉƚ͘,ŽǁĞǀĞƌ͕ƉĞŽƉůĞůŝŬĞŵĞŚĂǀĞƚŽƚĞĂĐŚLJŽƵƐŽŵĞ
= 9 ? /: , . + 0 . 9 F F / @ 0 ? ; / > > ? 9 @ C 2 A > > - + < 2 1 9 2 9 ? : . / , 2 /? . A 9 > > - 9 : > 9 ? ? D
/ŶƚŚĞƉƌĞǀŝŽƵƐƐĞĐƟŽŶĂďŽƵƚŵĞƚŚŽĚƐ͕ǁĞĐƌĞĂƚĞĚĂĐůĂƐƐ;ƐĐƌŝƉƚͿĐĂůůĞĚ
> £ ü £ ú ý ü ¤ ú ¢ § ¤ ? ú û ý ú ¥ § ¤ ÿ ú ü ú ¡ ¤ £ © © ¤ LearningScript ŵĂŝŶĐŽŶĐĞƉƚŽƌŝĚĞĂŽĨĂĐůĂƐƐŝƐƚŚĂƚŝƚΖƐĂĐŽŶƚĂŝŶĞƌŽĨĚĂƚĂ͕ƐƚŽƌĞĚŝŶ ǀĂƌŝĂďůĞƐ͕ĂŶĚŵĞƚŚŽĚƐƚŚĂƚƉƌŽĐĞƐƐƚŚĂƚĚĂƚĂŝŶƐŽŵĞĨĂƐŚŝŽŶ͘ĞĐĂƵƐĞ/ĚŽŶΖƚ ŚĂǀĞƚŽĐŽŶƐƚĂŶƚůLJǁƌŝƚĞĐůĂƐƐ;ƐĐƌŝƉƚͿ͕/ǁŝůůďĞƵƐŝŶŐƚŚĞǁŽƌĚƐĐƌŝƉƚŵŽƐƚŽĨ ƚŚĞƟŵĞ͘,ŽǁĞǀĞƌ͕/ǁŝůůĂůƐŽďĞƵƐŝŶŐĐůĂƐƐǁŚĞŶŐĞƫŶŐŵŽƌĞƐƉĞĐŝĮĐǁŝƚŚ η͘:ƵƐƚƌĞŵĞŵďĞƌƚŚĂƚĂƐĐƌŝƉƚŝƐĂĐůĂƐƐƚŚĂƚŝƐĂƩĂĐŚĞĚƚŽĂ'ĂŵĞKďũĞĐƚ͘
[ 27 ]
0
Å Æ ä Â 1 2 å 3 Å 4 Æ Á 5 2 3 À 1 3 Å 4 5 À Â å 6 Ç Ã Â ä 7 Å 3 Æ 8 9 å ä 3 Æ Ç
@ Þ ß à G
!
á î ƌĞĂƟŶŐƚŚĞ'ĂŵĞƉůĂLJŝƐ:ƵƐƚĂWĂƌƚŽĨƚŚĞ'ĂŵĞ ͕ǁĞǁŝůůďĞĐƌĞĂƟŶŐƐŽŵĞ ĐůĂƐƐĞƐĨŽƌĂ^ƚĂƚĞDĂĐŚŝŶĞ͘dŚĞƐĞĐůĂƐƐĞƐǁŝůůŶŽƚďĞĂƩĂĐŚĞĚƚŽĂŶLJ'ĂŵĞKďũĞĐƚƐ͕ƐŽ/ ǁŽŶΖƚďĞĐĂůůŝŶŐƚŚĞŵƐĐƌŝƉƚƐ͘
%\XVLQJDOLWWOH8QLW\PDJLFDVFULSWEHFRPHV a Component
tŚŝůĞǁŽƌŬŝŶŐŝŶhŶŝƚLJ͕ǁĞǁĞĂƌƚŚĞĨŽůůŽǁŝŶŐƚǁŽŚĂƚƐ͗
9 F A * . A 9 2 + . 1 9 2
' % (
^ĐƌŝƉƟŶŐ;ƉƌŽŐƌĂŵŵĞƌͿŚĂƚ tŚĞŶǁĞĮƌƐƚǁĞĂƌŽƵƌ'ĂŵĞͲƌĞĂƚŽƌŚĂƚ͕ǁĞǁŝůůďĞĚĞǀĞůŽƉŝŶŐŽƵƌ^ĐĞŶĞ͕ƐĞůĞĐƟŶŐ 'ĂŵĞKďũĞĐƚƐ͕ĂŶĚǀŝĞǁŝŶŐŽŵƉŽŶĞŶƚƐ͖ũƵƐƚĂďŽƵƚĂŶLJƚŚŝŶŐĞdžĐĞƉƚǁƌŝƟŶŐŽƵƌƐĐƌŝƉƚƐ͘ tŚĞŶǁĞƉƵƚŽƵƌ^ĐƌŝƉƟŶŐŚĂƚŽŶ͕ŽƵƌƚĞƌŵŝŶŽůŽŐLJĐŚĂŶŐĞƐĂƐĨŽůůŽǁƐ͗
tĞΖƌĞǁƌŝƟŶŐĐŽĚĞŝŶƐĐƌŝƉƚƐƵƐŝŶŐDŽŶŽĞǀĞůŽƉ
tĞΖƌĞǁŽƌŬŝŶŐǁŝƚŚǀĂƌŝĂďůĞƐĂŶĚŵĞƚŚŽĚƐ dŚĞŵĂŐŝĐŚĂƉƉĞŶƐǁŚĞŶLJŽƵƉƵƚLJŽƵƌ'ĂŵĞͲƌĞĂƚŽƌŚĂƚďĂĐŬŽŶĂŶĚĂƩĂĐŚLJŽƵƌƐĐƌŝƉƚƚŽ Ă'ĂŵĞKďũĞĐƚ͘tĂǀĞƚŚĞŵĂŐŝĐǁĂŶĚͶWͶƚŚĞƐĐƌŝƉƚĮůĞŝƐŶŽǁĐĂůůĞĚĂŽŵƉŽŶĞŶƚ͕
ĂŶĚƚŚĞƉƵďůŝĐǀĂƌŝĂďůĞƐŽĨƚŚĞƐĐƌŝƉƚĂƌĞŶŽǁƚŚĞƉƌŽƉĞƌƟĞƐLJŽƵĐĂŶƐĞĞĂŶĚĐŚĂŶŐĞŝŶƚŚĞ
, 9 @ A > D
A more technical look at the magic
ƐĐƌŝƉƚŝƐůŝŬĞĂďůƵĞƉƌŝŶƚŽƌĂǁƌŝƩĞŶĚĞƐĐƌŝƉƟŽŶ͘/ŶŽƚŚĞƌǁŽƌĚƐ͕ŝƚΖƐũƵƐƚĂƐŝŶŐůĞĮůĞŝŶĂ
E + > C A . + @ + < . 1 9 . C C . /B A D A : 9 @ ? A A / 2 . / 0 1 2 2 1 A . A / @ 2 1 A ,
- ƉĂŶĞů͘/ƚĐĂŶΖƚĚŽĂŶLJƚŚŝŶŐ ũƵƐƚƐŝƫŶŐƚŚĞƌĞ͘tŚĞŶǁĞƚĞůůhŶŝƚLJƚŽĂƩĂĐŚŝƚƚŽĂ'ĂŵĞKďũĞĐƚ͕ǁĞŚĂǀĞŶΖƚĐƌĞĂƚĞĚ
ĂŶŽƚŚĞƌĐŽƉLJŽĨƚŚĞĮůĞ͕ĂůůǁĞΖǀĞĚŽŶĞŝƐƚĞůůhŶŝƚLJǁĞǁĂŶƚƚŚĞďĞŚĂǀŝŽƌƐĚĞƐĐƌŝďĞĚŝŶ
+ < . ? : . / , 2 2 + = A 9 * + F , + @ A @ 2 + E 2 1 A 9 F A # = A : 2 D % tŚĞŶǁĞĐůŝĐŬŽŶƚŚĞ WůĂLJ ďƵƩŽŶ͕hŶŝƚLJůŽĂĚƐƚŚĞ'ĂŵĞKďũĞĐƚŝŶƚŽƚŚĞĐŽŵƉƵƚĞƌΖƐ ŵĞŵŽƌLJ͘^ŝŶĐĞƚŚĞƐĐƌŝƉƚŝƐĂƩĂĐŚĞĚƚŽĂ'ĂŵĞKďũĞĐƚ͕hŶŝƚLJĂůƐŽŚĂƐƚŽŵĂŬĞĂƉůĂĐĞ ŝŶƚŚĞĐŽŵƉƵƚĞƌΖƐŵĞŵŽƌLJƚŽƐƚŽƌĞĂŽŵƉŽŶĞŶƚĂƐƉĂƌƚŽĨƚŚĞ'ĂŵĞKďũĞĐƚ͘dŚĞ ŽŵƉŽŶĞŶƚŚĂƐƚŚĞĐĂƉĂďŝůŝƟĞƐƐƉĞĐŝĮĞĚŝŶƚŚĞƐĐƌŝƉƚ;ďůƵĞƉƌŝŶƚͿǁĞĐƌĞĂƚĞĚ͘
[ 28 ]
Ä ¾ Æ Á ä ;
Even more Unity magic dŚĞƌĞΖƐƐŽŵĞŵŽƌĞŵĂŐŝĐLJŽƵŶĞĞĚƚŽďĞĂǁĂƌĞŽĨ͘dŚĞƐĐƌŝƉƚƐŝŶŚĞƌŝƚĨƌŽŵ MonoBehaviour D &ŽƌďĞŐŝŶŶĞƌƐƚŽhŶŝƚLJ͕ƐƚƵĚLJŝŶŐηŝŶŚĞƌŝƚĂŶĐĞŝƐŶΖƚĂƐƵďũĞĐƚLJŽƵŶĞĞĚƚŽůĞĂƌŶŝŶĂŶLJŐƌĞĂƚ ĚĞƚĂŝů͕ďƵƚLJŽƵĚŽŶĞĞĚƚŽŬŶŽǁƚŚĂƚĞĂĐŚhŶŝƚLJƐĐƌŝƉƚƵƐĞƐŝŶŚĞƌŝƚĂŶĐĞ͘tĞƐĞĞƚŚĞĐŽĚĞŝŶ ĞǀĞƌLJƐĐƌŝƉƚƚŚĂƚǁŝůůďĞĂƩĂĐŚĞĚƚŽĂ'ĂŵĞKďũĞĐƚ͘/Ŷ LearningScript ͕ƚŚĞĐŽĚĞŝƐŽŶůŝŶĞϰ͗
public class LearningScript : MonoBehaviour
dŚĞĐŽůŽŶĂŶĚƚŚĞůĂƐƚǁŽƌĚŽĨƚŚĂƚĐŽĚĞŵĞĂŶƐƚŚĂƚƚŚĞ LearningScriptĐůĂƐƐŝƐŝŶŚĞƌŝƟŶŐ
= A 1 9 B / + . ? E . + F 2 1 A : > 9 ? ? D 1 /? ? / F , > - F A 9 @ ? 2 1 9 2 2 1 A + @ + A 1 9 B / + < .
# MonoBehaviour
ĐůĂƐƐŝƐŵĂŬŝŶŐĨĞǁŽĨŝƚƐǀĂƌŝĂďůĞƐĂŶĚŵĞƚŚŽĚƐĂǀĂŝůĂďůĞƚŽƚŚĞ>ĞĂƌŶŝŶŐ^ĐƌŝƉƚĐůĂƐƐ͘/ƚΖƐ
@ + : + / @ : /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 A
ǁĞƐĂǁŝŶƚŚĞ hŶŝƚLJ^ĐƌŝƉƟŶŐZĞĨĞƌĞŶĐĞ D dŚĞĨŽůůŽǁŝŶŐĂƌĞƚŚĞƚǁŽŝŶŚĞƌŝƚĞĚďĞŚĂǀŝŽƌƐŝŶƚŚĞ LearningScript I
>ŝŶĞϵ͗͗ void Start ()
>ŝŶĞϭϰ͗ void Update ()
dŚĞŵĂŐŝĐŝƐƚŚĂƚLJŽƵĚŽŶΖƚŚĂǀĞƚŽĐĂůůƚŚĞƐĞŵĞƚŚŽĚƐ͕hŶŝƚLJĐĂůůƐƚŚĞŵ ĂƵƚŽŵĂƟĐĂůůLJ͘^ŽƚŚĞĐŽĚĞLJŽƵƉůĂĐĞŝŶƚŚĞƐĞŵĞƚŚŽĚƐŐĞƚƐĞdžĞĐƵƚĞĚĂƵƚŽŵĂƟĐĂůůLJ͘
+DYHDJRKHUR²ÀQGLQJ6WDUWDQG8SGDWHLQWKH6FULSWLQJ5HIHUHQFH
E + . 9 @ C . - 9 ? A 9 . : 1 + @ 2 1 A ^ĐƌŝƉƟŶŐZĞĨĞƌĞŶĐĞ ^ƚĂƌƚ hƉĚĂƚĞ ƚŽůĞĂƌŶǁŚĞŶĞĂĐŚŵĞƚŚŽĚŝƐ
ĐĂůůĞĚďLJhŶŝƚLJĂŶĚŚŽǁŽŌĞŶ͘
> ? + ? A 9 . : 1 E + .
' MonoBehaviour͘dŚŝƐǁŝůůƐŚŽǁLJŽƵƚŚĂƚƐŝŶĐĞŽƵƌƐĐƌŝƉƚŝŶŚĞƌŝƚƐĨƌŽŵ
@ C F A 2 1 + C ? D MonoBehaviour͕ǁĞĂƌĞĂďůĞƚŽƵƐĞƚŚĞ Start() 9 Update()
Components communicating using the Dot Syntax KƵƌƐĐƌŝƉƚŚĂƐǀĂƌŝĂďůĞƐƚŽŚŽůĚĚĂƚĂ͕ĂŶĚŽƵƌƐĐƌŝƉƚŚĂƐŵĞƚŚŽĚƐƚŽĂůůŽǁƚĂƐŬƐƚŽďĞ
ƉĞƌĨŽƌŵĞĚ͘/ŶŽǁǁĂŶƚƚŽŝŶƚƌŽĚƵĐĞƚŚĞĐŽŶĐĞƉƚŽĨĐŽŵŵƵŶŝĐĂƟŶŐǁŝƚŚŽƚŚĞƌ'ĂŵĞKďũĞĐƚƐ
@ C 2 1 A 9 ŽŵƉŽŶĞŶƚƐƚŚĞLJĐŽŶƚĂŝŶ͘ŽŵŵƵŶŝĐĂƟŽŶďĞƚǁĞĞŶŽŶĞ'ĂŵĞKďũĞĐƚΖƐŽŵƉŽŶĞŶƚƐ ĂŶĚĂŶŽƚŚĞƌ'ĂŵĞKďũĞĐƚΖƐŽŵƉŽŶĞŶƚƐƵƐŝŶŐŽƚ^LJŶƚĂdžŝƐĂǀŝƚĂůƉĂƌƚŽĨƐĐƌŝƉƟŶŐ͘/ƚΖƐ
ǁŚĂƚŵĂŬĞƐŝŶƚĞƌĂĐƟŽŶƉŽƐƐŝďůĞ͘tĞŶĞĞĚƚŽĐŽŵŵƵŶŝĐĂƚĞǁŝƚŚŽƚŚĞƌŽŵƉŽŶĞŶƚƐŽƌ
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 %
[ 29 ]
0
Å Æ ä Â 1 2 å 3 Å 4 Æ Á 5 2 3 À 1 3 Å 4 5 À Â å 6 Ç Ã Â ä 7 Å 3 Æ 8 9 å ä 3 Æ Ç
What's with the dots? tŚĞŶLJŽƵůŽŽŬĂƚƚŚĞĐŽĚĞǁƌŝƩĞŶďLJŽƚŚĞƌƐ͕LJŽƵΖůůƐĞĞǁŽƌĚƐǁŝƚŚƉĞƌŝŽĚƐƐĞƉĂƌĂƟŶŐƚŚĞŵ͘ tŚĂƚƚŚĞŚĞĐŬŝƐƚŚĂƚ͍/ƚůŽŽŬƐĐŽŵƉůŝĐĂƚĞĚ͕ĚŽĞƐŶΖƚŝƚ͘dŚĞĨŽůůŽǁŝŶŐŝƐĂŶĞdžĂŵƉůĞĨƌŽŵƚŚĞ hŶŝƚLJĚŽĐƵŵĞŶƚĂƟŽŶ͗
transform.position.x
ŽŶΖƚĐŽŶĐĞƌŶLJŽƵƌƐĞůĨǁŝƚŚǁŚĂƚƚŚĞƉƌĞĐĞĚŝŶŐĐŽĚĞŵĞĂŶƐĂƐƚŚĂƚĐŽŵĞƐ ůĂƚĞƌ͕/ũƵƐƚǁĂŶƚLJŽƵƚŽƐĞĞƚŚĞĚŽƚƐ͘ dŚĂƚΖƐĐĂůůĞĚƚŚĞŽƚ^LJŶƚĂdž͘dŚĞĨŽůůŽǁŝŶŐŝƐĂŶŽƚŚĞƌĞdžĂŵƉůĞ͘/ƚΖƐƚŚĞĮĐƟƟŽƵƐĂĚĚƌĞƐƐŽĨ ŵLJŚŽƵƐĞ͗h^͘sĞƌŵŽŶƚ͘ƐƐĞdž͘ϮϮDLJ^ƚƌĞĞƚ
>ŽŽŬƐĨƵŶŶLJ͕ĚŽĞƐŶΖƚŝƚ͍dŚĂƚΖƐďĞĐĂƵƐĞ/ƵƐĞĚƚŚĞƐLJŶƚĂdž;ŐƌĂŵŵĂƌͿŽĨηŝŶƐƚĞĂĚŽĨƚŚĞƉŽƐƚ
ŽĸĐĞ͘,ŽǁĞǀĞƌ͕/ΖůůďĞƚŝĨLJŽƵůŽŽŬĐůŽƐĞůLJ͕LJŽƵĐĂŶĞĂƐŝůLJĮŐƵƌĞŽƵƚŚŽǁƚŽĮŶĚŵLJŚŽƵƐĞ͘
Þ ß à G à B
á í @ A tĞΖůůŐĞƚŝŶƚŽŵƵĐŚŵŽƌĞŽƚ^LJŶƚĂdžĚĞƚĂŝůŝŶ KďũĞĐƚŽŵŵƵŶŝĐĂƟŽŶ͘
3RSTXL]²NQRZLQJWKH&EXLOGLQJEORFNV Yϭ͘tŚĂƚŝƐƚŚĞƉƵƌƉŽƐĞŽĨĂǀĂƌŝĂďůĞŝŶĂƐĐƌŝƉƚ͍
YϮ͘tŚĂƚŝƐƚŚĞƉƵƌƉŽƐĞŽĨĂŵĞƚŚŽĚŝŶĂƐĐƌŝƉƚ͍
Yϯ͘,ŽǁĚŽĞƐĂƐĐƌŝƉƚďĞĐŽŵĞĂŽŵƉŽŶĞŶƚ͍
Yϰ͘tŚĂƚŝƐƚŚĞƉƵƌƉŽƐĞŽĨŽƚ^LJŶƚĂdž͍
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 ì D dŚĞƐĞďƵŝůĚŝŶŐďůŽĐŬƐĂƌĞƵƐĞĚƚŽĐƌĞĂƚĞƐĐƌŝƉƚƐĂŶĚĐůĂƐƐĞƐ͘hŶĚĞƌƐƚĂŶĚŝŶŐŚŽǁƚŚĞƐĞ ďƵŝůĚŝŶŐďůŽĐŬƐǁŽƌŬŝƐĐƌŝƟĐĂůƐŽLJŽƵĚŽŶΖƚĨĞĞůLJŽƵΖƌĞŶŽƚŐĞƫŶŐŝƚ͘ tĞĚŝƐĐŽǀĞƌĞĚƚŚĂƚĂǀĂƌŝĂďůĞŶĂŵĞŝƐĂƐƵďƐƟƚƵƚĞĨŽƌƚŚĞǀĂůƵĞŝƚƐƚŽƌĞƐ͖ĂŵĞƚŚŽĚŶĂŵĞŝƐĂ
ƐƵďƐƟƚƵƚĞĨŽƌĂďůŽĐŬŽĨĐŽĚĞ͖ǁŚĞŶĂƐĐƌŝƉƚŽƌĐůĂƐƐŝƐĂƩĂĐŚĞĚƚŽĂ'ĂŵĞKďũĞĐƚ͕ŝƚďĞĐŽŵĞƐ
9 * + 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
% tŝƚŚƚŚĞƐĞĐŽŶĐĞƉƚƐƵŶĚĞƌLJŽƵƌďĞůƚ͕ǁĞĐĂŶƉƌŽĐĞĞĚƚŽůĞĂƌŶƚŚĞĚĞƚĂŝůƐŽĨƚŚĞƐĞŶƚĞŶĐĞ ƐƚƌƵĐƚƵƌĞ͕ƚŚĞŐƌĂŵŵĂƌ͕ĂŶĚƚŚĞƐLJŶƚĂdžƵƐĞĚƚŽǁŽƌŬǁŝƚŚǀĂƌŝĂďůĞƐ͕ŵĞƚŚŽĚƐ͕ĂŶĚƚŚĞŽƚ ^LJŶƚĂdž͘/ŶƚŚĞŶĞdžƚĐŚĂƉƚĞƌǁĞǁŝůůůĞĂƌŶĂďŽƵƚƚŚĞĚĞƚĂŝůƐŽĨƵƐŝŶŐǀĂƌŝĂďůĞƐ͘
[ 30 ] 3 *HWWLQJLQWRWKH'HWDLOVRI9DULDEOHV
/ŶŝƚŝĂůůLJ͕ĐŽŵƉƵƚĞƌƉƌŽŐƌĂŵŵŝŶŐĂƉƉĞĂƌƐĚŝĨĨŝĐƵůƚƚŽďĞŐŝŶŶĞƌƐĚƵĞƚŽƚŚĞĨĂĐƚ ŚŽǁǁŽƌĚƐĂƌĞƵƐĞĚŝŶĐŽĚĞ͘/ƚΖƐŶŽƚƚŚĞĂĐƚƵĂůǁŽƌĚƐƚŚĂƚĐĂƵƐĞƚŚĞƉƌŽďůĞŵ ďĞĐĂƵƐĞ͕ĨŽƌƚŚĞŵŽƐƚƉĂƌƚ͕ŵĂŶLJŽĨƚŚĞǁŽƌĚƐĂƌĞƚŚĞƐĂŵĞǁŽƌĚƐƚŚĂƚǁĞƵƐĞ ŝŶŽƵƌĞǀĞƌLJĚĂLJůŝĨĞ͘ηŝƐŶŽƚĂĨŽƌĞŝŐŶůĂŶŐƵĂŐĞ͘dŚĞŵĂŝŶƉƌŽďůĞŵŝƐƚŚĂƚƚŚĞ ǁŽƌĚƐƐŝŵƉůLJĚŽŶΖƚƌĞĂĚůŝŬĞƚŚĞƚLJƉŝĐĂůƐĞŶƚĞŶĐĞƐǁĞĂƌĞĂůůƵƐĞĚƚŽ͘zŽƵŬŶŽǁ ŚŽǁƚŽƐĂLJƚŚĞǁŽƌĚƐĂŶĚLJŽƵŬŶŽǁŚŽǁƚŽƐƉĞůůƚŚĞǁŽƌĚƐ͘tŚĂƚLJŽƵĚŽŶΖƚ ŬŶŽǁŝƐǁŚĞƌĞĂŶĚǁŚLJLJŽƵŶĞĞĚƚŽƉƵƚƚŚĞŵŝŶƚŚĂƚĐƌĂnjLJůŽŽŬŝŶŐŐƌĂŵŵĂƌ͕ ƚŚĂƚŝƐ͕ƚŚĞƐLJŶƚĂdžƚŚĂƚŵĂŬĞƐƵƉĂηƐƚĂƚĞŵĞŶƚ͘
/ŶƚŚŝƐĐŚĂƉƚĞƌ͕ǁĞǁŝůůůĞĂƌŶƐŽŵĞŽĨƚŚĞďĂƐŝĐƌƵůĞƐĨŽƌǁƌŝƚŝŶŐĂηƐƚĂƚĞŵĞŶƚ͘ tĞǁŝůůĂůƐŽďĞŝŶƚƌŽĚƵĐĞĚƚŽŵĂŶLJŽĨƚŚĞǁŽƌĚƐƚŚĂƚηƵƐĞƐĂŶĚƚŚĞƉƌŽƉĞƌ ƉůĂĐĞŵĞŶƚŽĨƚŚĞƐĞǁŽƌĚƐŝŶƚŚĞηƐƚĂƚĞŵĞŶƚƐǁŚĞŶǁĞĐƌĞĂƚĞŽƵƌǀĂƌŝĂďůĞƐ͘
/ŶƚŚŝƐĐŚĂƉƚĞƌǁĞǁŝůůĐŽǀĞƌƚŚĞĨŽůůŽǁŝŶŐƚŽƉŝĐƐ͗
tƌŝƟŶŐηƐƚĂƚĞŵĞŶƚƐƉƌŽƉĞƌůLJ
hƐŝŶŐηƐLJŶƚĂdžƚŽǁƌŝƚĞǀĂƌŝĂďůĞƐƚĂƚĞŵĞŶƚƐ
dŚĞ'ĂŵĞKďũĞĐƚŽŵƉŽŶĞŶƚΖƐƉƌŽƉĞƌƟĞƐ
? / @ 0 , < = > /: B 9 . / 9 = > A ? E + . 2 1 A @ / 2 - @ ? , A : 2 + . , 9 @ A >
) ) !
9 F / @ 0 9 B 9 . / 9 = > A , . + , A . > - $
ĞĐůĂƌŝŶŐĂǀĂƌŝĂďůĞĨŽƌƚŚĞƚLJƉĞŽĨĚĂƚĂŝƚǁŝůůƐƚŽƌĞ
KŬ͕ůĞƚΖƐůĞĂƌŶƐŽŵĞƉƌŽŐƌĂŵŵŝŶŐŐƌĂŵŵĂƌ͕ŽƚŚĞƌǁŝƐĞŬŶŽǁŶĂƐηƐLJŶƚĂdž͘ 'ĞƫŶŐŝŶƚŽƚŚĞĞƚĂŝůƐŽĨsĂƌŝĂďůĞƐ Writing C# statements properly
tŚĞŶLJŽƵĚŽŶŽƌŵĂůǁƌŝƟŶŐ͕ŝƚΖƐŝŶƚŚĞĨŽƌŵŽĨĂƐĞŶƚĞŶĐĞǁŝƚŚĂƉĞƌŝŽĚƵƐĞĚƚŽĞŶĚƚŚĞ
A @ 2 A @ : A D 1 A @
? LJŽƵǁƌŝƚĞĂůŝŶĞŽĨĐŽĚĞ͕ŝƚΖƐĐĂůůĞĚĂƐƚĂƚĞŵĞŶƚǁŝƚŚĂƐĞŵŝͲĐŽůŽŶƵƐĞĚƚŽ
A @ C 2 1 A ? 2 9 2 A F A @ 2 D
dŚĞƌĞĂƐŽŶĂƐƚĂƚĞŵĞŶƚĞŶĚƐǁŝƚŚĂƐĞŵŝͲĐŽůŽŶŝƐƐŽƚŚĂƚhŶŝƚLJŬŶŽǁƐ
ǁŚĞŶƚŚĞƐƚĂƚĞŵĞŶƚĞŶĚƐ͘ƉĞƌŝŽĚĐĂŶΖƚďĞƵƐĞĚďĞĐĂƵƐĞƚŚĞLJĂƌĞƵƐĞĚŝŶ
£ © ¤ C £ D ü £ ú ¦ dŚĞĐŽĚĞĨŽƌĂηƐƚĂƚĞŵĞŶƚĚŽĞƐŶŽƚŚĂǀĞƚŽďĞŽŶĂƐŝŶŐůĞůŝŶĞĂƐƐŚŽǁŶŝŶƚŚĞ ĨŽůůŽǁŝŶŐĞ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 ? + /E
LJŽƵƌĞĂůůLJǁĂŶƚƚŽ͕LJŽƵĐĂŶǁƌŝƚĞŝƚĂƐĨŽůůŽǁƐ͗
public int number1 = 2;
Ƶƚ/ƌĞĐŽŵŵĞŶĚLJŽƵƚŽŶŽƚǁƌŝƚĞLJŽƵƌĐŽĚĞůŝŬĞƚŚŝƐďĞĐĂƵƐĞŝƚΖƐƚĞƌƌŝďůĞƌĞĂĚŝŶŐĐŽĚĞ ĨŽƌŵĂƩĞĚůŝŬĞƚŚĞƉƌĞĐĞĚŝŶŐĐŽĚĞ͘,ŽǁĞǀĞƌ͕ƚŚĞƌĞǁŝůůďĞƟŵĞƐƚŚĂƚLJŽƵΖůůŚĂǀĞƚŽǁƌŝƚĞ
ůŽŶŐƐƚĂƚĞŵĞŶƚƐƚŚĂƚǁŝůůďĞůŽŶŐĞƌƚŚĂŶŽŶĞůŝŶĞ͘hŶŝƚLJǁŽŶΖƚĐĂƌĞ͘/ƚũƵƐƚŶĞĞĚƐƚŽƐĞĞƚŚĞ
? A F / : + > + @ 9 2 2 1 A A @ C D (
Understanding Component properties in Unity's
Inspector
9 F A # = A : 2 ? 1 9 B A ? + F A
% ŽŵƉŽŶĞŶƚƐƚŚĂƚŵĂŬĞƚŚĞŵďĞŚĂǀĞŝŶĂĐĞƌƚĂŝŶǁĂLJ͘&ŽƌŝŶƐƚĂŶĐĞ͕
? 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
DĂŝŶĂŵĞƌĂ ĂŵĞƌĂ tŝƚŚŽƵƚƚŚĂƚŽŵƉŽŶĞŶƚ͕ŝƚǁŝůůĐĞĂƐĞďĞŝŶŐĂĐĂŵĞƌĂ͘/ƚǁŽƵůĚƐƟůůďĞĂ'ĂŵĞKďũĞĐƚŝŶLJŽƵƌ ƐĐĞŶĞ͕ũƵƐƚŶŽůŽŶŐĞƌĂĨƵŶĐƟŽŶŝŶŐĐĂŵĞƌĂ͘
[ 32 ]
Ä ¾ Æ Á ä E
9DULDEOHVEHFRPH&RPSRQHQWSURSHUWLHV
@ - * + F , + @ A @ 2 + E ' ĂŶLJ'ĂŵĞKďũĞĐƚŝƐũƵƐƚĂƐĐƌŝƉƚƚŚĂƚĚĞĮŶĞƐĂĐůĂƐƐ͕ǁŚĞƚŚĞƌLJŽƵǁƌŽƚĞ
ƚŚĞƐĐƌŝƉƚŽƌƚŚĞhŶŝƚLJΖƐƉƌŽŐƌĂŵŵĞƌĚŝĚ͘tĞũƵƐƚĂƌĞŶΖƚƐƵƉƉŽƐĞĚƚŽĞĚŝƚƚŚĞƐĐƌŝƉƚƐƚŚĂƚ
9 . A < ? 2 B 9 . / 9 = > A ? + E
hŶŝƚLJǁƌŽƚĞ͘dŚŝƐŵĞĂŶƐƚŚĂƚĂůůƚŚĞƉƌŽƉĞƌƟĞƐǁĞƐĞĞŝŶ ƐŽŵĞƚLJƉĞ͘dŚĞLJƐŝŵƉůLJƐƚŽƌĞĚĂƚĂƚŚĂƚǁŝůůďĞƵƐĞĚďLJƐŽŵĞŵĞƚŚŽĚƐ͘
Unity changes script and variable names slightly
tŚĞŶǁĞĂĚĚŽƵƌƐĐƌŝƉƚƚŽĂ'ĂŵĞKďũĞĐƚ͕ƚŚĞŶĂŵĞŽĨŽƵƌƐĐƌŝƉƚƐŚŽǁƐƵƉŝŶƚŚĞ
9 @ A > 9 ? 9
, ŽŵƉŽŶĞŶƚ͘hŶŝƚLJŵĂŬĞƐĂĐŽƵƉůĞŽĨƐŵĂůůĐŚĂŶŐĞƐ͘zŽƵŵŝŐŚƚŚĂǀĞŶŽƟĐĞĚ +
ƚŚĂƚǁŚĞŶǁĞĂĚĚĞĚ LearningScript 2 DĂŝŶĂŵĞƌĂ ͕hŶŝƚLJĂĐƚƵĂůůLJƐŚŽǁĞĚŝƚŝŶƚŚĞ
, 9 @ A > 9 ?
>ĞĂƌŶŝŶŐ^ĐƌŝƉƚ ͘hŶŝƚLJĂĚĚĞĚĂƐƉĂĐĞƚŽƐĞƉĂƌĂƚĞƚŚĞǁŽƌĚƐŽĨƚŚĞŶĂŵĞ͘
hŶŝƚLJĚŽĞƐƚŚŝƐŵŽĚŝĮĐĂƟŽŶƚŽƚŚĞǀĂƌŝĂďůĞŶĂŵĞƐ͕ƚŽŽ͘EŽƟĐĞƚŚĂƚƚŚĞǀĂƌŝĂďůĞ number1
9 @ C 9 ?
ŝƐƐŚŽǁŶĂƐ EƵŵďĞƌϭ G number2 EƵŵďĞƌϮ ͘hŶŝƚLJĐĂƉŝƚĂůŝnjĞƐƚŚĞĮƌƐƚůĞƩĞƌĂƐǁĞůů͘
1 A ? A C /? , > 9 - A C : 1 9 @ 0 A ? / F , . + B A . A 9 C 9 = / > / 2 - / @ D
Changing a property's value in the Inspector panel
1 A . A 9 . A
ƚǁŽƐŝƚƵĂƟŽŶƐǁŚĞŶLJŽƵĐĂŶŵŽĚŝĨLJĂƉƌŽƉĞƌƚLJǀĂůƵĞ͗
¤ < . / @ 0 2 1 A F + C A
WůĂLJ
N
F + C A
ƵƌŝŶŐƚŚĞĚĞǀĞůŽƉŵĞŶƚŵŽĚĞ;ŶŽƚŝŶƚŚĞ WůĂLJ
1 A @ - + < 9 . A / @ 2 1 A WůĂLJ ŵŽĚĞ͕LJŽƵǁŝůůƐĞĞƚŚĂƚLJŽƵƌĐŚĂŶŐĞƐƚĂŬĞĞīĞĐƚŝŵŵĞĚŝĂƚĞůLJŝŶ
ƌĞĂůƟŵĞ͘dŚŝƐŝƐŐƌĞĂƚǁŚĞŶLJŽƵΖƌĞĞdžƉĞƌŝŵĞŶƟŶŐĂŶĚǁĂŶƚƚŽƐĞĞƚŚĞƌĞƐƵůƚƐ͘
© ¤ ü ú û ¤ ý ü £ © ¤ ù WůĂLJ ŵŽĚĞ͕LJŽƵǁŝůůƐĞĞƚŚĂƚLJŽƵƌĐŚĂŶŐĞƐƚĂŬĞĞīĞĐƚ ŝŵŵĞĚŝĂƚĞůLJŝŶƌĞĂůƟŵĞ͘dŚŝƐŝƐŐƌĞĂƚǁŚĞŶLJŽƵΖƌĞĞdžƉĞƌŝŵĞŶƟŶŐĂŶĚǁĂŶƚ
ƚŽƐĞĞƚŚĞƌĞƐƵůƚƐ͘tƌŝƚĞĚŽǁŶĂŶLJĐŚĂŶŐĞƐLJŽƵǁĂŶƚƚŽŬĞĞƉďĞĐĂƵƐĞǁŚĞŶ
ÿ £ ¢ £ © ¤ WůĂLJ ŵŽĚĞ͕ĂŶLJĐŚĂŶŐĞƐLJŽƵŵĂĚĞǁŝůůďĞůŽƐƚ͘ tŚĞŶLJŽƵĂƌĞŝŶƚŚĞĚĞǀĞůŽƉŵĞŶƚŵŽĚĞ͕ĐŚĂŶŐĞƐLJŽƵŵĂŬĞƚŽƚŚĞƉƌŽƉĞƌƚLJǀĂůƵĞƐǁŝůůďĞ ƐĂǀĞĚďLJhŶŝƚLJ͘dŚŝƐŵĞĂŶƐƚŚĂƚŝĨLJŽƵƋƵŝƚhŶŝƚLJĂŶĚƌĞƐƚĂƌƚŝƚĂŐĂŝŶ͕ƚŚĞĐŚĂŶŐĞƐǁŝůůďĞ
ƌĞƚĂŝŶĞĚ͘KĨĐŽƵƌƐĞLJŽƵǁŽŶΖƚƐĞĞƚŚĞĞīĞĐƚŽĨLJŽƵƌĐŚĂŶŐĞƵŶƟůLJŽƵĐůŝĐŬŽŶ WůĂLJ D
© ¤ © ú ü þ ¤ ÿ ¡ ú ¨ ¤ £ £ © ¤ ¢ û ¢ ¤ û £ ? ú § ¤ ÿ ý ü £ © ¤ F G H I J K L M N ¢ ú ü ¤ §
ŶŽƚŵŽĚŝĨLJLJŽƵƌƐĐƌŝƉƚ͘dŚĞŽŶůLJǁĂLJLJŽƵƌƐĐƌŝƉƚĐĂŶďĞĐŚĂŶŐĞĚŝƐĨŽƌ
LJŽƵƚŽĞĚŝƚŝƚŝŶƚŚĞƐĐƌŝƉƚĞĚŝƚŽƌ;DŽŶŽĞǀĞůŽƉͿ͘dŚĞǀĂůƵĞƐƐŚŽǁŶŝŶƚŚĞ
F G H I J K L M N ¢ ú ü ¤ § ? ¤ û û ý ¤ ú ü ? ú § ¤ ÿ © ú ú ÿ ÿ ý þ ü ¤ ý ü û ÿ û ý ¢ £
[ 33 ]
'ĞƫŶŐŝŶƚŽƚŚĞĞƚĂŝůƐŽĨsĂƌŝĂďůĞƐ
, 9 @ A > G - + < : 9 @ . A ? A 2 2 1 A B 9 > < A ?
/ĨLJŽƵĚĞƐŝƌĞƚŽƵŶĚŽƚŚĞĐŚĂŶŐĞƐLJŽƵΖǀĞŵĂĚĞŝŶƚŚĞ
ƚŽƚŚĞĚĞĨĂƵůƚǀĂůƵĞƐĂƐƐŝŐŶĞĚŝŶLJŽƵƌƐĐƌŝƉƚ͘ůŝĐŬŽŶƚŚĞŽŐŝĐŽŶ;ƚŚĞŐĞĂƌͿŽŶƚŚĞĨĂƌƌŝŐŚƚŽĨ
2 1 A * + F , + @ A @ 2 ? : . / , 2 G 9 @ C 2 1 A @ ? A > A : 2
$
ĂƐƐŚŽǁŶŝŶƚŚĞĨŽůůŽǁŝŶŐƐĐƌĞĞŶƐŚŽƚ͗
Displaying public variables in the Inspector panel
A 9 @ ? 9 2 2 1 A = A 0 / @ @ / @ 0 + E
/ΖŵƐƵƌĞLJŽƵΖƌĞǁŽŶĚĞƌŝŶŐǁŚĂƚƚŚĞǁŽƌĚ public F
9 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
! ǀĂƌŝĂďůĞǁŝůůďĞǀŝƐŝďůĞĂŶĚĂĐĐĞƐƐŝďůĞ͘/ƚǁŝůůďĞǀŝƐŝďůĞĂƐĂƉƌŽƉĞƌƚLJŝŶƚŚĞ
, 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 @ ?
!
ŝƚĐĂŶďĞĂĐĐĞƐƐĞĚĨƌŽŵŽƚŚĞƌƐĐƌŝƉƚƐƵƐŝŶŐƚŚĞŽƚ^LJŶƚĂdž͘zŽƵΖůůůĞĂƌŶŵŽƌĞĂďŽƵƚƚŚĞŽƚ
J - @ 2 9 ì / @ Þ ß à G D
á í hƐŝŶŐŽƚ^LJŶƚĂdžĨŽƌKďũĞĐƚŽŵŵƵŶŝĐĂƟŽŶ
7LPHIRUDFWLRQ²PDNLQJDYDULDEOHSULYDWH
+ 2 9 > > B 9 . / 9 = > A ? @ A A C 2 + = A
$ public͘/ĨƚŚĞƌĞΖƐŶŽŶĞĞĚĨŽƌĂǀĂƌŝĂďůĞƚŽďĞĐŚĂŶŐĞĚŝŶ
2 1 A
ƉĂŶĞůŶŽƌďĞĂĐĐĞƐƐĞĚĨƌŽŵŽƚŚĞƌƐĐƌŝƉƚƐ͕ŝƚĚŽĞƐŶΖƚŵĂŬĞƐĞŶƐĞƚŽĐůƵƩĞƌƚŚĞ
ƉĂŶĞůǁŝƚŚŶĞĞĚůĞƐƐƉƌŽƉĞƌƟĞƐ͘/Ŷ LearningScript͕ƉĞƌĨŽƌŵƚŚĞĨŽůůŽǁŝŶŐƐƚĞƉƐ͗
ó ô ŚĂŶŐĞůŝŶĞϲƚŽƚŚĞĨŽůůŽǁŝŶŐ͗ private int number1 = 2;
[ 34 ]
Ä ¾ Æ Á ä E
õ ô ŚĂŶŐĞůŝŶĞϳƚŽƚŚĞĨŽůůŽǁŝŶŐ͗
int number2 = 9;
ö ô
^ĂǀĞƚŚĞĮůĞ͘
ô
.
D @ @ / 2 - G ? A > A : 2 ) ! DĂŝŶĂŵĞƌĂ
What just happened?
9 @ C
zŽƵǁŝůůŶŽƟĐĞŝŶƚŚĞ ƉĂŶĞůƚŚĂƚďŽƚŚƉƌŽƉĞƌƟĞƐ͕ EƵŵďĞƌϭ EƵŵďĞƌϮ
9 . A 0 + @ A D
>ŝŶĞϲ͗ private int number1 = 2;
1 A , . A : A C / @ 0 > / @ A A ì , > /: / 2 > - ? 2 9 2 A ? 2 1 9 2 2 1 A B 9 . / 9 = > A /? 2 + = A G
number1 private
2 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 A
number2ǀĂƌŝĂďůĞŝƐŶŽůŽŶŐĞƌǀŝƐŝďůĞĂƐĂƉƌŽƉĞƌƚLJĞŝƚŚĞƌ͕ďƵƚLJŽƵĚŝĚŶΖƚ
, A : /E - / 2 9 ? D
? private
. G = - C A E 9 < > 2 G /ĨLJŽƵĚŽŶΖƚĞdžƉůŝĐŝƚůLJƐƚĂƚĞǁŚĞƚŚĞƌĂǀĂƌŝĂďůĞǁŝůůďĞ public + private ƚŚĞǀĂƌŝĂďůĞǁŝůůŝŵƉůŝĐŝƚůLJďĞ private D
/ƚŝƐŐŽŽĚĐŽĚŝŶŐƉƌĂĐƟĐĞƚŽĞdžƉůŝĐŝƚůLJƐƚĂƚĞǁŚĞƚŚĞƌĂǀĂƌŝĂďůĞǁŝůů
¤ û ¥ public private
^ŽŶŽǁǁŚĞŶLJŽƵĐůŝĐŬŽŶ WůĂLJ ͕ƚŚĞƐĐƌŝƉƚǁŽƌŬƐĞdžĂĐƚůLJĂƐŝƚĚŝĚďĞĨŽƌĞ͘zŽƵũƵƐƚĐĂŶΖƚ
F 9 @ / , < > 9 2 A 2 1 A B 9 > < A ? F 9 @ < 9 > > - / @ 2 1 A , 9 @ A > 9 @ - F + . A D
Naming your variables properly ůǁĂLJƐƵƐĞŵĞĂŶŝŶŐĨƵůŶĂŵĞƐĨŽƌƐƚŽƌŝŶŐLJŽƵƌǀĂƌŝĂďůĞƐ͘/ĨLJŽƵĚŽŶΖƚĚŽƚŚĂƚ͕ƐŝdžŵŽŶƚŚƐ ĚŽǁŶƚŚĞůŝŶĞ͕LJŽƵǁŝůůďĞƐĂĚ͘/ΖŵŐŽŝŶŐƚŽĞdžĂŐŐĞƌĂƚĞŚĞƌĞĂůŝƩůĞďŝƚƚŽŵĂŬĞĂƉŽŝŶƚ͘ /ǁŝůůŶĂŵĞĂǀĂƌŝĂďůĞĂƐƐŚŽǁŶŝŶƚŚĞĨŽůůŽǁŝŶŐĐŽĚĞ͗
public bool theBearMakesBigPottyInTheWoods = true; dŚĂƚΖƐĂĚĞƐĐƌŝƉƟǀĞŶĂŵĞ͘/ŶŽƚŚĞƌǁŽƌĚƐ͕LJŽƵŬŶŽǁǁŚĂƚŝƚŵĞĂŶƐďLJũƵƐƚƌĞĂĚŝŶŐƚŚĞ
ǀĂƌŝĂďůĞ͕ĂŶĚƐŽƚĞŶLJĞĂƌƐĨƌŽŵŶŽǁǁŚĞŶLJŽƵůŽŽŬĂƚƚŚĂƚŶĂŵĞ͕LJŽƵΖůůŬŶŽǁĞdžĂĐƚůLJ
G 1 9 C ǁŚĂƚŝƚŵĞĂŶƐ͘EŽǁƐƵƉƉŽƐĞŝŶƐƚĞĂĚŽĨ theBearMakesBigPottyInTheWoods ! ŶĂŵĞĚƚŚŝƐǀĂƌŝĂďůĞĂƐƐŚŽǁŶŝŶƚŚĞĨŽůůŽǁŝŶŐĐŽĚĞ͗
public bool potty = true;
[ 35 ] 'ĞƫŶŐŝŶƚŽƚŚĞĞƚĂŝůƐŽĨsĂƌŝĂďůĞƐ
^ƵƌĞ͕LJŽƵŬŶŽǁǁŚĂƚ pottyŝƐ͕ďƵƚǁŽƵůĚLJŽƵŬŶŽǁƚŚĂƚŝƚƌĞĨĞƌƌĞĚƚŽĂďĞĂƌŵĂŬŝŶŐĂďŝŐ ƉŽƩLJŝŶƚŚĞǁŽŽĚƐ͍/ŬŶŽǁƌŝŐŚƚŶŽǁLJŽƵΖůůƵŶĚĞƌƐƚĂŶĚŝƚďĞĐĂƵƐĞLJŽƵũƵƐƚǁƌŽƚĞŝƚ͕ďƵƚ ƐŝdžŵŽŶƚŚƐĚŽǁŶƚŚĞůŝŶĞ͕ĂŌĞƌǁƌŝƟŶŐŚƵŶĚƌĞĚƐŽĨŽƚŚĞƌƐĐƌŝƉƚƐĨŽƌĂůůƐŽƌƚƐŽĨĚŝīĞƌĞŶƚ ƉƌŽũĞĐƚƐ͕LJŽƵΖůůůŽŽŬĂƚƚŚĂƚĂŶĚǁŽŶĚĞƌǁŚĂƚ pottyŵĞĂŶƚ͘zŽƵΖůůŚĂǀĞƚŽƌĞĂĚƐĞǀĞƌĂůůŝŶĞƐ ŽĨĐŽĚĞLJŽƵǁƌŽƚĞƚŽƚƌLJƚŽĮŐƵƌĞŝƚŽƵƚ͘ zŽƵŵĂLJůŽŽŬĂƚƚŚĞĐŽĚĞĂŶĚǁŽŶĚĞƌǁŚŽŝŶƚŚĞŝƌƌŝŐŚƚŵŝŶĚǁŽƵůĚǁƌŝƚĞƐƵĐŚĂƚĞƌƌŝďůĞ ĐŽĚĞ͘^ŽƚĂŬĞƚŚĞƟŵĞƚŽǁƌŝƚĞĂĚĞƐĐƌŝƉƟǀĞĐŽĚĞƚŚĂƚĞǀĞŶĂƐƚƌĂŶŐĞƌĐĂŶůŽŽŬĂƚĂŶĚŬŶŽǁ ǁŚĂƚLJŽƵŵĞĂŶ͘ĞůŝĞǀĞŵĞ͕ŝŶƐŝdžŵŽŶƚŚƐŽƌƉƌŽďĂďůLJůĞƐƐ͕LJŽƵǁŝůůďĞƚŚĂƚƐƚƌĂŶŐĞƌ͘
Begin variable names with lowercase zŽƵƐŚŽƵůĚďĞŐŝŶĂǀĂƌŝĂďůĞŶĂŵĞǁŝƚŚůŽǁĞƌĐĂƐĞďĞĐĂƵƐĞŝƚŚĞůƉƐƚŽĚŝƐƟŶŐƵŝƐŚďĞƚǁĞĞŶ
ĂĐůĂƐƐŶĂŵĞĂŶĚĂǀĂƌŝĂďůĞŶĂŵĞŝŶLJŽƵƌĐŽĚĞ͘dŚĞŽŵƉŽŶĞŶƚŶĂŵĞƐ;ĐůĂƐƐŶĂŵĞƐͿ
9 : > 9 ? ? G 9 @ C
ďĞŐŝŶǁŝƚŚĂĐĂƉŝƚĂůůĞƩĞƌ͘&ŽƌĞdžĂŵƉůĞ͕ŝƚΖƐĞĂƐLJƚŽŬŶŽǁƚŚĂƚ Transform /?
9 B 9 . / 9 = > A D transform /? dŚĞƌĞĂƌĞŽĨĐŽƵƌƐĞĞdžĐĞƉƟŽŶƐƚŽƚŚŝƐŐĞŶĞƌĂůƌƵůĞ͕ĂŶĚĞǀĞƌLJƉƌŽŐƌĂŵŵĞƌŚĂƐĂƉƌĞĨĞƌƌĞĚ ǁĂLJƚŽƵƐĞůŽǁĞƌĐĂƐĞ͕ƵƉƉĞƌĐĂƐĞ͕ĂŶĚƉĞƌŚĂƉƐĂŶƵŶĚĞƌƐĐŽƌĞƚŽďĞŐŝŶĂǀĂƌŝĂďůĞŶĂŵĞ͘ƚ ƚŚĞĞŶĚ͕LJŽƵǁŝůůŚĂǀĞƚŽĚĞĐŝĚĞƵƉŽŶĂŶĂŵŝŶŐĐŽŶǀĞŶƟŽŶLJŽƵůŝŬĞ͘/ĨLJŽƵƌĞĂĚƚŚĞhŶŝƚLJ ĨŽƌƵŵƐ͕ƚŚĞƌĞĂƌĞƐŽŵĞŚĞĂƚĞĚĚĞďĂƚĞƐŽŶŶĂŵŝŶŐǀĂƌŝĂďůĞƐ͘/ŶƚŚŝƐŬ͕/ǁŝůůƐŚŽǁLJŽƵ ŵLJƉƌĞĨĞƌƌĞĚǁĂLJ͕ďƵƚLJŽƵĐĂŶƵƐĞǁŚĂƚĞǀĞƌŝƐŵŽƌĞĐŽŵĨŽƌƚĂďůĞĨŽƌLJŽƵ͘
Using multi-word variable names >ĞƚΖƐƵƐĞƚŚĞƐĂŵĞĞdžĂŵƉůĞĂŐĂŝŶĂƐĨŽůůŽǁƐ͗
public bool theBearMakesBigPottyInTheWoods = true; zŽƵĐĂŶƐĞĞƚŚĂƚƚŚĞǀĂƌŝĂďůĞŶĂŵĞŝƐĂĐƚƵĂůůLJĞŝŐŚƚǁŽƌĚƐƐƋƵŝƐŚĞĚƚŽŐĞƚŚĞƌ͘^ŝŶĐĞǀĂƌŝĂďůĞ ŶĂŵĞƐĐĂŶďĞŽŶůLJŽŶĞǁŽƌĚ͕ďĞŐŝŶƚŚĞĮƌƐƚǁŽƌĚǁŝƚŚĂůŽǁĞƌĐĂƐĞ͕ĂŶĚƚŚĞŶũƵƐƚĐĂƉŝƚĂůŝnjĞ ƚŚĞĮƌƐƚůĞƩĞƌŽĨĞĂĐŚĂĚĚŝƟŽŶĂůǁŽƌĚ͘/ƚŐƌĞĂƚůLJŚĞůƉƐƚŽĐƌĞĂƚĞĚĞƐĐƌŝƉƟǀĞŶĂŵĞƐĂŶĚƐƟůů ďĞŝŶŐĂďůĞƚŽƌĞĂĚŝƚ͘dŚĞƌĞΖƐĂǁŽƌĚĨŽƌƚŚŝƐĐĂůůĞĚ ĐĂŵĞůĂƐŝŶŐ D
+DYHDJRKHUR²YLHZLQJPXOWLZRUGYDULDEOHVLQWKH,QVSHFWRUSDQHO
/ĂůƌĞĂĚLJŵĞŶƟŽŶĞĚƚŚĂƚĨŽƌ publicǀĂƌŝĂďůĞƐ͕hŶŝƚLJΖƐ ǁŝůůƐĞƉĂƌĂƚĞĞĂĐŚǁŽƌĚ
ĂŶĚĐĂƉŝƚĂůŝnjĞƚŚĞĮƌƐƚǁŽƌĚ͘'ŽĂŚĞĂĚ͕ĂĚĚƚŚĞƉƌĞǀŝŽƵƐƐƚĂƚĞŵĞŶƚƚŽ LearningScript
, 9 @ A > D
ĂŶĚƐĞĞǁŚĂƚhŶŝƚLJĚŽĞƐǁŝƚŚŝƚŝŶƚŚĞ
[ 36 ]
Ä ¾ Æ Á ä E
Declaring a variable and its type
B A . - B 9 . / 9 = > A ǁĞǁĂŶƚƚŽƵƐĞŝŶĂƐĐƌŝƉƚŵƵƐƚďĞĚĞĐůĂƌĞĚŝŶĂƐƚĂƚĞŵĞŶƚ͘tŚĂƚĚŽĞƐƚŚĂƚ ŵĞĂŶ͍tĞůů͕ďĞĨŽƌĞhŶŝƚLJĐĂŶƵƐĞĂǀĂƌŝĂďůĞ͖ǁĞŚĂǀĞƚŽƚĞůůhŶŝƚLJĂďŽƵƚŝƚĮƌƐƚ͘KŬƚŚĞŶ͕ ǁŚĂƚĂƌĞǁĞƐƵƉƉŽƐĞĚƚŽƚĞůůhŶŝƚLJĂďŽƵƚƚŚĞǀĂƌŝĂďůĞ͍
dŚĞƌĞĂƌĞŽŶůLJƚŚƌĞĞĂďƐŽůƵƚĞƌĞƋƵŝƌĞŵĞŶƚƐĨŽƌĚĞĐůĂƌŝŶŐĂǀĂƌŝĂďůĞĂŶĚƚŚĞLJĂƌĞĂƐĨŽůůŽǁƐ͗
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
tĞŚĂǀĞƚŽĞŶĚƚŚĞĚĞĐůĂƌĂƟŽŶƐƚĂƚĞŵĞŶƚǁŝƚŚĂƐĞŵŝͲĐŽůŽŶ dŚĞĨŽůůŽǁŝŶŐŝƐƚŚĞƐLJŶƚĂdžǁĞƵƐĞĨŽƌĚĞĐůĂƌŝŶŐĂǀĂƌŝĂďůĞ͗ typeOfData nameOfTheVariable;
>ĞƚΖƐƵƐĞŽŶĞŽĨƚŚĞ LearningScriptǀĂƌŝĂďůĞƐĂƐĂŶĞdžĂŵƉůĞ͖ƚŚĞĨŽůůŽǁŝŶŐŝƐŚŽǁƚŽ ĚĞĐůĂƌĞĂǀĂƌŝĂďůĞǁŝƚŚƚŚĞďĂƌĞŵŝŶŝŵƵŵƌĞƋƵŝƌĞŵĞŶƚƐ͗
int number1;
dŚĞĨŽůůŽǁŝŶŐŝƐǁŚĂƚǁĞŚĂǀĞ͗
/? 2 1 A 2 - , A + E C 9 2 9 2 1 9 2
ZĞƋƵŝƌĞŵĞŶƚηϭ number1ĐĂŶƐƚŽƌĞ͕ǁŚŝĐŚŝŶƚŚŝƐĐĂƐĞŝƐĂŶ
F A 9 @ / @ 0 9 @ / @ 2 A 0 A . intG
ZĞƋƵŝƌĞŵĞŶƚηϮ ŝƐĂŶĂŵĞǁŚŝĐŚŝƐ number1
/? 2 1 A ? A F / : + > + @ 9 2 2 1 A A @ C (
ZĞƋƵŝƌĞŵĞŶƚηϯ
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
ƌĞƋƵŝƌĞŵĞŶƚŽĨĞŶĚŝŶŐĂƐƚĂƚĞŵĞŶƚǁŝƚŚĂƐĞŵŝͲĐŽůŽŶŚĂƐďĞĞŶĚŝƐĐƵƐƐĞĚ͘dŚĞĮƌƐƚ ƌĞƋƵŝƌĞŵĞŶƚŽĨƐƉĞĐŝĨLJŝŶŐƚŚĞƚLJƉĞŽĨĚĂƚĂǁŝůůďĞĐŽǀĞƌĞĚŶĞdžƚ͘
dŚĞĨŽůůŽǁŝŶŐŝƐǁŚĂƚǁĞŬŶŽǁĂďŽƵƚƚŚŝƐďĂƌĞŵŝŶŝŵƵŵĚĞĐůĂƌĂƟŽŶĂƐĨĂƌĂƐhŶŝƚLJ
/? : + @ : A . @ A C I
= - C A E 9 < > 2
dŚĞƌĞΖƐŶŽ publicŵŽĚŝĮĞƌǁŚŝĐŚŵĞĂŶƐŝƚΖƐ private
, 9 @ A > G + . = A 9 : : A ? ? / = > A E . + F + 2 1 A . ? : . / , 2 ?
/ƚǁŽŶΖƚĂƉƉĞĂƌŝŶƚŚĞ
1 A B 9 > < A ? 2 + . A C / @ number1ĚĞĨĂƵůƚƐƚŽnjĞƌŽ
[ 37 ] 'ĞƫŶŐŝŶƚŽƚŚĞĞƚĂŝůƐŽĨsĂƌŝĂďůĞƐ The most common built-in variable types
dŚŝƐƐĞĐƟŽŶŽŶůLJƐŚŽǁƐƚŚĞŵŽƐƚĐŽŵŵŽŶďƵŝůƚͲŝŶƚLJƉĞƐŽĨĚĂƚĂƚŚĂƚηƉƌŽǀŝĚĞƐĨŽƌƵƐĂŶĚ
2 1 9 2 B 9 . / 9 = > A ? : 9 @ ? 2 + . A D
O < ? 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 - + <
Þ ß à G
á î
ǁŝůůĐƌĞĂƚĞůĂƚĞƌǁŝůůďĞĚŝƐĐƵƐƐĞĚŝŶ ƌĞĂƟŶŐƚŚĞ'ĂŵĞƉůĂLJŝƐ:ƵƐƚĂWĂƌƚŽĨƚŚĞ
P à Q / @ 2 1 A C /? : < ? ? / + @ + E ¤ + 2 J - @ 2 9 ì D á dŚĞĨŽůůŽǁŝŶŐĐŚĂƌƚƐŚŽǁƐƚŚĞŵŽƐƚĐŽŵŵŽŶďƵŝůƚͲŝŶƚLJƉĞƐŽĨĚĂƚĂLJŽƵǁŝůůƵƐĞŝŶhŶŝƚLJ͗
Type Contents of the variable int A simple integer, such as the number 3 float A number with a decimal, such as the number 3.14 string Characters in double quotes, such as, “Watch me go now”
bool A boolean, eithertrue or false
© ¤ û ¤ ĂƌĞĨĞǁŵŽƌĞďƵŝůƚͲŝŶƚLJƉĞƐŽĨĚĂƚĂƚŚĂƚĂƌĞŶΖƚƐŚŽǁŶŝŶƚŚĞƉƌĞĐĞĚŝŶŐ
ĐŚĂƌƚ͘,ŽǁĞǀĞƌ͕ŽŶĐĞLJŽƵƵŶĚĞƌƐƚĂŶĚƚŚĞŵŽƐƚĐŽŵŵŽŶƚLJƉĞƐ͕LJŽƵΖůůŚĂǀĞŶŽ
¢ û ¥ § ¤ ¡ § ¨ ý ü þ ¢ £ © ¤ £ © ¤ û ¥ ý § £ R ý ü £ ¢ ¤ ÿ ý ¤ ? ¤ û ü ¤ ¤ £ ÿ ¤ £ © ¤ ¡ tĞŬŶŽǁƚŚĞŵŝŶŝŵƵŵƌĞƋƵŝƌĞŵĞŶƚƐƚŽĚĞĐůĂƌĞĂǀĂƌŝĂďůĞ͘,ŽǁĞǀĞƌ͕ǁĞĐĂŶĂĚĚŵŽƌĞ
ŝŶĨŽƌŵĂƟŽŶƚŽĂĚĞĐůĂƌĂƟŽŶƚŽƐĂǀĞŽƵƌƟŵĞĂŶĚĐŽĚŝŶŐ͘tĞΖǀĞĂůƌĞĂĚLJƐĞĞŶƐŽŵĞĞdžĂŵƉůĞƐ @ / LearningScriptŽĨĂƐƐŝŐŶŝŶŐǀĂůƵĞƐǁŚĞŶƚŚĞǀĂƌŝĂďůĞŝƐďĞŝŶŐĚĞĐůĂƌĞĚĂŶĚŶŽǁǁĞΖůů ƐĞĞĨĞǁŵŽƌĞĞdžĂŵƉůĞƐ͘
7LPHIRUDFWLRQ²DVVLJQLQJYDOXHVZKLOHGHFODULQJWKHYDULDEOH
C C ? + F A F + . A B 9 . / 9 = > A ? 2 + ' LearningScriptƵƐŝŶŐƚŚĞƚLJƉĞƐƐŚŽǁŶŝŶƚŚĞƉƌĞǀŝŽƵƐĐŚĂƌƚ͘
tŚŝůĞĚĞĐůĂƌŝŶŐƚŚĞǀĂƌŝĂďůĞƐ͕ĂƐƐŝŐŶƚŚĞŵǀĂůƵĞƐĂƐƐŚŽǁŶŝŶƚŚĞĨŽůůŽǁŝŶŐƐĐƌĞĞŶƐŚŽƚ͘^ĞĞ
, 9 @ A > D 1 A ? A 9 . A 9 > >
ŚŽǁƚŚĞLJĂƌĞƉƌĞƐĞŶƚĞĚŝŶƚŚĞ publicǀĂƌŝĂďůĞƐƐŽƚŚĞLJǁŝůů
9 , , A 9 . / @ 2 1 A , 9 @ A > I
[ 38 ]
Ä ¾ Æ Á ä E
What just happened?
, 9 @ A > I
dŚĞĨŽůůŽǁŝŶŐƐĐƌĞĞŶƐŚŽƚƐŚŽǁƐǁŚĂƚhŶŝƚLJƉƌĞƐĞŶƚƐŝŶƚŚĞ
1 A B 9 . / 9 = > A ? 9 . A C /? , > 9 - A C / @ 2 1 A
ƉĂŶĞůǁŝƚŚƚŚĞǀĂůƵĞƐĂůƌĞĂĚLJƐĞƚ͘
Where you declare a variable is important
C 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 A !
zŽƵǁŝůůďĞ
D 1 A - 9 . A F A F = A . ? + E 2 1 A ƐŚŽǁŶLJŽƵƐŽĨĂƌĂƌĞĐĂůůĞĚ ŵĞŵďĞƌǀĂƌŝĂďůĞƐ LearningScript
ĐůĂƐƐ͕ŶŽƚĚĞĐůĂƌĞĚǁŝƚŚŝŶĂŶLJŵĞƚŚŽĚ͘dŚĞƐĞŵĞŵďĞƌǀĂƌŝĂďůĞƐĂƌĞƚŚĞŽŶůLJǀĂƌŝĂďůĞƐƚŚĂƚ
, 9 @ A > + . = A / @ 0 9 : : A ? ? A C = - + 2 1 A . ? : . / , 2 ? D
ŚĂǀĞƚŚĞŽƉƟŽŶŽĨďĞŝŶŐĚŝƐƉůĂLJĞĚŝŶƚŚĞ
^ŽǁŚĞƌĞŝŶƚŚĞĐůĂƐƐƐŚŽƵůĚƚŚĞŵĞŵďĞƌǀĂƌŝĂďůĞƐďĞĚĞĐůĂƌĞĚ͍dŚŝƐŝƐĂŶŽƚŚĞƌƐƵďũĞĐƚƚŚĂƚ
9 @ > A 9 C 2 +
: ŚĞĂƚĞĚĚŝƐĐƵƐƐŝŽŶƐ͘WĞƌƐŽŶĂůůLJ͕/ĚĞĐůĂƌĞƚŚĞŵĂƚƚŚĞƚŽƉŽĨĂĐůĂƐƐĮůĞďĞĨŽƌĞ
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 !
ǀĂƌŝĂďůĞƐĐůŽƐĞƚŽƚŚĞƉŽŝŶƚŽĨĮƌƐƚƵƐĞŝŶĂŵĞƚŚŽĚ͘
[ 39 ]
'ĞƫŶŐŝŶƚŽƚŚĞĞƚĂŝůƐŽĨsĂƌŝĂďůĞƐ
C ¤ § ú û ý ü þ û ¡ ¤ ¡ ¥ ¤ û ? ú û ý ú ¥ § ¤ ÿ ú £ £ © ¤ ¥ ¤ þ ý ü ü ý ü þ ú § ú ÿ ÿ ¡ ú
þ ý ? ¤ ú ¡ ¤ ü £ ú § § ¤ £ © ú £ £ © ¤ ÿ ¤ ¡ ¤ ¡ ¥ ¤ û ? ú û ý ú ¥ § ¤ ÿ ú ü ¥ ¤ ÿ ¤
ĞǀĞƌLJǁŚĞƌĞŝŶƚŚĞƐĐƌŝƉƚ͘
tĞǁŝůůĂůƐŽďĞĐƌĞĂƟŶŐǀĂƌŝĂďůĞƐŝŶŵĞƚŚŽĚƐ͘dŚĞƐĞǀĂƌŝĂďůĞƐĂƌĞĐĂůůĞĚĂƐ ůŽĐĂůǀĂƌŝĂďůĞƐ
, 9 @ A > G @ + . : 9 @ 2 1 A - = A 9 : : A ? ? A C = - + 2 1 A .
ĂŶĚĂƌĞŶĞǀĞƌĚŝƐƉůĂLJĞĚŝŶƚŚĞhŶŝƚLJΖƐ
? : . / , 2 ? D 1 /? = . / @ 0 ? < ? 2 + 9 @ + 2 1 A . , . + 0 . 9 F F / @ 0 : + @ : A , 2 : 9 > > A C D ǀĂƌŝĂďůĞƐĐŽƉĞ
9DULDEOHVFRSH²GHWHUPLQLQJZKHUHDYDULDEOHFDQEHXVHG sĂƌŝĂďůĞƐĐŽƉĞŝƐĂĨĂŶĐLJǁĂLJŽĨƐĂLJŝŶŐΗtŚĞƌĞŝŶƚŚĞƐĐƌŝƉƚĚŽĞƐĂǀĂƌŝĂďůĞĞdžŝƐƚΗ͘dŚĞ ĨŽůůŽǁŝŶŐƐĐƌĞĞŶƐŚŽƚĞdžƉůĂŝŶƐLJŽƵƚŚĞƐĐŽƉĞŽĨǀĂƌŝĂďůĞƐ͗
zŽƵŵŝŐŚƚŚĂǀĞŶŽƟĐĞĚƚŚĂƚƚŚĞƌĞĐƚĂŶŐƵůĂƌďůŽĐŬƐƐƚĂƌƚĂŶĚĞŶĚǁŝƚŚĐƵƌůLJͲďƌĂĐĞƐ͘:ƵƐƚ
> / ; A 2 1 A F A 2 1 + C / @ Þ ß à G
á S
AddTwoNumbers() /ŶƚƌŽĚƵĐŝŶŐƚŚĞƵŝůĚŝŶŐďůŽĐŬƐĨŽƌhŶŝƚLJ
͕ƚŚĞĐŽĚĞďĞƚǁĞĞŶƚŚĞŽƉĞŶŝŶŐĐƵƌůLJͲďƌĂĐĞĂŶĚĂĐůŽƐŝŶŐĐƵƌůLJͲďƌĂĐĞŝƐĐĂůůĞĚĂ ĐŽĚĞ
ďůŽĐŬ D ďƐŽůƵƚĞůLJĂŶLJǁŚĞƌĞŝŶĂĐŽĚĞƚŚĂƚLJŽƵŚĂǀĞĂŶŽƉĞŶŝŶŐĐƵƌůLJͲďƌĂĐĞ͕ƚŚĞƌĞǁŝůůďĞĂ
> + ? / @ 0 : ĐƵƌůLJͲďƌĂĐĞƚŽŵĂƚĐŚ͘ůůƚŚĞĐŽĚĞďĞƚǁĞĞŶƚŚĞƚǁŽďƌĂĐĞƐŝƐĂĐŽĚĞďůŽĐŬ͘
[ 40 ]
Ä ¾ Æ Á ä E
EŽƟĐĞƚŚĂƚƚŚĞĐŽĚĞďůŽĐŬƐĐĂŶďĞŶĞƐƚĞĚŝŶƐŝĚĞŽƚŚĞƌĐŽĚĞďůŽĐŬƐ͘
zŽƵŶŽƌŵĂůůLJĚŽŶΖƚũƵƐƚĐƌĞĂƚĞďĂƌĞďůŽĐŬƐŽĨĐŽĚĞǁŝƚŚĐƵƌůLJͲďƌĂĐĞƐůŝŬĞ/
T ¤ ¥ § ¨ ÿ ú û ¤ ÿ ú § § ¢ ú û £ £ © ¤ û £ © ý ü þ ÿ ÿ ©
ĚŝĚǁŝƚŚ ŽĚĞůŽĐŬϯ
ú ÿ ý ÿ £ ú £ ¤ ¡ ¤ ü £ ÿ § ¢ ý ü þ ÿ £ ú £ ¤ ¡ ¤ ü £ ÿ ú ü ¡ ¤ £ © ÿ © ý ÿ ¤ ¦ ú ¡ ¢ § ¤ ý ÿ U ÿ £ £
ĚĞŵŽŶƐƚƌĂƚĞŚŽǁƚŚĞƐĐŽƉĞŽĨĂǀĂƌŝĂďůĞǁŽƌŬƐ͕ĂŶĚǁŚĞƌĞĂǀĂƌŝĂďůĞĞdžŝƐƚƐ
ú ü ý ÿ ÿ ¤ ú ¥ § ¤ dŚĞĨŽůůŽǁŝŶŐŝƐǁŚĂƚLJŽƵŚĂǀĞ͗
>ŝŶĞϭϲ͗ string block3 = "Block 3 text";
1 A , . A : A C / @ 0 > / @ A C A : > 9 . A ? 9 > + : 9 > B 9 . / 9 = > A @ 9 F A C D 1 /? B 9 . / 9 = > A A ì /? 2 ? / @
string block3
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 + < 2 ? /C A + E
ŽĚĞůŽĐŬϯ ! block3
? < : 1 9 ? / @ + .
ŽĚĞůŽĐŬϯ G ŽĚĞůŽĐŬϮ ŽĚĞůŽĐŬϭ ͕hŶŝƚLJǁŝůůŐŝǀĞLJŽƵĂŶĞƌƌŽƌŵĞƐƐĂŐĞ
9 - / @ 0 2 1 9 2 B 9 . / 9 = > A
? block3ĚŽĞƐŶΖƚĞdžŝƐƚ͘
1 A ? : + , A + E 2 1 A B 9 . / 9 = > A block3ŝƐƚŚĞĐŽĚĞďůŽĐŬĚĞĮŶĞĚďLJƚŚĞĐƵƌůLJͲďƌĂĐĞƐŽĨůŝŶĞƐϭϯ
ĂŶĚϭϴ͘
9 . / 9 = > A I EŽǁůĞƚΖƐůŽŽŬĂƚƚŚĞ block1 B
>ŝŶĞϲ͗ string block1 = "Block 1 text";
1 A , . A : A C / @ 0 > / @ A C A : > 9 . A ? 9 2 - , A F A F = A . B 9 . / 9 = > A @ 9 F A C D 1 /? B 9 . / 9 = > A
string block1
D 1 /? : + C A = > + : ; = A 0 / @ ? + @ > / @ A L 9 @ C A ì /? 2 ? / @ 2 1 A : + C A = > + : ; 2 1 9 2 /? > 9 = A > A C
ŽĚĞůŽĐŬϭ
A @ C ? + @ > / @ A 4 5 D 1 /? F A 9 @ ? 2 1 A B 9 . / 9 = > A
block1ĐĂŶďĞƵƐĞĚĞǀĞƌLJǁŚĞƌĞ͕ŝŶĐůƵĚŝŶŐ ŽĚĞ
D 1 A B 9 . / 9 = > A
ůŽĐŬϮĂŶĚŽĚĞůŽĐŬϯ ďĞĐĂƵƐĞ͕ƚŚĞLJĂƌĞĂůƐŽǁŝƚŚŝŶ ŽĚĞůŽĐŬϭ block1
+ @ > / @ A 6 5 G 9 @ C / @ < ? A C / @
/? ŽĚĞůŽĐŬϮ ŽĚĞůŽĐŬϯ ŽŶůŝŶĞϭϰ͘
1 A ? : + , A + E 2 1 A
block1ǀĂƌŝĂďůĞŝƐƚŚĞĐŽĚĞďůŽĐŬĚĞĮŶĞĚďLJƚŚĞĐƵƌůLJͲďƌĂĐĞƐďĞƚǁĞĞŶ
> / @ A ? L 9 @ C 4 5 D
3RSTXL]²NQRZLQJKRZWRGHFODUHDYDULDEOH
Yϭ͘tŚĂƚŝƐƚŚĞƉƌŽƉĞƌǁĂLJƚŽŶĂŵĞĂǀĂƌŝĂďůĞ͍
YϮ͘,ŽǁĚŽLJŽƵŵĂŬĞĂǀĂƌŝĂďůĞĂƉƉĞĂƌŝŶƚŚĞhŶŝƚLJΖƐ ƉĂŶĞů͍
Yϯ͘ĂŶĂůůǀĂƌŝĂďůĞƐŝŶĂƐĐƌŝƉƚƐŚŽǁŝŶƚŚĞ ƉĂŶĞů͍
Yϰ͘ĂŶĂǀĂƌŝĂďůĞƐƚŽƌĞĂŶLJƚLJƉĞŽĨĚĂƚĂ͍
[ 41 ] 'ĞƫŶŐŝŶƚŽƚŚĞĞƚĂŝůƐŽĨsĂƌŝĂďůĞƐ Summary
tĞĮƌƐƚĐŽǀĞƌĞĚŚŽǁƚŽǁƌŝƚĞĂηƐƚĂƚĞŵĞŶƚ͕ĞƐƉĞĐŝĂůůLJƚŚĞƐĞŵŝͲĐŽůŽŶƚŽƚĞƌŵŝŶĂƚĞ
, 9 @ A > 9 . A F A F = A .
ĂƐƚĂƚĞŵĞŶƚ͘ůůƚŚĞŽŵƉŽŶĞŶƚƉƌŽƉĞƌƟĞƐƐŚŽǁŶŝŶƚŚĞ
, 9 @ A > G
ǀĂƌŝĂďůĞƐŝŶƚŚĞŽŵƉŽŶĞŶƚΖƐĐůĂƐƐ͘DĞŵďĞƌǀĂƌŝĂďůĞƐĐĂŶďĞƐŚŽǁŶŝŶƚŚĞ
D 1 A 2 - , A + E C 9 2 9 9 ŽƌĂĐĐĞƐƐĞĚďLJŽƚŚĞƌƐĐƌŝƉƚƐǁŚĞŶƚŚĞǀĂƌŝĂďůĞŝƐĚĞĐůĂƌĞĚĂƐ public ǀĂƌŝĂďůĞĐĂŶƐƚŽƌĞŝƐƐƉĞĐŝĮĞĚǁŚĞŶŝƚΖƐĚĞĐůĂƌĞĚ͘&ŝŶĂůůLJ͕ǁĞůĞĂƌŶĞĚƚŚĂƚǀĂƌŝĂďůĞƐĐŽƉĞ ĚĞƚĞƌŵŝŶĞƐǁŚĞƌĞŝƚŝƐĂůůŽǁĞĚƚŽďĞƵƐĞĚ͘
EŽǁƚŚĂƚǁĞΖǀĞůĞĂƌŶĞĚĂďŽƵƚǀĂƌŝĂďůĞƐ͕ǁĞΖƌĞƌĞĂĚLJƚŽůĞĂƌŶƚŚĞĚĞƚĂŝůƐŽĨηŵĞƚŚŽĚƐƚŚĂƚ ǁŝůůƵƐĞƚŚĞǀĂƌŝĂďůĞƐǁĞĐƌĞĂƚĞʹǁŚŝĐŚŝƐƚŚĞƚŽƉŝĐŽĨƚŚĞŶĞdžƚĐŚĂƉƚĞƌ͘
[ 42 ] 4 *HWWLQJLQWRWKH'HWDLOVRI0HWKRGV
/ŶƚŚĞƉƌĞǀŝŽƵƐĐŚĂƉƚĞƌ͕LJŽƵǁĞƌĞŝŶƚƌŽĚƵĐĞĚƚŽĂǀĂƌŝĂďůĞΖƐƐĐŽƉĞͶǁŚĞƌĞ ĂǀĂƌŝĂďůĞĞdžŝƐƚƐĂŶĚŝƐĂůůŽǁĞĚƚŽďĞƵƐĞĚ͘dŚĞƐĐŽƉĞŝƐĚĞƚĞƌŵŝŶĞĚďLJƚŚĞ ΗŽƉĞŶŝŶŐΗĂŶĚΗĐůŽƐŝŶŐΗĐƵƌůLJďƌĂĐĞƐ͘dŚĞƉƵƌƉŽƐĞŽĨƚŚŽƐĞĐƵƌůLJďƌĂĐĞƐŝƐƚŽĂĐƚ ĂƐĂĐŽŶƚĂŝŶĞƌĨŽƌĂďůŽĐŬŽĨĞdžĞĐƵƚĂďůĞĐŽĚĞ͕ĂĐŽĚĞďůŽĐŬ͘/ŶƐĞĐŽŶĚĐŚĂƉƚĞƌLJŽƵ ƐĂǁƚŚĂƚĂŵĞƚŚŽĚŝƐĂĐŽĚĞďůŽĐŬƚŚĂƚĐĂŶĞdžĞĐƵƚĞďLJũƵƐƚĐĂůůŝŶŐƚŚĞŵĞƚŚŽĚΖƐ ŶĂŵĞ͘/ƚΖƐƚŝŵĞƚŽƐĞĞƚŚĞŝŵƉŽƌƚĂŶĐĞŽĨĐŽĚĞďůŽĐŬƐĂŶĚƚŚĞǀĂƌŝĂďůĞƐƵƐĞĚŝŶ ƚŚĞŵ͘ŵĞƚŚŽĚĚĞĨŝŶĞƐĂĐŽĚĞďůŽĐŬǁŚŝĐŚďĞŐŝŶƐĂŶĚĞŶĚƐǁŝƚŚĐƵƌůLJďƌĂĐĞƐ͘
/ŶƚŚŝƐĐŚĂƉƚĞƌǁĞǁŝůůĐŽǀĞƌƚŚĞĨĞĂƚƵƌĞƐŽĨŵĞƚŚŽĚƐ͗
ŶĚŝŶŐŵĞƚŚŽĚĚĞĮŶŝƟŽŶƐǁŝƚŚĐƵƌůLJďƌĂĐĞƐ
? / @ 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 + C "
9 @ C F A 2 1 + C ? hƐŝŶŐhŶŝƚLJΖƐ Update() Start()
sĂƌŝĂďůĞƐĂƌĞƚŚĞĮƌƐƚŵĂũŽƌďƵŝůĚŝŶŐďůŽĐŬŽĨη͕ŵĞƚŚŽĚƐĂƌĞƚŚĞƐĞĐŽŶĚ͕ƐŽůĞƚΖƐĚŝǀĞ
/ @ 2 + F A 2 1 + C ? D 'ĞƫŶŐŝŶƚŽƚŚĞĞƚĂŝůƐŽĨDĞƚŚŽĚƐ
(QGLQJDPHWKRGGHÀQLWLRQXVLQJFXUO\EUDFHV
2 2 1 A = A 0 / @ @ / @ 0 + E Þ ß à G - + < > A 9 . @ A C 9 = + < 2 *
'
á é 'ĞƫŶŐŝŶƚŽƚŚĞĞƚĂŝůƐŽĨsĂƌŝĂďůĞƐ ƐƚĂƚĞŵĞŶƚƐĂŶĚƚŚĞƌĞƋƵŝƌĞŵĞŶƚƚŽĞŶĚƚŚĞŵǁŝƚŚĂƐĞŵŝĐŽůŽŶ͘ŵĞƚŚŽĚĚĞĮŶŝƟŽŶŚĂƐ
ĂĚŝīĞƌĞŶƚƌĞƋƵŝƌĞŵĞŶƚ͘
@ C ŵĞƚŚŽĚĚĞĮŶŝƟŽŶĞŶĚƐǁŝƚŚĂĐŽĚĞďůŽĐŬďĞƚǁĞĞŶĂƉĂŝƌŽĨĐƵƌůLJďƌĂĐĞƐ͘ KEKd A ĂŵĞƚŚŽĚĚĞĮŶŝƟŽŶǁŝƚŚĂƐĞŵŝĐŽůŽŶ͘
/ĨLJŽƵĚŽĂĐĐŝĚĞŶƚĂůůLJƉůĂĐĞĂƐĞŵŝĐŽůŽŶĂƚƚŚĞĞŶĚ͕DŽŶŽĞǀĞůŽƉǁŝůůŐůĂĚůLJƌĞŵŝŶĚ LJŽƵǁŝƚŚĂŶĞƌƌŽƌŵĞƐƐĂŐĞƚŚĂƚLJŽƵΖƌĞŶŽƚƐƵƉƉŽƐĞĚƚŽƵƐĞĂƐĞŵŝĐŽůŽŶĂƚƚŚĞĞŶĚ ŽĨĂŵĞƚŚŽĚĚĞĮŶŝƟŽŶ͘
Using methods in a script
1 A . A 9 . A
ƚǁŽƌĞĂƐŽŶƐĨŽƌƵƐŝŶŐŵĞƚŚŽĚƐŝŶĂƐĐƌŝƉƚ͗
+ , . + B /C A = A 1 9 B / + . 2 + 9 9 F A # = A : 2
%
dŽĐƌĞĂƚĞƌĞƵƐĂďůĞƐĞĐƟŽŶƐŽĨĐŽĚĞ
V § § £ © ¤ ¤ ¦ ¤ £ ú ¥ § ¤ ¤ ý ü ú ÿ û ý ¢ £ ý ÿ ý ü ¡ ¤ £ © ÿ
dŚĞĮƌƐƚƉƵƌƉŽƐĞŽĨĂŵĞƚŚŽĚŝƐƚŽǁŽƌŬǁŝƚŚƚŚĞŵĞŵďĞƌǀĂƌŝĂďůĞƐŽĨƚŚĞĐůĂƐƐ͘dŚĞ ŵĞŵďĞƌǀĂƌŝĂďůĞƐƐƚŽƌĞĚĂƚĂƚŚĂƚΖƐŶĞĞĚĞĚĨŽƌĂŽŵƉŽŶĞŶƚƚŽŐŝǀĞĂ'ĂŵĞKďũĞĐƚŝƚƐ ďĞŚĂǀŝŽƌ͘dŚĞǁŚŽůĞƌĞĂƐŽŶĨŽƌǁƌŝƟŶŐĂƐĐƌŝƉƚŝƐƚŽŵĂŬĞĂ'ĂŵĞKďũĞĐƚĚŽƐŽŵĞƚŚŝŶŐ ŝŶƚĞƌĞƐƟŶŐ͘ŵĞƚŚŽĚŝƐƚŚĞƉůĂĐĞǁĞŵĂŬĞƚŚĞďĞŚĂǀŝŽƌĐŽŵĞƚŽůŝĨĞ͘ dŚĞƐĞĐŽŶĚƉƵƌƉŽƐĞŽĨĂŵĞƚŚŽĚŝƐƚŽĐƌĞĂƚĞĐŽĚĞďůŽĐŬƐƚŚĂƚǁŝůůďĞƵƐĞĚŽǀĞƌĂŶĚŽǀĞƌ ĂŐĂŝŶ͘zŽƵĚŽŶΖƚǁĂŶƚƚŽďĞǁƌŝƟŶŐƚŚĞƐĂŵĞĐŽĚĞŽǀĞƌĂŶĚŽǀĞƌ͘/ŶƐƚĞĂĚ͕LJŽƵƉůĂĐĞƚŚĞ ĐŽĚĞŝŶƚŽĂĐŽĚĞďůŽĐŬĂŶĚŐŝǀĞŝƚĂŶĂŵĞƐŽLJŽƵĐĂŶĐĂůůŝƚǁŚĞŶŶĞĞĚĞĚ͘
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 - + < ůǁĂLJƐƵƐĞŵĞĂŶŝŶŐĨƵů !
ĚŽŶΖƚƵƐĞŐŽŽĚŶĂŵĞƐ͕ƚŚĞŶƐŝdžŵŽŶƚŚƐĨƌŽŵŶŽǁLJŽƵǁŝůůďĞƐĂĚ͘
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 9
%
. D ŶĂŵĞƚŚĂƚƐŽƵŶĚƐůŝŬĞΗĂĐƟŽŶ͘Η&ŽƌĞdžĂŵƉůĞ͕ JumpOverTheFence + ClimbTheWall zŽƵĐĂŶůŽŽŬĂƚƚŚŽƐĞŶĂŵĞƐĂŶĚŬŶŽǁĞdžĂĐƚůLJǁŚĂƚƚŚĞŵĞƚŚŽĚŝƐŐŽŝŶŐƚŽĚŽ͘
[ 44 ]
Ä ¾ Æ Á ä W
ŽŶΖƚŵĂŬĞƚŚĞŵƚŽŽƐŝŵƉůĞ͘^ƵƉƉŽƐĞLJŽƵŶĂŵĞĂŵĞƚŚŽĚ Wiggle͘^ƵƌĞLJŽƵŬŶŽǁǁŚĂƚ tŝŐŐůĞŵĞĂŶƐƌŝŐŚƚŶŽǁ͕ďƵƚŝŶƐŝdžŵŽŶƚŚƐLJŽƵΖůůůŽŽŬĂƚƚŚĂƚĂŶĚƐĂLJΗtŝŐŐůĞ͍tŝŐŐůĞ ǁŚĂƚ͍Η/ƚŽŶůLJƚĂŬĞƐĂŵŽŵĞŶƚƚŽďĞĂůŝƩůĞŵŽƌĞƉƌĞĐŝƐĞĂŶĚǁƌŝƚĞ WiggleMyButt D EŽǁǁŚĞŶLJŽƵƐĞĞƚŚĂƚŵĞƚŚŽĚŶĂŵĞ͕LJŽƵΖůůŬŶŽǁĞdžĂĐƚůLJǁŚĂƚŝƚΖƐŐŽŝŶŐƚŽĚŽ͘
Begin method names with an uppercase letter
tŚLJ͍tĞĚŽƚŚŝƐƚŽŵĂŬĞŝƚĞĂƐŝĞƌƚŽƚĞůůƚŚĞĚŝīĞƌĞŶĐĞďĞƚǁĞĞŶǁŚĂƚŝƐĂĐůĂƐƐŽƌŵĞƚŚŽĚ͕
ĂŶĚǁŚĂƚŝƐĂǀĂƌŝĂďůĞ͘ůƐŽ͕DŝĐƌŽƐŽŌƐƵŐŐĞƐƚƐďĞŐŝŶŶŝŶŐ ŵĞƚŚŽĚŶĂŵĞƐ ǁŝƚŚĂŶ X
ůĞƩĞƌ͘/ĨƐŽŵĞŽŶĞĞůƐĞĞǀĞƌůŽŽŬƐĂƚLJŽƵƌĐŽĚĞ͕ƚŚĞLJǁŝůůĞdžƉĞĐƚƚŽƐĞĞ ŵĞƚŚŽĚŶĂŵĞƐ
ďĞŐŝŶŶŝŶŐǁŝƚŚĂŶ X ůĞƩĞƌ͘
8VLQJPXOWLZRUGQDPHVIRUDPHWKRG
? / @ 0 2 1 /? A ì 9 F , > A 9 0 9 / @ I )
void AddTwoNumbers () { // Code goes here } zŽƵĐĂŶƐĞĞƚŚĞŶĂŵĞŝƐĂĐƚƵĂůůLJƚŚƌĞĞǁŽƌĚƐƐƋƵŝƐŚĞĚƚŽŐĞƚŚĞƌ͘^ŝŶĐĞŵĞƚŚŽĚŶĂŵĞƐĐĂŶ ŽŶůLJŽŶĞǁŽƌĚ͕ƚŚĞĮƌƐƚǁŽƌĚďĞŐŝŶƐƵƉƉĞƌĐĂƐĞ͕ƚŚĞŶũƵƐƚĐĂƉŝƚĂůŝnjĞƚŚĞĮƌƐƚůĞƩĞƌŽĨĞĂĐŚ ĂĚĚŝƟŽŶĂůǁŽƌĚ͘&ŽƌĞdžĂŵƉůĞ͕WĂƐĐĂůĂƐŝŶŐ͘
3DUHQWKHVHVDUHSDUWRIWKHPHWKRGQDPH
1 A F A 2 1 + C ŶĂŵĞĂůǁĂLJƐŝŶĐůƵĚĞƐĂƉĂŝƌŽĨƉĂƌĞŶƚŚĞƐĞƐŽŶƚŚĞĞŶĚ͘dŚĞƉĂƌĞŶƚŚĞƐĞƐŶŽƚ ŽŶůLJůĞƚLJŽƵŬŶŽǁƚŚĂƚƚŚĞŶĂŵĞŝƐĂŵĞƚŚŽĚ͕ďƵƚƚŚĞLJĚŽƐĞƌǀĞĂŶŝŵƉŽƌƚĂŶƚƉƵƌƉŽƐĞŽĨ ĂůůŽǁŝŶŐLJŽƵƚŽŝŶƉƵƚƐŽŵĞĚĂƚĂŝŶƚŽƚŚĞŵĞƚŚŽĚǁŚĞŶŶĞĞĚĞĚ͘
'HÀQLQJDPHWKRGSURSHUO\
:ƵƐƚůŝŬĞĨŽƌǀĂƌŝĂďůĞƐ͕ǁĞŚĂǀĞƚŽůĞƚhŶŝƚLJŬŶŽǁĂďŽƵƚĂŵĞƚŚŽĚďĞĨŽƌĞǁĞĐĂŶƵƐĞŝƚ͘
F A 2 1 + C G ĞƉĞŶĚŝŶŐŽŶǁŚŽLJŽƵƚĂůŬƚŽ͕ƐŽŵĞǁŝůůƐĂLJǁĞŚĂǀĞƚŽ ĚĞĐůĂƌĞ 9 ŽƚŚĞƌƐǁŝůůƐĂLJ ǁĞŚĂǀĞƚŽ ĚĞĮŶĞ ĂŵĞƚŚŽĚ͘tŚŝĐŚŝƐĐŽƌƌĞĐƚ͍/Ŷη͕ŝƚĚŽĞƐŶΖƚŵĂŬĞĂŶLJĚŝīĞƌĞŶĐĞ͘hƐĞ
ǁŚŝĐŚĞǀĞƌƚĞƌŵŚĞůƉƐLJŽƵůĞĂƌŶĞĂƐŝĞƌ͘/ůŝŬĞƚŽƐĂLJ/Ζŵ ĚĞĮŶŝŶŐ ĂŵĞƚŚŽĚΖƐĐŽĚĞďůŽĐŬ͕
+ 2 1 / @ 0 > / ; A 9 ? / F , > A B 9 . / 9 = > A + @ 9 + @ A > / @ A ? 2 9 2 A F A @ 2 D @ ĚĞĐůĂƌŝŶŐ
[ 45 ] 'ĞƫŶŐŝŶƚŽƚŚĞĞƚĂŝůƐŽĨDĞƚŚŽĚƐ
7KHPLQLPXPUHTXLUHPHQWVIRUGHÀQLQJDPHWKRG
1 A . A 9 . A 2 1 . A A ŵŝŶŝŵƵŵƌĞƋƵŝƌĞŵĞŶƚƐĨŽƌĚĞĮŶŝŶŐĂŵĞƚŚŽĚ͗
dŚĞƚLJƉĞŽĨŝŶĨŽƌŵĂƟŽŶ͕ŽƌĚĂƚĂ͕ĂŵĞƚŚŽĚǁŝůůƌĞƚƵƌŶƚŽƚŚĞƉůĂĐĞǁŚĞƌĞƚŚĞ ŵĞƚŚŽĚǁĂƐĐĂůůĞĚ
dŚĞŶĂŵĞŽĨƚŚĞŵĞƚŚŽĚƐŚŽƵůĚďĞĨŽůůŽǁĞĚďLJĂƉĂŝƌŽĨƉĂƌĞŶƚŚĞƐĞƐ
, 9 / . + E : < . > - = . 9 : A ? ? 1 + < > C = A , . A ? A @ 2 E + . : + @ 2 9 / @ / @ 0 2 1 A : + C A = > + : ; I '
returnDataType NameOfTheMethod ( ) {
}
K + + ; / @ 0 9 2 + @ : A 9 0 9 / @ G + . 9 @ - @ / 2 - 0 A @ A . 9 2 A C ? : . / , 2 G 2 1 A
LearningScript ) Start()
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 () { }
,ĞƌĞΖƐǁŚĂƚǁĞŚĂǀĞ͗
KƵƌĮƌƐƚƌĞƋƵŝƌĞŵĞŶƚŝƐƚŚĞƚLJƉĞŽĨĚĂƚĂƚŚĞŵĞƚŚŽĚǁŝůůƌĞƚƵƌŶƚŽƚŚĞƉůĂĐĞŝŶƚŚĞ
ĐŽĚĞƚŚĂƚĐĂůůĞĚƚŚŝƐŵĞƚŚŽĚ͘dŚŝƐŵĞƚŚŽĚŝƐŶΖƚƌĞƚƵƌŶŝŶŐĂŶLJǀĂůƵĞ͕ƐŽŝŶƐƚĞĂĚŽĨ
/? < ? A C D 1 /? / @ E + . F ? @ / 2 - 2 1 9 2 )
ƐƉĞĐŝĨLJŝŶŐĂŶĂĐƚƵĂůƚLJƉĞŽĨĚĂƚĂ͕ƚŚĞŬĞLJǁŽƌĚ void
@ + 2 1 / @ 0 /? = A / @ 0 . A 2 < . @ A C E . + F 2 1 A F A 2 1 + C D D ^ĞĐŽŶĚƌĞƋƵŝƌĞŵĞŶƚŝƐƚŚĞŵĞƚŚŽĚŶĂŵĞǁŚŝĐŚŝƐ Start()
>ĂƐƚƌĞƋƵŝƌĞŵĞŶƚŝƐƚŚĞĐƵƌůLJďƌĂĐĞƐ͕ǁŚŝĐŚĐŽŶƚĂŝŶƐƚŚĞĐŽĚĞƚŚĂƚĚĞĮŶĞƐǁŚĂƚƚŚĞ
F A 2 1 + C /? 0 + / @ 0 2 + C + D dŚŝƐĞdžĂŵƉůĞĨƵůĮůůƐƚŚĞďĂƌĞŵŝŶŝŵƵŵƌĞƋƵŝƌĞŵĞŶƚƐƚŽďĞĂŵĞƚŚŽĚ͘,ŽǁĞǀĞƌ͕ĂƐLJŽƵĐĂŶ ƐĞĞ͕ƚŚĞƌĞΖƐŶŽĐŽĚĞŝŶƚŚĞĐŽĚĞďůŽĐŬ͕ƐŽǁŚĞŶ Start()ŝƐĐĂůůĞĚďLJhŶŝƚLJ͕ŝƚĚŽĞƐŶΖƚĚŽ ĂŶLJƚŚŝŶŐĂƚĂůů͕ďƵƚŝƚΖƐƐƟůůĂŵĞƚŚŽĚ͘EŽƌŵĂůůLJ͕ŝĨǁĞĂƌĞŶΖƚŐŽŝŶŐƚŽƵƐĞĂŵĞƚŚŽĚďLJĂĚĚŝŶŐ ĐŽĚĞƚŽĂƐŬĞůĞƚŽŶŵĞƚŚŽĚĐƌĞĂƚĞĚďLJhŶŝƚLJ͕ǁĞĐĂŶƐŝŵƉůLJƌĞŵŽǀĞƚŚĞŵĨƌŽŵŽƵƌƐĐƌŝƉƚ͘/ƚΖƐ ŶŽƌŵĂůůLJďĞƐƚƚŽƌĞŵŽǀĞƵŶƵƐĞĚĐŽĚĞĂŌĞƌƚŚĞƐĐƌŝƉƚŝƐĚŽŶĞďĞŝŶŐǁƌŝƩĞŶ͘
,ĞƌĞΖƐǁŚĂƚǁĞŬŶŽǁĂďŽƵƚƚŚŝƐďĂƌĞŵŝŶŝŵƵŵŵĞƚŚŽĚĚĞĮŶŝƟŽŶĂƐĨĂƌĂƐhŶŝƚLJ
/? : + @ : A . @ A C I
= - C A E 9 < > 2 D
dŚĞƌĞΖƐŶŽƉƵďůŝĐŵŽĚŝĮĞƌ͕ǁŚŝĐŚŵĞĂŶƐƚŚŝƐŵĞƚŚŽĚŝƐprivate
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
dŚĞƌĞΖƐŶŽĐŽĚĞŝŶƚŚĞĐŽĚĞďůŽĐŬ͘dŚĞƌĞĨŽƌĞ͕ƚŚŝƐŵĞƚŚŽĚĚŽĞƐŶΖƚĚŽĂŶLJƚŚŝŶŐ͕ ƐŽŝƚĐĂŶďĞƌĞŵŽǀĞĚŝĨǁĞǁŝƐŚ͘
[ 46 ]
Ä ¾ Æ Á ä W
8QGHUVWDQGLQJSDUHQWKHVHV²ZK\DUHWKH\WKHUH" KŶĞƚŚŝŶŐĨŽƌƐƵƌĞŝƐƚŚĂƚŝƚŵĂŬĞƐĞĂƐLJƚŽƌĞĐŽŐŶŝnjĞƚŚĂƚŝƚΖƐĂŵĞƚŚŽĚ͕ďƵƚǁŚLJĂƌĞƚŚĞLJƉĂƌƚ
ŽĨĂŵĞƚŚŽĚΖƐŶĂŵĞ͍ A ĂůƌĞĂĚLJŬŶŽǁƚŚĂƚĂŵĞƚŚŽĚŝƐĂĐŽĚĞďůŽĐŬƚŚĂƚŝƐŐŽŝŶŐƚŽŐĞƚĐĂůůĞĚŵƵůƟƉůĞƟŵĞƐ͘dŚĂƚΖƐ ŽŶĞŽĨƚŚĞƌĞĂƐŽŶƐǁŚLJĂŵĞƚŚŽĚĐƌĞĂƚĞĚŝŶƚŚĞĮƌƐƚƉůĂĐĞ͕ƐŽǁĞĚŽŶΖƚŚĂǀĞƚŽǁƌŝƚĞƚŚĞƐĂŵĞ ĐŽĚĞŽǀĞƌĂŶĚŽǀĞƌ͘ZĞŵĞŵďĞƌƚŚĞĚĚdǁŽEƵŵďĞƌƐ;ͿŵĞƚŚŽĚďĂĐŬŝŶŚĂƉƚĞƌϮ͘/ƚǁĂƐǀĞƌLJ
ƐŝŵƉůĞŵĞƚŚŽĚƵƐĞĚƚŽĞdžƉůĂŝŶƚŚĞĐŽŶĐĞƉƚŽĨĂŵĞƚŚŽĚĂŶĚŚŽǁƚŽĐĂůůŝƚ͘EŽǁŝƚΖƐƟŵĞƚŽ
2 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 ? D
7LPHIRUDFWLRQ²DGGLQJFRGHEHWZHHQWKHSDUHQWKHVHV
tĞΖƌĞŐŽŝŶŐƚŽŵŽĚŝĨLJ LearningScriptƚŽƐĞŶĚƐŽŵĞŝŶĨŽƌŵĂƟŽŶƚŽƚŚĞ
A 2 1 + C 2 + F 9 ; A / 2 F < : 1 F + . A < ? A E < > D AddTwoNumbers() F tŚLJǁŽƵůĚǁĞŶĞĞĚƚŽƐĞŶĚŝŶĨŽƌŵĂƟŽŶƚŽĂŵĞƚŚŽĚ͍
ƐĐƌŝƉƚŵĂLJŶĞĞĚƚŽĂĚĚƚǁŽŶƵŵďĞƌƐƐĞǀĞƌĂůƟŵĞƐ͕ďƵƚƚŚĞLJƉƌŽďĂďůLJǁŽŶΖƚĂůǁĂLJƐďĞ ƚŚĞƐĂŵĞƚǁŽŶƵŵďĞƌƐ͘tĞĐŽƵůĚƉŽƐƐŝďůLJŚĂǀĞŚƵŶĚƌĞĚƐŽĨĚŝīĞƌĞŶƚĐŽŵďŝŶĂƟŽŶƐŽĨΗƚǁŽ ŶƵŵďĞƌƐΗƚŽĂĚĚƚŽŐĞƚŚĞƌ͘dŚŝƐŵĞĂŶƐƚŚĂƚǁĞŶĞĞĚƚŽůĞƚƚŚĞŵĞƚŚŽĚŬŶŽǁ͕ǁŚŝĐŚƚǁŽ ŶƵŵďĞƌƐŶĞĞĚƚŽďĞĂĚĚĞĚƚŽŐĞƚŚĞƌĂƚƚŚĞŵŽŵĞŶƚǁŚĞŶǁĞĐĂůůƚŚĞŵĞƚŚŽĚ͘
[ 47 ]
'ĞƫŶŐŝŶƚŽƚŚĞĞƚĂŝůƐŽĨDĞƚŚŽĚƐ
? / @ 0 2 1 A
) ƉƌĞĐĞĚŝŶŐƐĐƌĞĞŶƐŚŽƚ͕ƉĞƌĨŽƌŵƚŚĞĨŽůůŽǁŝŶŐƐƚĞƉƐ͗
ó ô
# , A @ / @ + @ + ¤ A B A > + , 2 + F + C /E - / 2 D
LearningScript #
õ ô
ĚĚůŝŶĞƐϲ͕ϳ͕ĂŶĚϴƚŽĚĞĐůĂƌĞƚŚƌĞĞŝŶƚĞŐĞƌǀĂƌŝĂďůĞƐ͘
ö ô
ĚĚůŝŶĞƐϮϮƚŽϮϲƚŽĚĞĮŶĞƚŚĞ AddTwoNumbers()ŵĞƚŚŽĚǁŝƚŚƉĂƌĂŵĞƚĞƌƐ͘
ô .
ĚĚůŝŶĞƐϭϮ͕ϭϯ͕ĂŶĚϭϰƚŽĐĂůůƚŚĞ AddTwoNumbers()ƚŚƌĞĞƟŵĞƐ͘
ô /
^ĂǀĞƚŚĞĮůĞ͘
Y ô
* > /: ; + @ / @ @ / 2 - D WůĂLJ )
What just happened?
? 2 1 /? ? : . / , 2 A ì A : < 2 A ? G 2 1 A ' AddTwoNumbers()ŵĞƚŚŽĚŝƐĐĂůůĞĚƚŚƌĞĞƟŵĞƐŽŶůŝŶĞƐϭϮ͕ ϭϯ͕ĂŶĚϭϰ͘dŚĞŵĞƚŚŽĚΖƐĐŽĚĞďůŽĐŬĂĚĚƐƚǁŽŶƵŵďĞƌƐĂŶĚĚŝƐƉůĂLJƐƚŚĞƌĞƐƵůƚŝŶƚŚĞhŶŝƚLJ
ŽŶƐŽůĞ ;ƐĞĞƚŚĞLJĞůůŽǁĂƌƌŽǁƐŝŶƚŚĞĨŽůůŽǁŝŶŐƐĐƌĞĞŶƐŚŽƚͿ͗
1 + ? A , 9 . A @ 2 1 A ? A ? 9 . A > / ; A 9 9 : + < , > A + E ĐƵďďLJŚŽůĞ ͘tŚĞŶǁĞĐĂůů AddTwoNumbers() ŶƵŵďĞƌƐĂƌĞƐƚƵīĞĚŝŶƚŽƚŚĞĐƵďďLJŚŽůĞ͘tŚĞŶƚŚĞĐŽĚĞďůŽĐŬĞdžĞĐƵƚĞƐ͕ŝƚƚĂŬĞƐƚŚŽƐĞ ƚǁŽŶƵŵďĞƌƐŚĞůĚŝŶƚŚĞĐƵďďLJŚŽůĞĂŶĚƵƐĞƐƚŚĞŵŽŶůŝŶĞϮϰ͘ dŚĞƌĞΖƐĂƐƉĞĐŝĂůŶĂŵĞĨŽƌƚŚĂƚŝŶĨŽƌŵĂƟŽŶďĞƚǁĞĞŶƚŚĞƉĂƌĞŶƚŚĞƐĞƐŽĨĂŵĞƚŚŽĚ ĚĞĮŶŝƟŽŶ͕ƐƵĐŚĂƐůŝŶĞϮϮͶƚŚĞĐŽĚĞŝƐĐĂůůĞĚƚŚĞŵĞƚŚŽĚƉĂƌĂŵĞƚĞƌƐ͘
6SHFLI\LQJDPHWKRG VSDUDPHWHUV
E - + < > + + ; < , 2 1 A ! ǁŽƌĚƉĂƌĂŵĞƚĞƌƐŝŶƚŚĞĚŝĐƟŽŶĂƌLJ͕LJŽƵƌďƌĂŝŶǁŝůůƉƌŽďĂďůLJƐĞŝnjĞƵƉ͘ůůŝƚ ŵĞĂŶƐŝƐƚŚĂƚƚŚĞŵĞƚŚŽĚŚĂƐƚŽďĞĂďůĞƚŽƵƐĞƚŚĞŝŶĨŽƌŵĂƟŽŶLJŽƵƐĞŶĚŝƚ͕ƐŽLJŽƵƐŝŵƉůLJ ŚĂǀĞƚŽƐƉĞĐŝĨLJƚŚĞƚLJƉĞŽĨĚĂƚĂƚŚĞŵĞƚŚŽĚŝƐĂůůŽǁĞĚƚŽƵƐĞ͘dŚĂƚΖƐŝƚ͕ŝƚΖƐǀĞƌLJƐŝŵƉůĞ͘
/ŶƚŚĞĞĂƌůŝĞƌƐĐƌĞĞŶƐŚŽƚ͕ŽŶůŝŶĞϮϮƚŚĞƌĞĚĂƌƌŽǁƐƉŽŝŶƚĞĚƚŽƚŚĞƚLJƉĞŽĨƚŚĞĚĞĐůĂƌĞĚ
B 9 . / 9 = > A ? 9 @ C D 1 A 2 - , A /? G + .
firstNumber secondNumber int integer͘EŽǁŶŽƟĐĞƚŚĞ
G G 9 @ C D 1 A - 9 . A 9 > ? + + E 2 1 A
ƌĞĚĂƌƌŽǁƉŽŝŶƟŶŐƚŽƚŚĞǀĂƌŝĂďůĞƐ number1 number2 number3
2 - , A D 1 A ? A B 9 . / 9 = > A ? 1 9 B A 2 + = A + E 2 - , A int intƐŝŶĐĞƚŚĞLJƐƚŽƌĞƚŚĞŶƵŵďĞƌƐƚŚĂƚǁŝůůďĞ ĂĚĚĞĚŝŶƚŚĞŵĞƚŚŽĚ͕ǁŚŝĐŚƚŚĞƉĂƌĂŵĞƚĞƌƐƐƉĞĐŝĨLJǁŝůůďĞŽĨƚLJƉĞ int D
[ 48 ]
Ä ¾ Æ Á ä W
^ŽŶŽǁŐŽůŽŽŬŝŶƚŚĞĚŝĐƟŽŶĂƌLJĂŐĂŝŶ͘zŽƵǁŝůůƉƌŽďĂďůLJƐĞĞƚŚĞǁŽƌĚůŝŵŝƚŝŶƚŚĞƌĞ ƐŽŵĞǁŚĞƌĞ͘dŚĂƚΖƐǁŚĂƚLJŽƵĚŝĚǁŚĞŶLJŽƵƐƉĞĐŝĮĞĚƚŚĞƚLJƉĞŽĨĚĂƚĂ͕ĂŶŝŶƚĞŐĞƌ͕ƚŚĂƚƚŚĞ ŵĞƚŚŽĚǁŝůůƵƐĞ͘zŽƵƐĞƚƐŽŵĞůŝŵŝƚƐŽŶǁŚĂƚΖƐĂůůŽǁĞĚ͘
KŬ͕ƐŽLJŽƵΖƌĞƐĞƫŶŐƉĂƌĂŵĞƚĞƌƐ͕ŽƌůŝŵŝƚƐ͕ŽŶƚŚĞƚLJƉĞŽĨĚĂƚĂƚŚĞŵĞƚŚŽĚĐĂŶƵƐĞ͕ďƵƚ ǁŚĂƚĞdžĂĐƚůLJŝƐĂƉĂƌĂŵĞƚĞƌ͍tĞůů͕ƚŚĞĮƌƐƚƉĂƌĂŵĞƚĞƌŝƐĐĂůůĞĚ firstNumber͕ĂŶĚǁŚĂƚŝƐ firstNumberĚŽŝŶŐ͍/ƚΖƐƐƚŽƌŝŶŐĂǀĂůƵĞƚŚĂƚǁŝůůďĞƵƐĞĚŝŶƚŚĞĐŽĚĞďůŽĐŬŽŶůŝŶĞϮϰ͘tŚĂƚ ĚŽǁĞĐĂůůƚŚŝŶŐƐƚŚĂƚƐƚŽƌĞĚĂƚĂ͍dŚĂƚΖƐƌŝŐŚƚ͕ǀĂƌŝĂďůĞƐ͘sĂƌŝĂďůĞƐĂƌĞƵƐĞĚĞǀĞƌLJǁŚĞƌĞ͘
ZĞŵĞŵďĞƌ͕ĂǀĂƌŝĂďůĞŝƐũƵƐƚĂƐƵďƐƟƚƵƚĞŶĂŵĞĨŽƌƚŚĞ
? ú § ¤ ý £ ú £ ú § § ÿ £ û ¤ ÿ
? - + < : 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 . D '
How many parameters can a method have?
A : 9 @ 1 9 B A 9 ? F 9 @ - 9 ? - + < ŶĞĞĚƚŽŵĂŬĞƚŚĞŵĞƚŚŽĚǁŽƌŬƉƌŽƉĞƌůLJ͘tŚĞƚŚĞƌǁĞǁƌŝƚĞŽƵƌ ŽǁŶĐƵƐƚŽŵŵĞƚŚŽĚƐ͕ŽƌLJŽƵƵƐĞƚŚĞŵĞƚŚŽĚƐŽĨƚŚĞƐĐƌŝƉƟŶŐƌĞĨĞƌĞŶĐĞ͕ƚŚĞƉĂƌĂŵĞƚĞƌƐ ƚŚĂƚĂƌĞĚĞĮŶĞĚĂƌĞǁŚĂƚƚŚĞŵĞƚŚŽĚǁŝůůƌĞƋƵŝƌĞƚŽďĞĂďůĞƚŽƉĞƌĨŽƌŵŝƚƐƐƉĞĐŝĮĞĚƚĂƐŬ͘
Calling a method /ŶƚŚĞĞĂƌůŝĞƌƐĐƌĞĞŶƐŚŽƚ͕ůŽŽŬĂƚůŝŶĞƐϭϮĂŶĚϮϮ͘ŽLJŽƵŶŽƟĐĞĂŶLJƚŚŝŶŐĚŝīĞƌĞŶƚ͍ dŚĞLJƐƵƌĞĚŽŶΖƚůŽŽŬƚŚĞƐĂŵĞ͕ĚŽƚŚĞLJ͍dŚĞǀĂƌŝĂďůĞŶĂŵĞƐ͕ǁŚŝĐŚƚŚĞďůƵĞĂƌƌŽǁƐ
ƉŽŝŶƚƚŽ͕ĂƌĞĚŝīĞƌĞŶƚ͘
E - + < 9 . A > + + ; / @ 0 9 2 ! ƚŚĂƚĐŽĚĞĂŶĚƐĂLJŝŶŐΗtŚĂƚƚŚĞŚĞĐŬ͍ΗƚŚĞŶĚŽŶΖƚĨĞĞůďĂĚ͘tŚĞŶ/ǁĂƐ ĮƌƐƚůĞĂƌŶŝŶŐƚŚĞĐŽŶĐĞƉƚŽĨĐĂůůŝŶŐŵĞƚŚŽĚƐ͕/ŚĂĚŽŶĞŚĞĐŬŽĨƟŵĞƵŶĚĞƌƐƚĂŶĚŝŶŐŚŽǁƚŚĞ ĐŽĚĞǁŽƌŬĞĚ͘/ƚŝƐ͕ŝŶĨĂĐƚ͕ǀĞƌLJƐŝŵƉůĞ͕ďƵƚ/ĨŽƵŐŚƚǁŝƚŚƚŚŝƐĨŽƌĚĂLJƐďĞĨŽƌĞƚŚĞůŝŐŚƚƐĐĂŵĞ ŽŶ͘/ĐŽŶƐƵůƚĞĚĂůůƚŚĞƉƌŽŐƌĂŵŵŝŶŐŬƐ/ŚĂĚ͕ǁƌŝƩĞŶďLJĂůůƚŚĞĞdžƉĞƌƚƐ͕ĂŶĚŶŽƚĂƐŝŶŐůĞ ŽŶĞŚĂĚƚŚĞĚĞĐĞŶĐLJƚŽĞdžƉůĂŝŶŚŽǁƚŚĞĐŽĚĞǁŽƌŬĞĚ͘ůůƚŚŽƐĞŬĂƵƚŚŽƌƐũƵƐƚĂƐƐƵŵĞĚ /ΖĚΗŐĞƚŝƚΗďĞĐĂƵƐĞĂŌĞƌĂůů͕ƚŚĞLJǁĞƌĞĞdžƉĞƌƚƐ͘
/ŚĂĚƚŽĮŐƵƌĞŝƚŽƵƚŵLJƐĞůĨǁŝƚŚƚƌŝĂůĂŶĚĞƌƌŽƌƚĞƐƟŶŐ͘ŌĞƌŵĂŶLJĚĂLJƐ͕/ĮŶĂůůLJŚĂĚŵLJ ΗŚͲ,ĂΗŵŽŵĞŶƚ͘
8VLQJDUJXPHQWVLQWKHSDUHQWKHVHVRIDPHWKRG ƌŐƵŵĞŶƚƐ͍͍tŚŽĚƌĞĂŵƐƵƉƚŚĞƐĞǁŽƌĚƐ͍tĞĂůůŬŶŽǁǁŚĂƚĂŶĂƌŐƵŵĞŶƚŝƐ͘ǀĞƌLJŽŶĞŽĨ ƵƐŚĂƐďĞĞŶŝŶǀŽůǀĞĚŝŶĂŶĂƌŐƵŵĞŶƚĂƚƐŽŵĞƟŵĞ͘tĞůů͕ƐŽŵĞŽŶĞĚĞĐŝĚĞĚƚŚŝƐǁŽƵůĚďĞĂ ŐŽŽĚǁŽƌĚƚŽŵĞĂŶƐŽŵĞƚŚŝŶŐŝŶƉƌŽŐƌĂŵŵŝŶŐ͘^ƵƌĞĞŶŽƵŐŚ͕ůŽŽŬŝƚƵƉŝŶĂĚŝĐƟŽŶĂƌLJĂŶĚ LJŽƵΖůůƉƌŽďĂďůLJƐĞĞƐŽŵĞƚŚŝŶŐůŝŬĞƚŚŝƐ͗ΗǀĂůƵĞŽƌĂĚĚƌĞƐƐƉĂƐƐĞĚƚŽĂƉƌŽĐĞĚƵƌĞŽƌĨƵŶĐƟŽŶ ĂƚƚŚĞƟŵĞŽĨĐĂůů͘Η
[ 49 ] 'ĞƫŶŐŝŶƚŽƚŚĞĞƚĂŝůƐŽĨDĞƚŚŽĚƐ
zƵƉ͕ƚŚĂƚĞdžƉůĂŝŶƐŝƚƚŽƚĂůůLJ͕ƌŝŐŚƚ͍KŬ͕ůĞƚΖƐƌĞĂůůLJůĞĂƌŶǁŚĂƚĂƌŐƵŵĞŶƚƐĂƌĞ͕ĂŶĚǁŚĂƚƚŚĞLJĚŽ
/ @ : + C A D @ 2 1 A , . A B / + < ? ? : . A A @ ? 1 + 2 G > + + ; 9 2 > / @ A 6 4 I !
AddTwoNumbers(number1, number2);
9 . A @ 2 1 A ? A ? 9 . A 2 1 A B 9 . / 9 = > A ? G 9 @ C
ĞƚǁĞĞŶƚŚĞ , number1 number2͘dŚŽƐĞƚǁŽǀĂƌŝĂďůĞƐ
9 . 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 ? !
ƐƚŽƌĞĚŝŶƚŚĞƐĞƚǁŽǀĂƌŝĂďůĞƐ͕ϮĂŶĚϯ͕ĂƌĞƉůĂĐĞĚŝŶƚŚĞĐƵďďLJŚŽůĞ͘
@ C KŶůŝŶĞϮϮ͕ƚŚĞŵĞƚŚŽĚĚĞĮŶĞƐƚŚĂƚŝƚƚĂŬĞƐŝŶƚǁŽƉĂƌĂŵĞƚĞƌƐĐĂůůĞĚ firstNumber 9 secondNumber͘dŚŝƐŵĞĂŶƐ͕ŽĨĐŽƵƌƐĞ͕ƚŚĂƚƐŽŵĞǁŚĞƌĞŝŶƚŚŝƐƉƌŽĐĞƐƐƚŚĞƐĞƉĂƌĂŵĞƚĞƌƐ ǁŝůůŚĂǀĞƚŽŚĂǀĞǀĂůƵĞƐĂƐƐŝŐŶĞĚƚŚĞŵ͘
,ĞƌĞΖƐƚŚĞƐĞĐƌĞƚ/ĮŶĂůůLJĚŝƐĐŽǀĞƌĞĚŽŶŵLJŽǁŶ͘ĞŚŝŶĚƚŚĞƐĐĞŶĞƐ͕ǁŚĞƌĞLJŽƵĐĂŶΖƚƐĞĞ͕
ƚŚĞǀĂůƵĞƐϮĂŶĚϯ͕ƚŚĂƚĂƌĞŝŶƚŚĞĐƵďďLJŚŽůĞ͕ĂƌĞŶŽǁĂƐƐŝŐŶĞĚƚŽƚŚĞǀĂƌŝĂďůĞƐ
@ C D firstNumber 9 secondNumber
zŽƵĚŽŶΖƚƐĞĞƚŚŝƐĐŽĚĞ͕ďƵƚŝĨLJŽƵĐŽƵůĚƐĞĞŝƚ͕ǁŚĂƚŚĂƉƉĞŶƐǁŝƚŚĂƌŐƵŵĞŶƚƐĂŶĚ
, 9 . 9 F A 2 A . ? > + + ; ? < ? 2 > / ; A 2 1 /? I
firstNumber = number1;
secondNumber = number2;
J / @ : A 2 1 A 9 . 0 < F A @ 2
number1ĐŽŶƚĂŝŶĞĚƚŚĞǀĂůƵĞϮ͕ŶŽǁƚŚĞƉĂƌĂŵĞƚĞƌ
+ @ 2 9 / @ ? 2 1 A B 9 > < A 4
firstNumber :
J / @ : A 2 1 A 9 . 0 < F A @ 2
number2ĐŽŶƚĂŝŶĞĚƚŚĞǀĂůƵĞϯ͕ŶŽǁƚŚĞƉĂƌĂŵĞƚĞƌ
+ @ 2 9 / @ ? 2 1 A B 9 > < A 7 secondNumber :
EŽǁƚŚĞĐŽĚĞďůŽĐŬŝƐĞdžĞĐƵƚĞĚĂŶĚƚŚĞǀĂůƵĞϱŝƐĚŝƐƉůĂLJĞĚŝŶƚŚĞhŶŝƚLJ ŽŶƐŽůĞ D
ƐLJŽƵĐĂŶŶŽǁƐĞĞ͕ƚŚĞŶĂŵĞƐŽĨƚŚĞĂƌŐƵŵĞŶƚƐĂŶĚƚŚĞŶĂŵĞƐŽĨƚŚĞƉĂƌĂŵĞƚĞƌƐĚŽŶΖƚ ŶĞĞĚƚŽďĞƚŚĞƐĂŵĞ͘dŚĞLJΖƌĞũƵƐƚŶĂŵĞƐŽĨǀĂƌŝĂďůĞƐƵƐĞĚŝŶĚŝīĞƌĞŶƚƉůĂĐĞƐŝŶLJŽƵƌĐŽĚĞ͘
dŚĞLJΖƌĞũƵƐƚƐƵďƐƟƚƵƚĞƐĨŽƌƚŚĞĂĐƚƵĂůǀĂůƵĞƐĞĂĐŚĐŽŶƚĂŝŶ͕ĂŶĚŝƚΖƐƚŚĞǀĂůƵĞƚŚĂƚΖƐŐĞƫŶŐ
2 . 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
5HWXUQLQJDYDOXHIURPDPHWKRG EŽǁŝƚΖƐƟŵĞƚŽĚŝƐĐŽǀĞƌƚŚĞΗƉŽǁĞƌΗĨĞĂƚƵƌĞŽĨƵƐŝŶŐĂŵĞƚŚŽĚ͘dŚŝƐƵƐƵĂůůLJŵĞĂŶƐƐĞŶĚŝŶŐ
ĚĂƚĂƚŽƚŚĞŵĞƚŚŽĚ͕ǁŚŝĐŚLJŽƵũƵƐƚůĞĂƌŶĞĚƚŽĚŽ͕ƚŚĞŶŚĂǀĞƚŚĞŵĞƚŚŽĚƌĞƚƵƌŶĂǀĂůƵĞďĂĐŬ͘
. A B / + < ? > - G 9 > > - + < 1 9 C 2 1 A 8 AddTwoNumbers()ŵĞƚŚŽĚĚŽǁĂƐƚĂŬĞƚŚĞƌĞƐƵůƚŽĨĂĚĚŝŶŐƚǁŽ ŶƵŵďĞƌƐĂŶĚĚŝƐƉůĂLJŝƚƚŽhŶŝƚLJΖƐŽŶƐŽůĞ͘
EŽǁ͕ŝŶƐƚĞĂĚŽĨĚŝƐƉůĂLJŝŶŐƚŚĞƌĞƐƵůƚĚŝƌĞĐƚůLJ͕LJŽƵΖƌĞŐŽŝŶŐƚŽŵŽĚŝĨLJ AddTwoNumbers() ƚŽƌĞƚƵƌŶƚŚĞƌĞƐƵůƚŽĨƚŚĞĂĚĚŝƟŽŶďĂĐŬƚŽƚŚĞƉůĂĐĞƚŚĞŵĞƚŚŽĚǁĂƐĐĂůůĞĚ͘
[ 50 ]
Ä ¾ Æ Á ä W
ZĞŵĞŵďĞƌ͕/ƚŽůĚLJŽƵƚŚĂƚǁŚĞŶLJŽƵĐĂůůĂŵĞƚŚŽĚ͕ŝƚΖƐũƵƐƚĂƐƵďƐƟƚƵƚĞ ĨŽƌƚŚĞĐŽĚĞďůŽĐŬƚŚĂƚǁŝůůďĞĞdžĞĐƵƚĞĚ͘/ƚΖƐůŝŬĞƚĂŬŝŶŐĂůůƚŚĞĐŽĚĞŝŶƚŚĞ
ŵĞƚŚŽĚΖƐĐŽĚĞďůŽĐŬĂŶĚƉůĂĐŝŶŐŝƚƌŝŐŚƚƚŚĞƌĞǁŚĞƌĞƚŚĞŵĞƚŚŽĚǁĂƐĐĂůůĞĚ͘
1 A @ A ì 2 ? : . A A @ ? 1 + 2 /? ƐƟůůǀĞƌLJƐŝŵƉůĞ͕ďƵƚŝƚƐŚŽǁƐŚŽǁƚŚŝƐƐƵďƐƟƚƵƟŽŶǁŽƌŬƐĂŶĚ ŚŽǁƌĞƚƵƌŶŝŶŐĂǀĂůƵĞĨƌŽŵĂŵĞƚŚŽĚǁŽƌŬƐ͘
7LPHIRUDFWLRQ²UHWXUQLQJDYDOXHIURP$GG7ZR1XPEHUV
2 + : 9 > > 2 1 A + C /E -
# LearningScript AddTwoNumbers()ŵĞƚŚŽĚƚǁŝĐĞĂŶĚŐĞƚĂŐƌĂŶĚ
2 + 2 9 > D > ? + : . A 9 2 A 9 @ + 2 1 A .
' ŵĞƚŚŽĚǁŚŽƐĞƐŽůĞƉƵƌƉŽƐĞŝƐƚŽĚŝƐƉůĂLJƚŚĞŐƌĂŶĚƚŽƚĂůƌĞƐƵůƚ͘
ó ô
# , A @ / @ + @ + ¤ A B A > + , 2 + F + C /E - / 2 D
LearningScript #
õ ô
KŶůŝŶĞϭϮ͕ĚĞĐůĂƌĞƚŚĞĂŶƐǁĞƌǀĂƌŝĂďůĞ;ƚŚŝƐƐƚĂƚĞŵĞŶƚŝƐŽŶϯůŝŶĞƐͿ͘
ö ô
KŶůŝŶĞƐϭϵƚŽϮϯ͕ƌĞĚĞĮŶĞƚŚĞ AddTwoNumbers()ŵĞƚŚŽĚǁŝƚŚĂƌĞƚƵƌŶƚLJƉĞ͘
ô
.
A 2 1 + C D
KŶůŝŶĞƐϮϱƚŽϮϴ͕ĚĞĮŶĞƚŚĞ DisplayResult() F
ô /
^ĂǀĞƚŚĞĮůĞ͘
Y ô
* > /: ; + @ 8 > 9 - / @ @ / 2 - D )
[ 51 ] 'ĞƫŶŐŝŶƚŽƚŚĞĞƚĂŝůƐŽĨDĞƚŚŽĚƐ
What just happened?
? - + < : 9 @ ? A A
' ŝŶƚŚĞĨŽůůŽǁŝŶŐƐĐƌĞĞŶƐŚŽƚ͕ƚŚĞƌĞƐƵůƚŝƐ ϭϰ ͘,ŽǁĞǀĞƌ͕ƚŚĞŵĂŝŶĐŽŶĐĞƉƚ
2 + > A 9 . @ E . + F 2 1 /? A ì 9 F , > A /? 2 1 /? I
tŚĞŶĂŵĞƚŚŽĚƌĞƚƵƌŶƐĂǀĂůƵĞ͕ŝƚΖƐĂƚLJƉĞŽĨĚĂƚĂũƵƐƚůŝŬĞĂǀĂƌŝĂďůĞǁŽƵůĚƐƚŽƌĞ
@ 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 = > A !
ŶĂůLJƐŝƐŽĨƚŚĞĐŽĚĞŝƐĂƐĨŽůůŽǁƐ͗
dŚĞĐŽĚĞŽŶůŝŶĞϭϬĂŶĚŝƚƐĚĞƐĐƌŝƉƟŽŶŝƐĂƐĨŽůůŽǁƐ͗
void Start()
@ / 2 - : 9 > > ? 2 1 A F A 2 1 + C + @ : A + @ > - D
) Start()
1 A : + C A ŽŶůŝŶĞƐϭϮƚŽϭϰĂŶĚŝƚƐĚĞƐĐƌŝƉƟŽŶŝƐĂƐĨŽůůŽǁƐ͗;EŽƚĞ͗/ŚĂǀĞƉƵƚƚŚŝƐ ƐŝŶŐůĞƐƚĂƚĞŵĞŶƚŽŶƚŚƌĞĞůŝŶĞƐĨŽƌĂďĞƩĞƌƐĐƌĞĞŶƐŚŽƚ͘Ϳ int answer = AddTwoNumbers(number1, number2) + AddTwoNumbers(number1, number3);
ůůƚŚŝƐůŝŶĞĚŽĞƐŝƐĂĚĚƚǁŽŶƵŵďĞƌƐĂŶĚƐƚŽƌĞƚŚĞƌĞƐƵůƚŝŶĂǀĂƌŝĂďůĞ
ŶĂŵĞĚΗĂŶƐǁĞƌΗ͘
/ . ? 2 2 1 A . A /? 9 : 9 > > 2 +
H AddTwoNumbers(number1, number2)ŽŶůŝŶĞϭϵ͘
1 A 9 . 0 < F A @ 2 ? 9 @ C ? A @ C 2 1 A / @ 2 A 0 A . ? 4 9 @ C 7 2 + 2 1 A F A 2 1 + C number1 number2 ƉĂƌĂŵĞƚĞƌƐŽŶůŝŶĞϭϵ͘
dŚĞĐŽĚĞŽŶůŝŶĞϭϵĂŶĚŝƚƐĚĞƐĐƌŝƉƟŽŶŝƐĂƐĨŽůůŽǁƐ͗
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 ?
firstNumber
@ C 9 secondNumber.
dŚĞĐŽĚĞŽŶůŝŶĞϮϭĂŶĚŝƚƐĚĞƐĐƌŝƉƟŽŶŝƐĂƐĨŽůůŽǁƐ͗
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
[ 52 ]
Ä ¾ Æ Á ä W
dŚĞĐŽĚĞŽŶůŝŶĞϮϮĂŶĚŝƚƐĚĞƐĐƌŝƉƟŽŶŝƐĂƐĨŽůůŽǁƐ͗ return result;
dŚĞŝŶƚĞŐĞƌϱ͕ƐƚŽƌĞĚŝŶƚŚĞǀĂƌŝĂďůĞƌĞƐƵůƚ͕ŝƐƌĞƚƵƌŶĞĚďĂĐŬƚŽůŝŶĞϭϮ͕ǁŚĞƌĞƚŚĞ ŵĞƚŚŽĚǁĂƐĐĂůůĞĚ͘
ĂĐŬƚŽƚŚĞĐŽĚĞŽŶůŝŶĞϭϮǁŝƚŚŝƚƐĚĞƐĐƌŝƉƟŽŶ͗
1 A . A - + < ? A A AddTwoNumbers(number1, number2)͕ŶŽǁƐŝƚƐƚŚĞŝŶƚĞŐĞƌϱ͘ dŚĞƐƵďƐƟƚƵƟŽŶŚĂƐƚĂŬĞŶƉůĂĐĞ͘ EŽǁ͕ůŝŶĞϭϮĐŽŶƟŶƵĞƐŝƚƐĞdžĞĐƵƟŽŶǁŝƚŚĂŶŽƚŚĞƌĐĂůůƚŽ͗ AddTwoNumbers(number1, number3)ŽŶůŝŶĞϭϵ
dŚĞŽŶůLJĚŝīĞƌĞŶĐĞŝƐƚŚĂƚƚŚĞĂƌŐƵŵĞŶƚƐŚĂǀĞĐŚĂŶŐĞĚ͘
9 @ C 1 A 9 . 0 < F A @ 2 ? number1 number3ƐĞŶĚƚŚĞŝŶƚĞŐĞƌƐϮĂŶĚϳƚŽƚŚĞŵĞƚŚŽĚ ƉĂƌĂŵĞƚĞƌƐŽŶůŝŶĞϭϵ͘
ĂĐŬƚŽƚŚĞĐŽĚĞŽŶůŝŶĞϭϵĂŐĂŝŶǁŝƚŚŝƚƐĞdžƉůĂŶĂƟŽŶ͗
dŚĞŝŶƚĞŐĞƌƐϮĂŶĚϳĂƌĞĂƐƐŝŐŶĞĚƚŽƚŚĞƉĂƌĂŵĞƚĞƌǀĂƌŝĂďůĞƐ firstNumber
@ C D 9 secondNumber
dŚĞĐŽĚĞŽŶůŝŶĞϮϭĂŶĚŝƚƐĚĞƐĐƌŝƉƟŽŶ͗
@ C 9 . A 9 C C A C 9 @ C ? 2 + . A C / @ . A ? < > 2 D 2 9 7
dŚĞĐŽĚĞŽŶůŝŶĞϮϮǁŝƚŚŝƚƐĚĞƐĐƌŝƉƟŽŶ͗ dŚĞŝŶƚĞŐĞƌϵ͕ƐƚŽƌĞĚŝŶƌĞƐƵůƚ͕ŝƐƌĞƚƵƌŶĞĚďĂĐŬƚŽůŝŶĞϭϮ͕ǁŚĞƌĞƚŚĞŵĞƚŚŽĚ ǁĂƐĐĂůůĞĚ͘
ĂĐŬƚŽƚŚĞĐŽĚĞŽŶůŝŶĞϭϮĂŐĂŝŶǁŝƚŚŝƚƐĚĞƐĐƌŝƉƟŽŶ͗
1 A . A - + < ? A A D AddTwoNumbers(number1, number3)͕ŶŽǁƐŝƚƐƚŚĞŝŶƚĞŐĞƌ 9 dŚĞƐƵďƐƟƚƵƟŽŶŚĂƐƚĂŬĞŶƉůĂĐĞ͘
EŽǁůŝŶĞϭϮĐŽŶƟŶƵĞƐŝƚƐĞdžĞĐƵƟŽŶ͘dŚĞƌĞŝƐĂƉůƵƐƐŝŐŶďĞƚǁĞĞŶƚŚĞƚǁŽŵĞƚŚŽĚ
@ C 9 . 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 . ĐĂůůƐǁŚŝĐŚŵĞĂŶƐ 5 9 9 14 ŝƐŶŽǁ
ƐƚŽƌĞĚŝŶƚŚĞǀĂƌŝĂďůĞĂŶƐǁĞƌ͘
1 A Start()ŵĞƚŚŽĚĐŽĚĞďůŽĐŬŶŽǁĐŽŶƟŶƵĞƐĞdžĞĐƵƟŽŶŽŶůŝŶĞϭϲ͘
dŚĞĐŽĚĞŽŶůŝŶĞϭϲĂŶĚŝƚƐĚĞƐĐƌŝƉƟŽŶŝƐĂƐĨŽůůŽǁƐ͗
DisplayResult(answer);
1 /? /? : 9 > > / @ 0 2 1 A F A 2 1 + C + @ > / @ A 4 L D DisplayResult()
/ƚƚĂŬĞƐŽŶĞĂƌŐƵŵĞŶƚ͘dŚĞĂƌŐƵŵĞŶƚƵƐĞĚŝƐƚŚĞǀĂƌŝĂďůĞĂŶƐǁĞƌǁŚŝĐŚƐƚŽƌĞƐ
B 9 > < A + E 2 - , A D 9 int dŚĞĂƌŐƵŵĞŶƚĂŶƐǁĞƌƐĞŶĚƐƚŚĞŝŶƚĞŐĞƌϭϰƚŽƚŚĞŵĞƚŚŽĚƉĂƌĂŵĞƚĞƌŽŶůŝŶĞϮϱ͘
[ 53 ] 'ĞƫŶŐŝŶƚŽƚŚĞĞƚĂŝůƐŽĨDĞƚŚŽĚƐ
dŚĞĐŽĚĞŽŶůŝŶĞϮϱǁŝƚŚŝƚƐĚĞƐĐƌŝƉƚŽŶ͗ void DisplayResult(int total)
dŚĞŝŶƚĞŐĞƌϭϰŝƐĂƐƐŝŐŶĞĚƚŽƚŚĞƉĂƌĂŵĞƚĞƌǀĂƌŝĂďůĞƚŽƚĂů͘
dŚĞĐŽĚĞŽŶůŝŶĞϮϳĂŶĚŝƚƐĚĞƐĐƌŝƉƟŽŶ͗
Debug.Log("The grand total is: " + total);
1 /? + < 2 , < 2 2 + 2 1 A @ / 2 - ) ŽŶƐŽůĞ ŝŶĐůƵĚĞƐĂůŝƩůĞƉĞĞŬŝŶƚŽƚŚĞŶĞdžƚĐŚĂƉƚĞƌ͘
^ŽŵĞƚĞdžƚŝƐĚŝƐƉůĂLJĞĚĂƐǁĞůůĂƐƚŚĞǀĂůƵĞƐƚŽƌĞĚŝŶƚŚĞǀĂƌŝĂďůĞƚŽƚĂů͘
1 A @ / 2 - C /? , > 9 - ? D )
ŽŶƐŽůĞ dŚĞŐƌĂŶĚƚŽƚĂůŝƐ͗ϭϰ
1 A
Start()ŵĞƚŚŽĚŝƐĚŽŶĞĞdžĞĐƵƟŶŐŝƚƐĐŽĚĞ͘^ŝŶĐĞƚŚĞƌĞŝƐŶŽĨƵƌƚŚĞƌĐŽĚĞ
@ 2 + A ì A : < 2 A G 2 1 A ? : . / , 2 /? C + @ A D / LearningScript
+DYHDJRKHUR²DGGWZRPRUHQXPEHUVWRJHWKHU
. - 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 ?
number2
9 @ C D 1 A . A ? < > 2 / @
number3͘zŽƵǁŝůůŚĂǀĞƚŽŝŶĐůƵĚĞĂŶĂĚĚŝƟŽŶĂůĐĂůůƚŽ AddTwoNumbers()
1 A ? 1 + < > C = A D 2 ŽŶƐŽůĞ dŚĞŐƌĂŶĚƚŽƚĂůŝƐ͗Ϯϰ
Calling a method is a logic detour ƐLJŽƵĐĂŶƐĞĞďLJĨŽůůŽǁŝŶŐƚŚĞĐŽĚĞĂŶĂůLJƐŝƐ͕ĐŽĚĞŝƐĞdžĞĐƵƚĞĚŽŶĞƐƚĞƉĂƚĂƟŵĞ͘,ŽǁĞǀĞƌ͕ ĐĂůůŝŶŐĂŵĞƚŚŽĚĚŽĞƐƐĞŶĚĐŽĚĞĞdžĞĐƵƟŽŶŽŶĂĚĞƚŽƵƌ͘dŚĞŵĞƚŚŽĚŝƐƚŚĞŶĞdžĞĐƵƚĞĚŽŶĞ ůŝŶĞĂƚĂƟŵĞƵŶƟůƚŚĞĞŶĚŽĨƚŚĞŵĞƚŚŽĚŝƐƌĞĂĐŚĞĚ͘/ĨƚŚĞŵĞƚŚŽĚƌĞƚƵƌŶƚLJƉĞŝƐǀŽŝĚ͕ ƚŚĞŶĞdžĞĐƵƟŽŶƌĞƐƚĂƌƚƐĨƌŽŵƚŚĞƉŽŝŶƚǁŚĞƌĞƚŚĞŵĞƚŚŽĚǁĂƐĐĂůůĞĚ͘/ĨƚŚĞŵĞƚŚŽĚƌĞƚƵƌŶƐ ĂǀĂůƵĞ͕ƚŚĞŶƚŚĞǀĂůƵĞƌĞƚƵƌŶĞĚŝƐƐƵďƐƟƚƵƚĞĚĂƚƚŚĞƉůĂĐĞƚŚĞŵĞƚŚŽĚǁĂƐĐĂůůĞĚ͕ƚŚĞŶ ĞdžĞĐƵƟŽŶƌĞƐƚĂƌƚƐĨƌŽŵƚŚĞƉŽŝŶƚŽĨƐƵďƐƟƚƵƟŽŶ͘
Using Unity's Update and Start methods
ǀĞƌLJƟŵĞLJŽƵĐƌĞĂƚĞĂƐĐƌŝƉƚŝŶhŶŝƚLJ͕ƚŚĞƐĞƚǁŽƐŬĞůĞƚŽŶŵĞƚŚŽĚƐĂƌĞŝŶĐůƵĚĞĚ͘dŚĂƚΖƐ
= 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 C MonoBehaviour ŵĞƚŚŽĚƐ͕ƐĞĞƚŚĞŶĞdžƚƐĐƌĞĞŶƐŚŽƚĨŽƌŽƚŚĞƌƐ͘/ůŝŬĞƚŽĐĂůůƚŚĞƐĞhŶŝƚLJΖƐŵĂŐŝĐŵĞƚŚŽĚƐ
ďĞĐĂƵƐĞLJŽƵĚŽŶΖƚĐĂůůƚŚĞƐĞŵĞƚŚŽĚƐ͕hŶŝƚLJĚŽĞƐ͘/ƚΖƐƵƐƵĂůůLJŝŵƉŽƌƚĂŶƚƚŚĂƚĂƚůĞĂƐƚŽŶĞ
F A 2 1 + C /? / @ : > < C A C / @ 9 @ / 2 - ? : . / , 2 2 + : 9 < ? A 2 1 A ? : . / , 2 2 + A ì A : < 2 A D ? 9 - !
MonoBehaviour )
< ? < 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
,ŽǁĚŽ/ŬŶŽǁƚŚĞƐĞƚǁŽŵĞƚŚŽĚƐĂƌĞĐĂůůĞĚďLJhŶŝƚLJĂŶĚƚŚĂƚƚŚĞLJĂƌĞ MonoBehaviour
- + < . E . /A @ C D ŵĞƚŚŽĚƐ͍,ĞƌĞ͕ƚŚĞhŶŝƚLJ ^ĐƌŝƉƟŶŐZĞĨĞƌĞŶĐĞ /?
[ 54 ]
Ä ¾ Æ Á ä W
,ĞƌĞΖƐũƵƐƚĂƉŽƌƟŽŶŽĨƚŚĞŵĞƚŚŽĚƐhŶŝƚLJĐĂŶĐĂůůŝŶĂƐĐƌŝƉƚ͘dŚŝƐŝƐĨƌŽŵƚŚĞ ^ĐƌŝƉƟŶŐ
D O < ? 2 ? A 9 . : 1 E + . I
$
% MonoBehavior
>ŽŽŬĂƚůŝŶĞϰŽĨ >ĞĂƌŶŝŶŐ^ĐƌŝƉƚ I
public class LearningScript : MonoBehaviour
/ @ 1 A . / 2 ? E . + F D @ - ? : . / , 2 2 1 9 2 / @ 1 A . / 2 ? 1 /? > / @ A ? 9 - ? 2 1 9 2 '
LearningScript MonoBehaviour
. + F 9 @ C /E 2 1 A - 9 . A E MonoBehaviour ǁŝůůĂƵƚŽŵĂƟĐĂůůLJĐĂůůƚŚĞŵĞƚŚŽĚƐ Update() Start()
ŝŶƚŚĞƐĐƌŝƉƚ͘dŚĞƌĞĨŽƌĞ͕ŝĨLJŽƵǁĂŶƚ͕LJŽƵĐĂŶĐƌĞĂƚĞĂƐĐƌŝƉƚŝŶDŽŶŽĞǀĞůŽƉŝŶƐƚĞĂĚŽĨhŶŝƚLJ͕
< ? 2 1 9 B A / 2 / @ 1 A . / 2 E . + F = - 9 C C / @ 0 I
MonoBehavior : MonoBehaviour ĂŌĞƌƚŚĞĐůĂƐƐŶĂŵĞ͘
© ú £ ü ¤ ¤ ÿ £ ¥ ¤ ý ü § ¤ WůĞĂƐĞŶŽƟĐĞƚŚĞ ĐŽůŽŶ £
The Start method is called one time
hŶŝƚLJĐĂůůƐƚŚŝƐŵĞƚŚŽĚŽŶůLJŽŶĞƟŵĞ͘tŚĞŶƚŚĞ'ĂŵĞKďũĞĐƚLJŽƵƌƐĐƌŝƉƚŝƐĂƩĂĐŚĞĚƚŽŝƐ
F A 2 1 + C /? : 9 > > A C D 1 /? F A 2 1 + C /? , . / F 9 . / > - < ? A C 2 + ĮƌƐƚƵƐĞĚŝŶLJŽƵƌƐĐĞŶĞ͕ƚŚĞ Start()
ŝŶŝƟĂůŝnjĞ͕ŽƌƐĞƚƵƉ͕ƚŚĞŵĞŵďĞƌǀĂƌŝĂďůĞƐŝŶLJŽƵƌƐĐƌŝƉƚ͘dŚŝƐĂůůŽǁƐĞǀĞƌLJƚŚŝŶŐŝŶLJŽƵƌƐĐƌŝƉƚ
+ = A . A 9 C - 2 + 0 + = A E + . A
2 Update()ŝƐĐĂůůĞĚĨŽƌƚŚĞĮƌƐƚƟŵĞ͘
9 . A F 9 ; / @ 0
2 1 9 2 F 9 @ - + E 2 1 A A ì 9 F , > A ? < ? A C / @
zŽƵΖǀĞƉƌŽďĂďůLJŶŽƟĐĞĚ ! LearningScript
? A + E
< Start()͘dŚĞƐĞĞdžĂŵƉůĞƐǁĞƌĞŶΖƚŝŶŝƟĂůŝnjŝŶŐĂŶLJĐŽĚĞ͕/ǁĂƐũƵƐƚƚĂŬŝŶŐĂĚǀĂŶƚĂŐĞ
E 2 1 A E 9 : 2 2 1 9 2 ? / @ : A + Start()ŝƐŽŶůLJĐĂůůĞĚŽŶĐĞ͕ĚŝƐƉůĂLJŝŶŐŽƵƚƉƵƚƚŽƚŚĞŽŶƐŽůĞǁŽƵůĚ͕ ƚŚĞƌĞĨŽƌĞ͕ŽŶůLJďĞĚŝƐƉůĂLJĞĚŽŶĐĞ͕ǁŚŝĐŚũƵƐƚŵĂĚĞŝƚĞĂƐŝĞƌƚŽƐĞĞƚŚĞŽƵƚƉƵƚĚŝƐƉůĂLJĞĚ͘
The Update method is called over and over and over…
? - + < ? 2 < C - 2 1 A ? 9 F , > A : + C A / @ 2 1 A
' ^ĐƌŝƉƟŶŐZĞĨĞƌĞŶĐĞ ͕LJŽƵǁŝůůŶŽƟĐĞƚŚĂƚĂǀĂƐƚŵĂũŽƌŝƚLJ
+ E 2 1 A : + C A /? / @ 2 1 A F A 2 1 + C D ? - + < . 0 9 F A . < @ ? G 2 1 A J : A @ A /? C /? , > 9 - A C F 9 @ -
Update() '
+ . D
ƟŵĞƐƉĞƌƐĞĐŽŶĚ͘dŚŝƐŝƐĐĂůůĞĚ &ƌĂŵĞƐƉĞƌ^ĞĐŽŶĚ G &W^ ŌĞƌĞĂĐŚĨƌĂŵĞŝƐĚŝƐƉůĂLJĞĚ͕
2 1 A F A 2 1 + C /? : 9 > > A C = - @ / 2 - 2 + . < @ - + < . : + C A D Update() )
[ 55 ]
'ĞƫŶŐŝŶƚŽƚŚĞĞƚĂŝůƐŽĨDĞƚŚŽĚƐ
/ @ : A /? J Update() ĐĂůůĞĚĞǀĞƌLJĨƌĂŵĞ͕ŝƚĂůůŽǁƐLJŽƵƌŐĂŵĞƚŽĚĞƚĞĐƚŝŶƉƵƚ͕ƐƵĐŚĂƐŵŽƵƐĞ
ĐůŝĐŬƐĂŶĚŬĞLJƉƌĞƐƐĞƐ͕ĞǀĞƌLJĨƌĂŵĞ͘hƐĞƌŝŶƉƵƚŝƐŽŶĞŽĨƚŚĞƚŽƉŝĐƐǁĞĂƌĞĂďŽƵƚƚŽĐŽǀĞƌŝŶ
2 1 A @ A ì 2 : 1 9 , 2 A . D
3RSTXL]²XQGHUVWDQGLQJPHWKRGRSHUDWLRQ Yϭ͘tŚĂƚĂƌĞƚŚĞŵŝŶŝŵƵŵƌĞƋƵŝƌĞŵĞŶƚƐĨŽƌĚĞĮŶŝŶŐĂŵĞƚŚŽĚ͍
YϮ͘tŚĂƚŝƐƚŚĞƉƵƌƉŽƐĞŽĨƚŚĞƉĂƌĞŶƚŚĞƐĞƐĂƚƚŚĞĞŶĚŽĨƚŚĞŵĞƚŚŽĚΖƐŶĂŵĞ͍
Yϯ͘tŚĂƚĚŽĞƐǀŽŝĚŵĞĂŶŝŶĂŵĞƚŚŽĚĚĞĮŶŝƟŽŶ͍
Yϰ͘/ŶĂhŶŝƚLJƐĐƌŝƉƚ͕ŚŽǁŝƐƚŚĞ Update()ĐĂůůĞĚ͍
Summary /ŶƚŚŝƐĐŚĂƉƚĞƌ͕ǁĞůĞĂƌŶĞĚƚŚĂƚĂŵĞƚŚŽĚĚĞĮŶŝƟŽŶĞŶĚƐǁŝƚŚĂĐŽĚĞďůŽĐŬďĞƚǁĞĞŶƚǁŽ ĐƵƌůLJďƌĂĐĞƐ͕ŶŽƚǁŝƚŚĂƐĞŵŝĐŽůŽŶ͘dŚĞƉĂƌĞŶƚŚĞƐĞƐĂƌĞƉĂƌƚŽĨĂŵĞƚŚŽĚΖƐŶĂŵĞ͘tĞĂůƐŽ
ůĞĂƌŶĞĚŚŽǁƚŽĐĂůůĂŵĞƚŚŽĚŝŶƚŽĂĐƟŽŶ͕ŚŽǁƚŽƵƐĞĚĂƚĂƌĞƚƵƌŶĞĚĨƌŽŵĂŵĞƚŚŽĚ͕ĂŶĚ
@ C F A 2 1 + C ? G
ƚŚĂƚhŶŝƚLJĐĂůůƐƐŽŵĞŵĞƚŚŽĚƐĂƵƚŽŵĂƟĐĂůůLJ͕ƐƵĐŚĂƐƚŚĞ Start() 9 Update()
> 9 ? ? D ǁŚĞŶƚŚĞƐĐƌŝƉƚŝŶŚĞƌŝƚƐĨƌŽŵƚŚĞ MonoBehaviour : zŽƵŶŽǁŬŶŽǁƚŚĞƚǁŽŵĂũŽƌďƵŝůĚŝŶŐďůŽĐŬƐŽĨƐĐƌŝƉƟŶŐ͕ǀĂƌŝĂďůĞƐĂŶĚŵĞƚŚŽĚƐ͘&ƌŽŵŶŽǁ ŽŶ͕ĞǀĞƌLJƚŚŝŶŐĞůƐĞLJŽƵĚŽǁŝůůũƵƐƚďĞŵĂŬŝŶŐƵƐĞŽĨǀĂƌŝĂďůĞƐĂŶĚŵĞƚŚŽĚƐ͘EŽǁƚŚĂƚLJŽƵ
ƵŶĚĞƌƐƚĂŶĚƚŚĞƐĞƚǁŽďƵŝůĚŝŶŐďůŽĐŬƐ͕LJŽƵĂƌĞƌĞĂĚLJĨŽƌƚŚĞŶĞdžƚĐŚĂƉƚĞƌƚŚĂƚĚĞĂůƐǁŝƚŚ
F 9 ; / @ 0 C A : /? / + @ ? / @ - + < . : + C A D
[ 56 ] 5 Making Decisions in Code
KŶĞŽĨƚŚĞƉƌŝŵĂƌLJĚƵƚŝĞƐŽĨĂĐŽŵƉƵƚĞƌŝƐĐŽŶƚƌŽůůŝŶŐǁŚĂƚŚĂƉƉĞŶƐŶĞdžƚ ǁŚĞŶĐĞƌƚĂŝŶĐŽŶĚŝƚŝŽŶƐĂƌĞŵĞƚ͘dŚĂƚΖƐǁŚĂƚĐŽŵƉƵƚĞƌƐĚŽǁŚĞƚŚĞƌƚŚĞĐŽĚĞ ŝƐĐŽŶƚƌŽůůŝŶŐĂŶĂƉƉůŝĐĂƚŝŽŶŽƌĂŐĂŵĞ͘tĞǁƌŝƚĞƐĐƌŝƉƚƐƚŽŵĂŬĞ'ĂŵĞKďũĞĐƚƐ ďĞŚĂǀĞĂĐĞƌƚĂŝŶǁĂLJŽŶĞŵŽŵĞŶƚ͕ƚŚĞŶƚŚĞďĞŚĂǀŝŽƌƐŚŽƵůĚĐŚĂŶŐĞǁŚĞŶƚŚĞ ĐŽŶĚŝƚŝŽŶƐĐŚĂŶŐĞ͘ƐĐƌŝƉƚŚĂƐƚŽĚĞƚĞĐƚǁŚĞŶƚŚĞĐŽŶĚŝƚŝŽŶƐĐŚĂŶŐĞ͕ƚŚĞŶ ŵĂŬĞƚŚĞĂƉƉƌŽƉƌŝĂƚĞĐŽĚĞĞdžĞĐƵƚĞďĂƐĞĚŽŶƚŚĞŶĞǁĐŽŶĚŝƚŝŽŶƐ͘dŚŝƐĐŚĂƉƚĞƌ ůŽŽŬƐĂƚƐŽŵĞĞdžĂŵƉůĞƐŽĨƚŚĞǁĂLJƐƚŚĂƚĐŽŶĚŝƚŝŽŶƐĐĂŶĐŚĂŶŐĞ͕ĂŶĚƚŚĞĐŽĚĞ ƚŽĚĞƚĞĐƚƚŚĞƐĞĐŚĂŶŐĞƐ͘dŚŝƐŝŶƚƵƌŶĚĞƚĞƌŵŝŶĞƐǁŚŝĐŚĐŽĚĞŝŶƚŚĞƐĐƌŝƉƚŝƐ ĞdžĞĐƵƚĞĚŶĞdžƚ͘
/ŶƚŚŝƐĐŚĂƉƚĞƌǁĞǁŝůůĚŝƐĐƵƐƐ͗
E ? 2 9 2 A F A @ 2 C A : /? / + @ ? !
ŚĞĐŬŝŶŐĨŽƌŵĂŶLJĐŽŶĚŝƟŽŶƐ
E A > ? A ? 2 9 2 A F A @ 2 C A : /? / + @ ?
! (
hƐĞƌΖƐŝŶƉƵƚĐŽŶĚŝƟŽŶĐŚĂŶŐĞƐ
>ŽŽƉŝŶŐƚŚŽƵŐŚĚĂƚĂŝŶĂŶƌƌĂLJ͕>ŝƐƚ͕ŽƌŝĐƟŽŶĂƌLJ
>ĞƚΖƐďĞŐŝŶ͘͘͘
Z ¾ 6 3 Å 4 [ Á å 3 Ç 3 Â Å Ç 3 Å Ä Â 1 Á
7HVWLQJFRQGLWLRQVZLWKDQLIVWDWHPHQW
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 / @ > - * LJŽƵΖǀĞŚĂĚƚŽŵĂŬĞĚĞĐŝƐŝŽŶƐĂďŽƵƚĂůůŬŝŶĚƐŽĨƚŚŝŶŐƐŝŶLJŽƵƌůŝĨĞĞǀĞƌLJĚĂLJ͘tĞĂůů ĚŽŝƚĂůůƚŚĞƟŵĞǁŝƚŚŽƵƚĂĐƚƵĂůůLJŐŝǀŝŶŐƚŚĞƉƌŽĐĞƐƐŽĨŵĂŬŝŶŐĂĚĞĐŝƐŝŽŶŵƵĐŚƚŚŽƵŐŚƚ͕ŝĨ ĂŶLJ͘ƐǁĞŵĂŬĞĚĂŝůLJĚĞĐŝƐŝŽŶƐ͕ŵŽƐƚŽĨƚŚĞƟŵĞǁĞũƵƐƚĚŽƚŚĞĚĞĐŝƐŝŽŶƉƌŽĐĞƐƐŝŶŐŝŶŽƵƌ ŚĞĂĚ͘hŶŝƚLJĚŽĞƐŶΖƚŚĂǀĞƚŚĂƚŚƵŵĂŶůƵdžƵƌLJ͕ƐŽǁĞŚĂǀĞƚŽǁƌŝƚĞŝƚŽƵƚƐŽhŶŝƚLJĐĂŶŬŶŽǁ ƚŚĞĐŽŶĚŝƟŽŶƐƚŚĂƚůĞĂĚƚŽĐĞƌƚĂŝŶĐŚŽŝĐĞƐ͘,ĂǀŝŶŐƚŽǁƌŝƚĞƚŚĞůŽŐŝĐŝƐƚŚĞƐƚƌĂŶŐĞƉĂƌƚŽĨ ǁƌŝƟŶŐĐŽĚĞĨŽƌďĞŐŝŶŶĞƌƐ͕ƐŝŵƉůLJďĞĐĂƵƐĞƉĞŽƉůĞƵƐƵĂůůLJŵĂŬĞƚŚĞǀĂƐƚŵĂũŽƌŝƚLJŽĨĚĞĐŝƐŝŽŶ
ǁŝƚŚŽƵƚǁƌŝƟŶŐĂŶLJƚŚŝŶŐĚŽǁŶĮƌƐƚ͘,ŽǁĞǀĞƌ͕ŝƚŝƐǀĞƌLJƐŝŵƉůĞƚŽĚŽ͘
? 2 9 2 A F A @ 2 /? @ ' if ƚŚĞŵŽƐƚĐŽŵŵŽŶǁĂLJ'ĂŵĞKďũĞĐƚƐŵĂŬĞĚĞĐŝƐŝŽŶƐ͘ĂƚĂƵƐĞĚƚŽŵĂŬĞ ƚŚĞƐĞĚĞĐŝƐŝŽŶƐŝƐƚŚĞŝŶĨŽƌŵĂƟŽŶƵƐƵĂůůLJƐƚŽƌĞĚŝŶƐŽŵĞǀĂƌŝĂďůĞƐ͘&ŽƌĂŶŝĨƐƚĂƚĞŵĞŶƚŝƚΖƐĂƐ ĞĂƐLJĂƐƐĂLJŝŶŐΗ/ĨŵLJĐŽŶĚŝƟŽŶŝƐŵĞƚ͕ƚŚĞŶĞdžĞĐƵƚĞŵLJĐŽĚĞďůŽĐŬ͘Η
7HVWLQJLIFRQGLWLRQVDUHWUXHRUIDOVH
? 9 F , > / @ 0 + E ' ĐŽŶĚŝƟŽŶƐƚŚĂƚĐĂŶďĞƚƌƵĞŽƌĨĂůƐĞ͗
dŚĞƵƐĞƌƉƌĞƐƐĞĚĂďƵƩŽŶ
1 A 2 A F , A . 9 2 < . A /? : + > C
1 A : 1 9 . 9 : 2 A . C /A C
dŚĞďĞĂƌŵĂĚĞďŝŐƉŽƩLJŝŶƚŚĞǁŽŽĚƐ
'ĞŶĞƌĂůƋƵĞƐƟŽŶƐůŝŬĞƚŚĞƐĞĂƌĞĂŶƐǁĞƌĞĚďLJŚƵŵĂŶƐ͕ƵƐƵĂůůLJ͕ǁŝƚŚĞŝƚŚĞƌĂLJĞƐŽƌŶŽ͘&Žƌ hŶŝƚLJ͕ƚŚĞĂŶƐǁĞƌƐǁŝůůďĞĞŝƚŚĞƌƚƌƵĞŽƌĨĂůƐĞ͘&ŽƌĞdžĂŵƉůĞ͗ΗƚŚĞďĞĂƌŵĂĚĞďŝŐƉŽƩLJŝŶƚŚĞ ǁŽŽĚƐΗŝƐĞŝƚŚĞƌƚƌƵĞ͕ŽƌĨĂůƐĞ͘
7LPHIRUDFWLRQ²FUHDWHDFRXSOHRILIVWDWHPHQWV
1 A
"% ƐƚĂƚĞŵĞŶƚƐǁŽƌŬďLJĚĞƚĞƌŵŝŶŝŶŐǁŚĞƚŚĞƌĂĐŽŶĚŝƟŽŶŝŶƐŝĚĞĂƉĂŝƌŽĨƉĂƌĞŶƚŚĞƐĞƐŝƐ
2 . < A + . E 9 > ? A D
ó ô
+ C /E -
# LearningScriptĂƐƐŚŽǁŶŝŶƚŚĞŶĞdžƚƐĐƌĞĞŶƐŚŽƚ͘
õ ô
^ĂǀĞƚŚĞĮůĞ͘
ö ô
@ @ / 2 - G : > /: ; + @ 8 > 9 - D
! )
[ 58 ]
Ä ¾ Æ Á ä ]
What just happened?
I @ / 2 -
,ĞƌĞΖƐƚŚĞŽƵƚƉƵƚŝŶƚŚĞ ) ŽŶƐŽůĞ
* + C A 9 @ 9 > - ? /? I
dŚĞĐŽĚĞŽŶůŝŶĞϴŝƐĂƐĨŽůůŽǁƐ͗
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 + E D
true
1 A : + C A ŽŶůŝŶĞϭϬĂŶĚŝƚƐĚĞƐĐƌŝƉƟŽŶ͗
if( theBearMadeBigPottyInTheWoods)
@ + . D
' if ƐƚĂƚĞŵĞŶƚƚŽƚĞƐƚŝĨƚŚĞĐŽŶĚŝƟŽŶďĞƚǁĞĞŶƚŚĞƉĂƌĞŶƚŚĞƐŝƐŝƐ true false
1 A B 9 . / 9 = > A /? ? 2 + . / @ 0 9 B 9 > < A G theBearMadeBigPottyInTheWoods true
ƚŚĞƌĞĨŽƌĞ͘dŚĞĐŽĚĞďůŽĐŬŽŶůŝŶĞƐϭϭƚŽϭϯŝƐĞdžĞĐƵƚĞĚ͕ĂƐƐŚŽǁŶŝŶƚŚĞ
: . A A @ ? 1 + 2 D ŽŶƐŽůĞ ?
[ 59 ]
Z ¾ 6 3 Å 4 [ Á å 3 Ç 3 Â Å Ç 3 Å Ä Â 1 Á
Using the NOT operator to change the condition ,ĞƌĞΖƐĂůŝƩůĞĐƵƌǀĞďĂůůƚŽǁƌĂƉLJŽƵƌŵŝŶĚĂƌŽƵŶĚ͕ƚŚĞEKdůŽŐŝĐĂůŽƉĞƌĂƚŽƌ͘/ƚΖƐǁƌŝƩĞŶŝŶ ĐŽĚĞƵƐŝŶŐĂŶĞdžĐůĂŵĂƟŽŶŵĂƌŬ͘dŚŝƐŵĂŬĞƐĂƚƌƵĞĐŽŶĚŝƟŽŶĨĂůƐĞ͕ŽƌĂĨĂůƐĞĐŽŶĚŝƟŽŶƚƌƵĞ͘
dŚĞĐŽĚĞŽŶůŝŶĞϭϱĂůŽŶŐǁŝƚŚŝƚƐĚĞƐĐƌŝƉƟŽŶ͗
theBearMadeBigPottyInTheWoods = false;
2 + D ? ? / 0 @ ? 2 1 A B 9 > < A ' false theBearMadeBigPottyInTheWoods
dŚĞĐŽĚĞŽŶůŝŶĞϭϳǁŝƚŚŝƚƐĚĞƐĐƌŝƉƟŽŶŝƐĂƐĨŽůůŽǁƐ͗
if( ! theBearMadeBigPottyInTheWoods)
E 9 > ? A D ŶŽƚŚĞƌŝĨƐƚĂƚĞŵĞŶƚ͕ďƵƚƚŚŝƐƟŵĞ theBearMadeBigPottyInTheWoods /? ,ŽǁĞǀĞƌ͕ƚŚĞƌĞΖƐĂEKdůŽŐŝĐĂůŽƉĞƌĂƚŽƌŝŶĨƌŽŶƚŽĨƚŚĞǀĂƌŝĂďůĞ͘^ĞĞƚŚĞĞdžĐůĂŵĂƟŽŶ ŵĂƌŬŝŶƚŚĞƌĞĚĐŝƌĐůĞƐŚŽǁŶŝŶƚŚĞƉƌĞǀŝŽƵƐƐĐƌĞĞŶƐŚŽƚ͘ dŚŝƐŵĞĂŶƐƚŚĞŝĨƐƚĂƚĞŵĞŶƚĐŽŶĚŝƟŽŶŝƐEKdĨĂůƐĞ͕ǁŚŝĐŚŝƐƚŚĞƐĂŵĞĂƐƐĂLJŝŶŐ
ƚƌƵĞ͘dŚĞƌĞĨŽƌĞƚŚĞĐŽĚĞďůŽĐŬŽŶůŝŶĞƐϭϴƚŽϮϬǁŝůůďĞĞdžĞĐƵƚĞĚ͕ĂƐƐŚŽǁŶŝŶ
2 1 A * + @ ? + > A ? : . A A @ ? 1 + 2
dŚĞĐŽĚĞďůŽĐŬŽŶůŝŶĞƐϭϴƚŽϮϬǁŝůůďĞĞdžĞĐƵƚĞĚ͕ĂƐƐŚŽǁŶŝŶƚŚĞŽŶƐŽůĞƐĐƌĞĞŶƐŚŽƚ
/ĐĂŶĂůƌĞĂĚLJŚĞĂƌLJŽƵƌƋƵĞƐƟŽŶ͕ǁŚLJŶŽƚũƵƐƚĐŚĞĐŬĨŽƌƚƌƵĞ͍ƐLJŽƵǁŝůůĚŝƐĐŽǀĞƌǁŚĞŶ ǁƌŝƟŶŐŝĨƐƚĂƚĞŵĞŶƚƐ͕LJŽƵŶĞĞĚƚŽďĞĂďůĞƚŽŵĂŬĞĚĞĐŝƐŝŽŶƐďĂƐĞĚŽŶǁŚĞƚŚĞƌĂĐŽŶĚŝƟŽŶ ŝƐƚƌƵĞ͕ŽƌŝĨƚŚĞĐŽŶĚŝƟŽŶŝƐĨĂůƐĞ͘zŽƵǁĂŶƚƚŚĞŽƉƟŽŶƚŽĞdžĞĐƵƚĞĂĐŽĚĞďůŽĐŬĨŽƌĞŝƚŚĞƌŽĨ ƚŚĞƐĞƚǁŽĐŽŶĚŝƟŽŶƐ͘&ŽƌĞdžĂŵƉůĞ͕LJŽƵŵĂLJǁĂŶƚƚŽĞdžĞĐƵƚĞƐŽŵĞĐŽĚĞďĂƐĞĚŽŶǁŚĞƚŚĞƌ
ĂƵƐĞƌĚŝĚŶΖƚƉƌĞƐƐĂďƵƩŽŶĂƚĂƉĂƌƟĐƵůĂƌƟŵĞ͘/ĨƚŚĞƵƐĞƌĚŝĚŶŽƚƉƌĞƐƐƚŚĞďƵƩŽŶ͕ƚŚĞŶ
A ì A : < 2 A 2 1 A : + C A = > + : ; D
&KHFNLQJPDQ\FRQGLWLRQVLQDQLIVWDWHPHQW
^ŽŵĞƟŵĞƐLJŽƵǁŝůůǁĂŶƚLJŽƵƌŝĨƐƚĂƚĞŵĞŶƚƐƚŽĐŚĞĐŬŵĂŶLJĐŽŶĚŝƟŽŶƐďĞĨŽƌĞĂŶLJĐŽĚĞďůŽĐŬ
A ì A : < 2 A C D /? dŚŝƐŝƐǀĞƌLJĞĂƐLJƚŽĚŽ͘dŚĞƌĞĂƌĞƚǁŽŵŽƌĞůŽŐŝĐĂůŽƉĞƌĂƚŽƌƐƚŚĂƚLJŽƵĐĂŶƵƐĞ͗
E͗/ƚŝƐƵƐĞĚďLJƉƵƫŶŐ && ďĞƚǁĞĞŶƚŚĞĐŽŶĚŝƟŽŶƐďĞŝŶŐĐŚĞĐŬĞĚ͘
KZ͗/ƚŝƐƵƐĞĚďLJƉƵƫŶŐ || ďĞƚǁĞĞŶƚŚĞĐŽŶĚŝƟŽŶƐďĞŝŶŐĐŚĞĐŬĞĚ͘
7LPHIRUDFWLRQ²FUHDWHLIVWDWHPHQWVZLWKPRUHWKDQRQH
condition to check
ó ô
+ C /E -
# LearningScriptĂƐƐŚŽǁŶŝŶƚŚĞŶĞdžƚƐĐƌĞĞŶƐŚŽƚ͘
õ ô
^ĂǀĞƚŚĞĮůĞ͘
ö ô
@ @ / 2 - G : > /: ; + @ 8 > 9 - D
! )
[ 60 ]
Ä ¾ Æ Á ä ]
EŽƟĐĞůŝŶĞϭϭŝƐƵƐŝŶŐƚŚĞEŽƉĞƌĂƚŽƌ͕ĂŶĚůŝŶĞϭϲŝƐ
ÿ ý ü þ £ © ¤ ^ _ ¢ ¤ û ú £ û
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 A ŽŶůŝŶĞϴĂŶĚŝƚƐĚĞƐĐƌŝƉƟŽŶ͗
bool theBearMadeBigPottyInTheWoods = true;
B 9 . / 9 = > A /? C A : > 9 . A C 9 @ C 9 ? ? / 0 @ A C 2 1 A B 9 > < A + E D ' bool true
dŚĞĐŽĚĞŽŶůŝŶĞϵǁŝƚŚŝƚƐĚĞƐĐƌŝƉƟŽŶ͗
int temperature = 40;
@ B 9 . / 9 = > A /? C A : > 9 . A C 9 @ C 9 ? ? / 0 @ A C 2 1 A B 9 > < A D ' int 40
[ 61 ]
Z ¾ 6 3 Å 4 [ Á å 3 Ç 3 Â Å Ç 3 Å Ä Â 1 Á
dŚĞĐŽĚĞŽŶůŝŶĞϭϭǁŝƚŚŝƚƐĚĞƐĐƌŝƉƟŽŶ͗
if(temperature >= 35 && theBearMadeBigPottyInTheWoods)
D @
' if ƐƚĂƚĞŵĞŶƚƚŽƚĞƐƚŝĨďŽƚŚĐŽŶĚŝƟŽŶƐĂƌĞ true
0 . A 9 2 A . 2 1 A @ G + . A < 9 > 2 + G D
dŚĞĮƌƐƚƚĞƐƚŝƐĐŚĞĐŬŝŶŐŝĨƚŚĞ temperature /? 35
/? 1 A B 9 > < A ? 2 + . A C / @
temperature 40 ͕ƐŽƚŚŝƐĐŽŶĚŝƟŽŶŝƐƚƌƵĞ͘
1 A B 9 > < A ? 2 + . A C / @ theBearMadeBigPottyInTheWoodsŝƐƚƌƵĞ͘dŚĞƌĞĨŽƌĞƚŚĞĮƌƐƚ ĐŽŶĚŝƟŽŶĂŶĚƚŚĞƐĞĐŽŶĚĐŽŶĚŝƟŽŶĂƌĞƚƌƵĞ͕ƐŽƚŚĞĐŽĚĞďůŽĐŬĞdžĞĐƵƚĞƐ͘
dŚĞĐŽĚĞŽŶůŝŶĞϭϲǁŝƚŚŝƚƐĚĞƐĐƌŝƉƟŽŶ͗
if(temperature >= 35 || theBearMadeBigPottyInTheWoods) @ ' if ƐƚĂƚĞŵĞŶƚƚŽƚĞƐƚŝĨĞŝƚŚĞƌŽĨƚŚĞĐŽŶĚŝƟŽŶƐĂƌĞƚƌƵĞ͘ tĞĂůƌĞĂĚLJŬŶŽǁƚŚĂƚďŽƚŚƚŚĞĐŽŶĚŝƟŽŶƐĂƌĞƚƌƵĞ͕ĂŶĚĞŝƚŚĞƌƚŚĞĮƌƐƚĐŽŶĚŝƟŽŶ ŽƌƚŚĞƐĞĐŽŶĚĐŽŶĚŝƟŽŶŶĞĞĚƐƚŽďĞƚƌƵĞ͘dŚĞƌĞĨŽƌĞƚŚĞĐŽĚĞďůŽĐŬǁŝůůĞdžĞĐƵƚĞ͘
+DYHDJRKHUR²FKDQJHWKHYDOXHDVVLJQHGWRWHPSHUDWXUH
. - : 1 9 @ 0 / @ 0 D # @ > - + @ A + E 2 1 A
temperatureƚŽĂůŽǁĞƌǀĂůƵĞƐƵĐŚĂƐ 30 if ƐƚĂƚĞŵĞŶƚƐǁŝůů
= A 2 . < A I
dŚĞĨŽůůŽǁŝŶŐŝƐƚŚĞĂŶĂůLJƐŝƐŽĨĐŽĚĞ͗
1 A : + C A ŽŶůŝŶĞϭϭĂŶĚŝƚƐĚĞƐĐƌŝƉƟŽŶŝƐĂƐĨŽůůŽǁƐ͗ if(temperature >= 35 && theBearMadeBigPottyInTheWoods)
KŶůLJŽŶĞŽĨƚŚĞĐŽŶĚŝƟŽŶƐŝƐŶŽǁƚƌƵĞ͕ĂƐϯϬŝƐŶŽƚŐƌĞĂƚĞƌƚŚĞŶ͕ŽƌĞƋƵĂůƚŽ͕ϯϱ͘
dŚĞƌĞĨŽƌĞƚŚĞĮƌƐƚĐŽŶĚŝƟŽŶŝƐĨĂůƐĞ͘^ŝŶĐĞďŽƚŚĐŽŶĚŝƟŽŶƐŚĂǀĞƚŽďĞƚƌƵĞ͕ƚŚĞ
: + C A = > + : ; C + A ? @ + 2 A ì A : < 2 A D
[ 62 ]
Ä ¾ Æ Á ä ]
dŚĞĐŽĚĞŽŶůŝŶĞϭϲĂŶĚŝƚƐĚĞƐĐƌŝƉƟŽŶ͗ if(temperature >= 35 || theBearMadeBigPottyInTheWoods)
KŶůLJŽŶĞŽĨƚŚĞĐŽŶĚŝƟŽŶƐŝƐŶŽǁƚƌƵĞ͘ ϯϬŝƐŶŽƚŐƌĞĂƚĞƌƚŚĞŶŽƌĞƋƵĂůƚŽϯϱ͕ƚŚĞƌĞĨŽƌĞƚŚĞĮƌƐƚĐŽŶĚŝƟŽŶŝƐĨĂůƐĞ͘ dŚĞƐĞĐŽŶĚĐŽŶĚŝƟŽŶŝƐƚƌƵĞ͘ ^ŝŶĐĞŽŶůLJŽŶĞŽĨƚŚĞƚǁŽĐŽŶĚŝƟŽŶƐŚĂƐƚŽďĞƚƌƵĞ͕ĚŽĞƐŶΖƚŵĂŬĞĂŶLJĚŝīĞƌĞŶĐĞ ǁŚŝĐŚŽŶĞ͕ƚŚĞĐŽĚĞďůŽĐŬĞdžĞĐƵƚĞƐ͘
+DYHDJRKHUR²FKDQJHWKH%HDU0DGH%LJ3RWW\,Q7KH:RRGVWRIDOVH EŽǁĐŚĂŶŐĞ theBearMadeBigPottyInTheWoodsƚŽĨĂůƐĞĂƐǁĞůů͘EŽǁLJŽƵƐĞĞƚŚĂƚ ŶĞŝƚŚĞƌŽĨƚŚĞŝĨƐƚĂƚĞŵĞŶƚƐǁŝůůĞdžĞĐƵƚĞƚŚĞŝƌĐŽĚĞďůŽĐŬƐ͘
8VLQJDQLIHOVHVWDWHPHQWWRH[HFXWHDOWHUQDWHFRGH
+ E 9 .G 2 1 A E + . 2 1 A : + C A = > + : ; 2 +
J if ƐƚĂƚĞŵĞŶƚƐŚĂǀĞŶĞĞĚĞĚĐĞƌƚĂŝŶĐŽŶĚŝƟŽŶƐƚŽďĞ true
A ì A : < 2 A D 1 A . A /? 9 @
ŽƉƟŽŶƚŚĂƚĂůůŽǁƐLJŽƵƚŽŚĂǀĞĂŶĂůƚĞƌŶĂƚĞĐŽĚĞďůŽĐŬĞdžĞĐƵƚĞǁŚĞŶ
1 A D 2 if ƐƚĂƚĞŵĞŶƚĐŽŶĚŝƟŽŶƐĂƌĞ false
/ĨŵLJĐŽŶĚŝƟŽŶƐĂƌĞŵĞƚ͕ĞdžĞĐƵƚĞƚŚĞĨŽůůŽǁŝŶŐĐŽĚĞďůŽĐŬ͕ĞůƐĞĞdžĞĐƵƚĞƚŚĞ
9 > 2 A . @ 9 2 A : + C A = > + : ;
dŚŝƐŝƐǀĞƌLJƐŝŵƉůĞĐŽŶĐĞƉƚ͕ũƵƐƚůŝŬĞĂůŝƩůĞŬŝĚƐĂLJŝŶŐ͗Η/ĨLJŽƵŐŝǀĞŵĞĂŶŝĐĞ ĐƌĞĂŵĐŽŶĞ͕/ΖůůďĞŶŝĐĞ͕ĞůƐĞ/ΖŵŐŽŝŶŐƚŽďĞŶĂƵŐŚƚLJ͘Η
7LPHIRUDFWLRQ²DGGHOVHWRWKHLIVWDWHPHQW
. A < ? 2 > / ; A . A 0 < > 9 .
ŝĨͲĞůƐĞƐƚĂƚĞŵĞŶƚƐ 9 ŝĨƐƚĂƚĞŵĞŶƚƐ ǁŝƚŚƚŚĞ elseŽƉƟŽŶĂĚĚĞĚ͘
ó ô
+ C /E -
# LearningScriptĂƐƐŚŽǁŶŝŶƚŚĞŶĞdžƚƐĐƌĞĞŶƐŚŽƚ͘
õ ô ^ĂǀĞƚŚĞĮůĞ͘
[ 63 ]
Z ¾ 6 3 Å 4 [ Á å 3 Ç 3 Â Å Ç 3 Å Ä Â 1 Á
ö ô
@ @ / 2 - G : > /: ; + @ 8 > 9 - D
! )
+ C A = > + : ; D >ŝŶĞϭϰƐŚŽǁƐŚŽǁ else͕ĂŶĚŝƚƐĐŽĚĞďůŽĐŬŝƐƐŝŵƉůLJĂĚĚĞĚĂŌĞƌƚŚĞ if :
What just happened?
1 A 9 @ 9 > - ? /? ŽĨĐŽĚĞŝƐĂƐĨŽůůŽǁƐ͗
dŚĞĐŽĚĞŽŶůŝŶĞϴĂŶĚŝƚƐĚĞƐĐƌŝƉƟŽŶ͗
bool theBearMadeBigPottyInTheWoods = false;
/? 9 ? ? / 0 @ A C 2 1 A B 9 > < A + E E 9 > ? A D 1 A B 9 . / 9 = > A theBearMadeBigPottyInTheWoods
dŚĞĐŽĚĞŽŶůŝŶĞϭϬĂŶĚŝƚƐĚĞƐĐƌŝƉƟŽŶ͗ if( theBearMadeBigPottyInTheWoods)
^ŝŶĐĞƚŚĞĐŽŶĚŝƟŽŶŝƐĨĂůƐĞ͕ƚŚĞĐŽĚĞďůŽĐŬŽŶůŝŶĞƐϭϭƚŽϭϯŝƐŶŽƚĞdžĞĐƵƚĞĚ͕ĂŶĚƚŚĞ ƐĐƌŝƉƚĐŽŶƟŶƵĞƐƚŽůŝŶĞϭϰŽĨƚŚĞŝĨͲĞůƐĞƐƚĂƚĞŵĞŶƚ͘ dŚĞƌĞĨŽƌĞ͕ƚŚĞĐŽĚĞďůŽĐŬŽŶůŝŶĞƐϭϱƚŽϭϳŝƐĞdžĞĐƵƚĞĚŝŶƐƚĞĂĚ͗
[ 64 ]
Ä ¾ Æ Á ä ]
3RSTXL]²XQGHUVWDQGLQJLIVWDWHPHQWV Yϭ͘,ƵŵĂŶƐĐĂŶĂŶƐǁĞƌƋƵĞƐƟŽŶƐǁŝƚŚĂLJĞƐŽƌŶŽ͘tŚĂƚĚŽηŝĨƐƚĂƚĞŵĞŶƚƐŶĞĞĚ
ĂƐĂŶƐǁĞƌƐ͍
4 D 1 9 2 > + 0 /: 9 > + , A . 9 2 + . : 9 @ 2 < . @ 9 G + . 9
` trueĐŽŶĚŝƟŽŶŝŶƚŽ false falseĐŽŶĚŝƟŽŶ
@ 2 + / true͍
Yϯ͘/ĨƚǁŽĐŽŶĚŝƟŽŶƐŚĂǀĞƚŽďĞ trueƚŽŵĂŬĞĂŶŝĨƐƚĂƚĞŵĞŶƚΖƐĐŽĚĞĞdžĞĐƵƚĞ͕ǁŚĂƚůŽŐŝĐĂů ŽƉĞƌĂƚŽƌǁŽƵůĚLJŽƵƵƐĞƚŽũŽŝŶƚŚĞĐŽŶĚŝƟŽŶƐ͍
Yϰ͘/ĨŽŶůLJŽŶĞŽĨƚǁŽĐŽŶĚŝƟŽŶƐŶĞĞĚĞĚƚŽďĞƚƌƵĞƚŽŵĂŬĞĂŶŝĨƐƚĂƚĞŵĞŶƚΖƐĐŽĚĞĞdžĞĐƵƚĞ͕ ǁŚĂƚůŽŐŝĐĂůŽƉĞƌĂƚŽƌǁŽƵůĚLJŽƵƵƐĞƚŽũŽŝŶƚŚĞƚǁŽĐŽŶĚŝƟŽŶƐ͍
Making decisions based on user input
¤ A : /? / + @ ? Þ ß à G a
á S b c @ ĂůǁĂLJƐŚĂǀĞƚŽďĞŵĂĚĞǁŚĞŶƚŚĞƵƐĞƌƉƌŽǀŝĚĞƐŝŶƉƵƚ͘/Ŷ
ƚŚĞƵŝůĚŝŶŐůŽĐŬƐĨŽƌhŶŝƚLJ^ĐƌŝƉƚƐ͕ ǁĞƵƐĞĚĂŶĞdžĂŵƉůĞǁŚĞƌĞƚŚĞƵƐĞƌŚĂĚƚŽƉƌĞƐƐƚŚĞ
A - 2 + : 9 > > 2 1 A F A 2 1 + C I ZĞƚƵƌŶͬŶƚĞƌ ; AddTwoNumbers()
if(Input.GetKeyUp(Keycode.Return))
AddTwoNumbers();
1 A if ƐƚĂƚĞŵĞŶƚĐŽŶĚŝƟŽŶďĞĐŽŵĞƐƚƌƵĞŽŶůLJǁŚĞŶƚŚĞ ReturnŬĞLJŝƐƌĞůĞĂƐĞĚĂŌĞƌďĞŝŶŐ ƉƌĞƐƐĞĚĚŽǁŶ͘,ĞƌĞΖƐĂƉĂƌƟĂůƐĐƌĞĞŶƐŚŽƚŽĨƚŚĞ GetKeyUp()ŵĞƚŚŽĚĂƐƐŚŽǁŶŝŶƚŚĞ
^ĐƌŝƉƟŶŐZĞĨĞƌĞŶĐĞ I
A - /? . A > A 9 ? A C G /? A ì A : < 2 A C D ŌĞƌƚŚĞ Return ; AddTwoNumbers()
EŽƟĐĞƚŚĂƚƚŚĞĐŽĚĞ͕ AddTwoNumbers()͕ŝƐŶΖƚďĞƚǁĞĞŶƚǁŽĐƵƌůLJďƌĂĐĞƐ͘
ù © ¤ ü £ © ¤ û ¤ ý ÿ ü § ü ¤ § ý ü ¤ ¤ £ ¤ ¦ ¤ £ ¤ û ú ü ý û ú ü ¤ § ÿ ¤ © ú ? ¤ ƚŚĞŽƉƟŽŶƚŽŶŽƚƵƐĞƚŚĞĐƵƌůLJďƌĂĐĞƐ͘
[ 65 ]
Z ¾ 6 3 Å 4 [ Á å 3 Ç 3 Â Å Ç 3 Å Ä Â 1 Á
6WRULQJGDWDLQDQDUUD\D/LVWRUD'LFWLRQDU\ dŚĞƌĞĂƌĞƟŵĞƐƚŚĂƚŵĂŶLJŝƚĞŵƐŶĞĞĚƚŽďĞƐƚŽƌĞĚŝŶƐŽŵĞƚLJƉĞŽĨůŝƐƚ͘WĞƌŚĂƉƐĂƐĞůĞĐƟŽŶŽĨ ǁĞĂƉŽŶƐƚŚĂƚĂĐŚĂƌĂĐƚĞƌŵĂLJƵƐĞ͘ŶĞdžĂŵƉůĞƵƐĞĚůĂƚĞƌŝŶƚŚŝƐŬŝƐĂůŝƐƚŽĨƐƉůĂƐŚƐĐƌĞĞŶƐ ĨŽƌƚŚĞ^ƚĂƚĞDĂĐŚŝŶĞƉƌŽũĞĐƚǁĞǁŝůůďƵŝůĚ͘ dŚĞƌĞĂƌĞďĂƐŝĐĂůůLJƚǁŽǁĂLJƐƚŽĂĐĐĞƐƐŝƚĞŵƐŝŶĂůŝƐƚ͗
ŝƌĞĐƚƌĞƚƌŝĞǀĂů ͗dŚĞůŽĐĂƟŽŶŽĨĂŶŝƚĞŵŝŶƚŚĞůŝƐƚŝƐĂůƌĞĂĚLJŬŶŽǁŶ͕ƐŽĐŽĚĞŝƐ ǁƌŝƩĞŶƚŽĂĐĐĞƐƐŝƚĚŝƌĞĐƚůLJ͕Žƌ
>ŽŽƉƌĞƚƌŝĞǀĂů ͗dŚĞůŽĐĂƟŽŶŽĨĂŶŝƚĞŵŝŶƚŚĞůŝƐƚŝƐŶŽƚŬŶŽǁŶ͕ŝƚΖƐũƵƐƚŝŶƚŚĞƌĞ ƐŽŵĞǁŚĞƌĞ͕ƐŽĐŽĚĞŝƐǁƌŝƩĞŶƚŽůŽŽƉƚŚƌŽƵŐŚƚŚĞůŝƐƚƵŶƟůƚŚĞŝƚĞŵĚĞƐŝƌĞĚŝƐĨŽƵŶĚ͘
&ŝƌƐƚƚŚŽƵŐŚ͕ǁĞŶĞĞĚĂůŝƐƚŽĨŝƚĞŵƐďĞĨŽƌĞǁĞĐĂŶƐĞůĞĐƚĂŶLJƚŚŝŶŐĨƌŽŵƚŚĞůŝƐƚ͘ŶĞdžĂŵƉůĞ
ŽĨĐŽůůĞĐƟŶŐŝƚĞŵƐŝŶƚŽĂůŝƐƚ͕ƚŚĞŶůŽŽƉŝŶŐƚŚƌŽƵŐŚƚŚĞůŝƐƚ͕ŝƐƐŚŽǁŶŝŶƚŚĞ ^ĐƌŝƉƟŶŐ
< @ C A . 2 1 A F A 2 1 + C I
$
% GetComponents()
public HingeJoint[] hingeJoints; void Example() { hingeJoints = gameObject.GetComponents
}
> > 2 1 A ' HingeJointsŝŶĂ'ĂŵĞKďũĞĐƚĂƌĞĐŽůůĞĐƚĞĚŝŶƚŽĂŶĂƌƌĂLJ;ůŝƐƚͿ͘KŶĐĞĂůůƚŚĞ HingeJointsĂƌĞŝŶƚŚĞĂƌƌĂLJ͕ŝƚΖƐƵƉƚŽƵƐƚŽĚĞĐŝĚĞǁŚŝĐŚ HingeJointsǁĞǁĂŶƚƚŽ ǁŽƌŬǁŝƚŚŝŶŽƵƌĐŽĚĞ͘
^ŽďŽƩŽŵůŝŶĞ͕ǁŚĂƚĂƌĞǁĞƚĂůŬŝŶŐĂďŽƵƚŚĞƌĞ͍tĞŬŶŽǁƚŚĂƚĂǀĂƌŝĂďůĞƐƚŽƌĞƐĂƐŝŶŐůĞ ŝƚĞŵ͘&ŽƌŝŶƐƚĂŶĐĞ͕ǁĞĐŽƵůĚƐƚŽƌĞĂƐŝŶŐůĞǁĞĂƉŽŶŝŶĂǀĂƌŝĂďůĞ͘dŚĂƚΖƐŐƌĞĂƚĂƐůŽŶŐĂƐǁĞ ŽŶůLJŚĂǀĞŽŶĞǁĞĂƉŽŶ͘^ƵƉƉŽƐĞǁĞŚĂǀĞƚŚĞŽƉƟŽŶŽĨƵƐŝŶŐŵĂŶLJĚŝīĞƌĞŶƚǁĞĂƉŽŶƐ͘dŽ ƐƚŽƌĞƚŚĞƐĞǁĞĂƉŽŶƐǁĞǁŽƵůĚŶĞĞĚĂƐĞƉĂƌĂƚĞǀĂƌŝĂďůĞĨŽƌĞĂĐŚŽŶĞ͘ďĞƩĞƌŽƉƟŽŶǁŽƵůĚ ďĞƚŽƐƚŽƌĞĂůůƚŚĞǁĞĂƉŽŶƐŝŶƐŽŵĞƐŽƌƚŽĨƐƵƉĞƌͲǀĂƌŝĂďůĞƚŚĂƚĐĂŶƐƚŽƌĞŵĂŶLJŝƚĞŵƐ͕ƚŚĂƚ ǁĂLJƚŚĞLJΖƌĞĂůůƐƚŽƌĞĚŝŶŽŶĞƉůĂĐĞ͕ŶŽƚŝŶĂǁŚŽůĞďƵŶĐŚŽĨĚŝīĞƌĞŶƚǀĂƌŝĂďůĞƐ͘
dŚĂƚΖƐǁŚĂƚĂŶĂƌƌĂLJ͕Ă>ŝƐƚ͕ŽƌĂŝĐƟŽŶĂƌLJŝƐ͕ĂǀĂƌŝĂďůĞǁŝƚŚƚŚĞĂďŝůŝƚLJƚŽƐƚŽƌĞŵĂŶLJŝƚĞŵƐ͘
K / ; A 9 ? < , A . B 9 . / 9 = > A C /B /C A C / @ 2 + F 9 @ - : < = = - 1 + > A ? D (
Storing items in an array
+ + ; / @ 0 9 2 2 1 A A ì 9 F , > A + @ 2 1 A
K GetComponents() ^ĐƌŝƉƟŶŐZĞĨĞƌĞŶĐĞ ͕ůĞƚΖƐƐĞĞŚŽǁĂŶ
9 . . 9 - /? : . A 9 2 A C I
[ 66 ]
Ä ¾ Æ Á ä ]
? , A . 2 1 A : + C A + @ > / @ A 6 I '
public HingeJoint[] hingeJoints;
D > ? + 2 1 A 9 . . 9 - /?
'
publicŵĞĂŶƐƚŚŝƐĂƌƌĂLJǁŝůůĂƉƉĞĂƌŝŶƚŚĞ
9 : : A ? ? / = > A E . + F + 2 1 A . ? : . / , 2 ? D
HingeJoint[]ŝƐƚŚĞƚLJƉĞŽĨǀĂƌŝĂďůĞďĞŝŶŐĐƌĞĂƚĞĚ͘/ƚΖƐŐŽŝŶŐƚŽďĞĂ
N
9 : > 9 ? ? / @ 2 1 A D
HingeJointƚLJƉĞ; HingeJoint /? ^ĐƌŝƉƚŝŶŐZĞĨĞƌĞŶĐĞ
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
= A : 2 ? G 9 @ C
ĂǀĂƌŝĂďůĞǁŝƚŚŵĂŶLJĐƵďďLJͲŚŽůĞƐƚŽƐƚŽƌĞƐĞǀĞƌĂů HingeJoint +
@ > - + = A : 2 ? D
+ HingeJoint
/? 2 1 A @ 9 F A + E 2 1 A 9 . . 9 - = A / @ 0 : . A 9 2 A C D hingeJoint dŚĂƚǁĂƐĞĂƐLJĞŶŽƵŐŚ͘/ƚΖƐũƵƐƚůŝŬĞĐƌĞĂƟŶŐĂŶLJŽƚŚĞƌǀĂƌŝĂďůĞ͘dŚĞŽŶůLJĚŝīĞƌĞŶĐĞ
ǁĂƐƚŚĞĂĚĚŝƟŽŶŽĨƚŚĞƐƋƵĂƌĞďƌĂĐŬĞƚƐƚŽƐƉĞĐŝĨLJƚŚĂƚƚŚĞƚLJƉĞŽĨǀĂƌŝĂďůĞďĞŝŶŐ
C A : > 9 . A C /? 9 : 2 < 9 > > - 0 + / @ 0 2 + = A 9 @ 9 . . 9 - D
A 2 1 + C . A 2 . /A B A ? 9 > > 2 1 A
EŽǁƚŚĂƚƚŚĞĂƌƌĂLJŝƐĐƌĞĂƚĞĚ͕ƚŚĞ GetComponent() F
+ @ 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
HingeJoints %
? , A . 2 1 A : + C A + @ > / @ A 7 I ' hingeJoints = gameObject.
GetComponents
/? 2 1 A 9 . . 9 -
hingeJoints
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 +
/? 2 1 A F A 2 1 + C < ? A C 2 + E / @ C A B A . -
GetComponents
+ = A : 2 + @ 2 1 /? 9 F A # = A : 2
HingeJoint %
? A 9 : 1 + = A : 2 /? E + < @ C G / 2 /? ? 2 + . A C / @ 2 + + @ A + E 2 1 A : < = = - 1 + > A ? + E 2 1 A 9 . . 9 - D
' HingeJoint
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 > > -
ĞůĞŵĞŶƚ
. . 9 - D 9 : 1 A > A F A @ 2 /? 0 /B A @ 9 @ / @ C A ì ŚĂǀĞĂƐƉĞĐŝĮĐůŽĐĂƟŽŶŝŶƐŝĚĞƚŚĞ hingeJoint 9
ŶƵŵďĞƌ͘dŚĞĮƌƐƚ HingeJointĨŽƵŶĚǁŽƵůĚďĞƐƚŽƌĞĚŝŶƚŚĞĞůĞŵĞŶƚĂƚŝŶĚĞdžϬ͕ƚŚĞ
? 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 @ C
9 . A E + < @ C + @ 2 1 A 9 F A # = A : 2 D ŽŶƵŶƟůĂůůƚŚĞ HingeJoints %
^ŽŝĨǁĞŬŶĞǁĞdžĂĐƚůLJ͕ǁŚŝĐŚ HingeJointŝŶƚŚĞĂƌƌĂLJǁĞǁĂŶƚĞĚƚŽǁŽƌŬǁŝƚŚ͕ƉĞƌŚĂƉƐ
1 A ? A : + @ C 2 HingeJointǁŚŝĐŚŝƐƐƚŽƌĞĚŝŶƚŚĞĞůĞŵĞŶƚĂƚŝŶĚĞdžϭ͕ǁĞĐĂŶƐŝŵƉůLJƌĞƚƌŝĞǀĞ ŝƚĚŝƌĞĐƚůLJďLJƐĂLJŝŶŐŝƚΖƐƐƚŽƌĞĚŝŶƚŚĞǀĂƌŝĂďůĞ͗
hingeJoint[1]
KŶĐĞĂŐĂŝŶǁĞƵƐĞƚŚĞƐƋƵĂƌĞďƌĂĐŬĞƚƐďĞĐĂƵƐĞƚŚĞǀĂƌŝĂďůĞŝƐĂĐƚƵĂůůLJĂŶĂƌƌĂLJ͕ĂŶĚĂůƐŽƚŽ
? , A : /E - 2 1 A / @ C A ì @ < F = A . D
[ 67 ]
Z ¾ 6 3 Å 4 [ Á å 3 Ç 3 Â Å Ç 3 Å Ä Â 1 Á
WůĞĂƐĞŶŽƟĐĞƚŚĂƚƚŚĞǀĞƌLJĮƌƐƚŝŶĚĞdžŶƵŵďĞƌƐƚĂƌƚƐǁŝƚŚnjĞƌŽ͘dŚŝƐŝƐĐĂůůĞĚ njĞƌŽŝŶĚĞdžĞĚ͘/ƚΖƐũƵƐƚƐŽŵĞƚŚŝŶŐLJŽƵǁŝůůŚĂǀĞƚŽƌĞŵĞŵďĞƌ͘DĂŶLJƚŚŝŶŐƐŝŶ
ƉƌŽŐƌĂŵŵŝŶŐĂƌĞnjĞƌŽŝŶĚĞdžĞĚ͕ĂŶĚŝƚĐƌĞĂƚĞƐĐŽĚŝŶŐĞƌƌŽƌƐǁŚĞŶLJŽƵĨŽƌŐĞƚ͕
¤ ÿ ¢ ¤ ý ú § § û ¥ ¤ þ ý ü ü ¤ û ÿ dŚĂƚΖƐĂůů/ǁĂŶƚƚŽƐĂLJĂďŽƵƚƵƐŝŶŐĂƌƌĂLJƐƚŽƐƚŽƌĞŽďũĞĐƚƐďĞĐĂƵƐĞ/ǁĂŶƚƚŽĚŝƐĐƵƐƐƵƐŝŶŐ 9 ListŝŶƐƚĞĂĚ͘/ƚΖƐůŝŬĞĂŶĂƌƌĂLJǁŝƚŚĞdžƚƌĂďĞŶĞĮƚƐ͘
Storing items in a List
/ @ ? 2 A 9 C + E ? / @ 0 9 ) List ĂŶĂƌƌĂLJĐĂŶďĞƐŽŵƵĐŚĞĂƐŝĞƌƚŽǁŽƌŬǁŝƚŚŝŶĂƐĐƌŝƉƚ͘>ŽŽŬĂƚ ƐŽŵĞĨŽƌƵŵƐŝƚĞƐƌĞůĂƚĞĚƚŽη͕ĂŶĚhŶŝƚLJ͕ĂŶĚLJŽƵΖůůĚŝƐĐŽǀĞƌƚŚĂƚĂŐƌĞĂƚĚĞĂůŽĨ ƉƌŽŐƌĂŵŵĞƌƐƐŝŵƉůLJĚŽŶΖƚƵƐĞĂŶĂƌƌĂLJƵŶůĞƐƐƚŚĞLJŚĂǀĞƚŽ͕ƚŚĞLJƉƌĞĨĞƌƚŽƵƐĞĂ List D ,ĞƌĞĂƌĞƚŚĞďĂƐŝĐƐŽĨǁŚLJĂ>ŝƐƚŝƐďĞƩĞƌ͕ĂŶĚĞĂƐŝĞƌ͕ƚŽƵƐĞƚŚĂŶĂŶĂƌƌĂLJ͗
ŶĂƌƌĂLJŝƐĂĮdžĞĚƐŝnjĞĂŶĚƵŶĐŚĂŶŐĞĂďůĞ
/? 9 C < ? 2 9 = > A dŚĞƐŝnjĞŽĨĂ List
zŽƵĐĂŶĞĂƐŝůLJĂĚĚƚŽ͕ĂŶĚƌĞŵŽǀĞĞůĞŵĞŶƚƐĨƌŽŵĂ List
dŽŵŝŵŝĐĂĚĚŝŶŐĂŶĞǁĞůĞŵĞŶƚƚŽĂŶĂƌƌĂLJ͕ǁĞǁŽƵůĚŶĞĞĚƚŽĐƌĞĂƚĞĂǁŚŽůĞ
ŶĞǁĂƌƌĂLJǁŝƚŚƚŚĞĚĞƐŝƌĞĚŶƵŵďĞƌŽĨĞůĞŵĞŶƚƐ͕ƚŚĞŶĐŽƉLJŽǀĞƌƚŚĞŽůĚĞůĞŵĞŶƚƐ
9 ? 2 1 A 9 = / > / 2 - 2 + ? 2 + . A 9 @ - 2 - , A + E + = A : 2 G dŚĞĮƌƐƚƚŚŝŶŐƚŽƵŶĚĞƌƐƚĂŶĚŝƐƚŚĂƚĂ List 1
ũƵƐƚůŝŬĞĂŶĂƌƌĂLJ͘ůƐŽ͕ũƵƐƚůŝŬĞĂŶĂƌƌĂLJ͕ǁĞŵƵƐƚƐƉĞĐŝĨLJ͕ǁŚŝĐŚƚLJƉĞŽĨŽďũĞĐƚLJŽƵǁĂŶƚ
+ ? 2 + . A D + E / @ 2 A 0 A . ? G + E 2 1 A 2 - , A G
ĂƉĂƌƟĐƵůĂƌ List 2 dŚŝƐŵĞĂŶƐƚŚĂƚŝĨLJŽƵǁĂŶƚĂ List int
1 A @ - + < : 9 @ : . A 9 2 A 9 2 - , A D 9 @ 2 9
2 ListƚŚĂƚǁŝůůƐƚŽƌĞŽŶůLJƚŚĞ int ListŽĨƉŽŶLJŶĂŵĞƐ͍
1 A @ : . A 9 2 A 9 2 - , A D ListƚŚĂƚǁŝůůƐƚŽƌĞŽŶůLJƚŚĞ string
7LPHIRUDFWLRQ²FUHDWHD/LVWRISRQ\QDPHV
. A 9 2 A 9 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 < ? A
* List
1 A 2 - , A D
2 string
ó ô
+ C /E -
# LearningScriptĂƐƐŚŽǁŶŝŶƚŚĞŶĞdžƚƐĐƌĞĞŶƐŚŽƚ͘
õ ô
EŽƟĐĞƚŚĞĐŚĂŶŐĞŽŶůŝŶĞϮ͘
ö ô ^ĂǀĞƚŚĞĮůĞ͘
[ 68 ]
Ä ¾ Æ Á ä ]
ô
.
@ @ / 2 - G : > /: ; + @ 8 > 9 - D
! )
What just happened?
: . A A @ ? 1 + 2 /? 2 1 A
dŚĞĨŽůůŽǁŝŶŐ ? ŽŶƐŽůĞ ŽƵƚƉƵƚ͘EŽƟĐĞƚŚĞĮƌƐƚŽƵƚƉƵƚƚĞůůƐLJŽƵƚŚĞƌĞŝƐĂ
+ 2 9 > + E 7 A > A F A @ 2 ? / @ 2 1 A I 2 List
[ 69 ]
Z ¾ 6 3 Å 4 [ Á å 3 Ç 3 Â Å Ç 3 Å Ä Â 1 Á
WůĞĂƐĞŶŽƟĐĞƚŚĂƚLJŽƵƌĐŽĚĞŝƐƵƐŝŶŐĚŽƚƐLJŶƚĂdž͕ǁŚŝĐŚǁŝůůďĞĚŝƐĐƵƐƐĞĚŝŶ
ŵŽƌĞĚĞƚĂŝůŝŶƚŚĞŶĞdžƚĐŚĂƉƚĞƌ͘dŚĞŵĂŝŶĐŽŶĐĞƉƚƐ/ǁĂŶƚLJŽƵƚŽĨŽĐƵƐŽŶ
¤ û ¤ ú û ¤ £ © ¤ ¤ ú £ û ¤ ÿ ú
© List
1 A 9 @ 9 > - ? /? + E ĐŽĚĞŝƐĂƐĨŽůůŽǁƐ͗
dŚĞĐŽĚĞŽŶůŝŶĞϮŝƐĂƐĨŽůůŽǁƐ͗
Using System.Collections.Generic;
+ = A 9 = > A 2 + < ? A 9
List͕ƚŚŝƐƚĞůůƐhŶŝƚLJǁŚĞƌĞƚŽĮŶĚƚŚĞŶĞĐĞƐƐĂƌLJηĐŽĚĞĮůĞƐ
+ . < ? / @ 0 9 D
E List
* 1 9 @ 0 A 2 1 A < ? / @ 0 ? 2 9 2 A F A @ 2 2 + using System.Collections.Generic; D
dŚĞĐŽĚĞŽŶůŝŶĞϴŝƐĂƐĨŽůŽůǁƐ͗
List
1 /? ? 2 9 2 A F A @ 2 : . A 9 2 A ? 9 @ A F , 2 - + = A : 2 D List
&ŝƌƐƚƚŚŝŶŐƚŽŶŽƟĐĞŝƐƚŚĂƚ List
E 2 - , A D
+ string
1 A @ 9 F A + E 2 1 A /? D List myFavoritePonies
ǀĞƌLJƚŚŝŶŐŽŶƚŚĞůĞŌƐŝĚĞŽĨƚŚĞĂƐƐŝŐŶŵĞŶƚŽƉĞƌĂƚŽƌ; =ͿŝƐĐƌĞĂƟŶŐĂǀĂƌŝĂďůĞ͕
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
= A : 2 / @ : + F , < 2 A . new List ŵĞŵŽƌLJ͕ĂŶĚŐŝǀĞƚŚĂƚŵĞŵŽƌLJůŽĐĂƟŽŶƚŚĞŶĂŵĞŽĨ myFavoritePonies D © ú £ ý ÿ ý ¤ û ¤ ü £ © ¤ û ¤ ý ÿ £ © ú £ ý ÿ ú ü ¥ U ¤ £ £ © ú £ ý £ ÿ ¤ § ú ü ÿ £ û ¤ ú £ ú ý ü ù List ¤ § ¤ ¡ ¤ ü £ ÿ > ¡ ú þ ý ü ¤ ú ü ¤ þ þ ú û £ ü ú ÿ ú ü ¥ U ¤ £ £ © ú £ ú ü ÿ £ û ¤ £ © ¤ ¤ þ þ £ ¢ ¤ ƌĞĂƚŝŶŐŽďũĞĐƚƐǁŝůůďĞĚŝƐĐƵƐƐĞĚŵŽƌĞŝŶƚŚĞŶĞdžƚĐŚĂƉƚĞƌĂďŽƵƚĚŽƚƐLJŶƚĂdž͘ [ 70 ] Ä ¾ Æ Á ä ] dŚĞĐŽĚĞďĞƚǁĞĞŶůŝŶĞƐϭϬƚŽϭϮ͗ myFavoritePonies.Add("Princess Cadence"); G 2 1 A , + @ - @ 9 F A ? G 2 + 2 1 A 1 A ? A 2 1 . A A > / @ A ? + E : + C A 9 . A 9 C C / @ 0 strings myFavoritePonies List D < ? 2 > / ; A 9 @ 9 . . 9 - G A 9 : 1 , + @ - @ 9 F A 9 C C A C /? 0 /B A @ 9 @ / @ C A ì @ < F = A . E + . O string 2 1 A A > A F A @ 2 2 1 9 2 A 9 : 1 , + @ - @ 9 F A /? ? 2 + . A C / @ I myFavoritePonies Princess Nightmare Fluttershy Cadence Moon Index 0 Index 1 Index 2 dŚĞĐŽĚĞŽŶůŝŶĞϭϰŝƐĂƐĨŽůůŽǁƐ͗ Debug.Log("This List has " + myFavoritePonies.Count + " ponies"); A 2 . /A B A ? 2 1 A @ < F = A . + E A > A F A @ 2 ? / @ 2 1 A D myFavoritePonies.Count . List dŚĞĐŽĚĞďĞƚǁĞĞŶůŝŶĞƐϭϲĂŶĚϭϴ͗ Debug.Log("The pony's name at index 1 is " + myFavoritePonies[1]); ,ĞƌĞLJŽƵƐĞĞƚŚĞŝŶĚĞdžŶƵŵďĞƌŝŶƐŝĚĞƐƋƵĂƌĞďƌĂĐŬĞƚƐ͘:ƵƐƚůŝŬĞĂŶĂƌƌĂLJ͕ƚŚŝƐŝƐŚŽǁ ƚŽĚŝƌĞĐƚůLJƌĞƚƌŝĞǀĞƚŚĞĚĂƚĂŝŶĂŶĞůĞŵĞŶƚĂƚĂƐƉĞĐŝĮĐŝŶĚĞdž͘ / ; A 2 1 A /? 9 2 / @ C A ì 5 D K ĂƌƌĂLJ͕ƚŚĞĮƌƐƚĞůĞŵĞŶƚŝŶĂ List [ 71 ] Z ¾ 6 3 Å 4 [ Á å 3 Ç 3 Â Å Ç 3 Å Ä Â 1 Á +DYHDJRKHUR²DGGDQRWKHUSRQ\WRWKH/LVW G C /? , > 9 - 2 1 A C C 9 @ + 2 1 A . , + @ - 2 + 2 1 A ' List͕ƚŚĞŶĚŝƐƉůĂLJŝƚΖƐŶĂŵĞ͘ůƐŽ͕ŝŶƚŚĞ ŽŶƐŽůĞ < F = A . + E A > A F A @ 2 ? / @ 2 1 A @ ListĂŌĞƌĂĚĚŝŶŐƚŚĞĨŽƵƌƚŚƉŽŶLJ͘ ý ü þ ú ü ¤ § ¤ ¡ ¤ ü £ £ £ © ¤ V ListƐŚŽǁƐƚŚĞŇĞdžŝďŝůŝƚLJŝƚŚĂƐŽǀĞƌĂŶĂƌƌĂLJ͘ © ý ÿ ý ÿ ý ¡ ¢ ÿ ÿ ý ¥ § ¤ £ ÿ ý ü þ ú ü ú û û ú [ 72 ] Ä ¾ Æ Á ä ] Storing items in a Dictionary e ĚŝĐƟŽŶĂƌLJŚĂƐĂ<ĞLJͬsĂůƵĞƉĂŝƌ͘dŚĞ d ŝƐũƵƐƚůŝŬĞĂŶŝŶĚĞdžŝŶĂŶĂƌƌĂLJŽƌůŝƐƚ͕ŝƚΖƐĂƐƐŽĐŝĂƚĞĚ ǁŝƚŚĂƉĂƌƟĐƵůĂƌǀĂůƵĞ͘dŚĞďŝŐďĞŶĞĮƚŽĨĂĚŝĐƟŽŶĂƌLJŝƐƚŚĂƚǁĞĐĂŶƐƉĞĐŝĨLJǁŚĂƚƚŚĞŬĞLJŝƐ ŐŽŝŶŐƚŽďĞ͘tĞŚĂǀĞƚŽƐƉĞĐŝĨLJƚŚĞƚLJƉĞĂŶĚƚŚĞŶĂŵĞŽĨƚŚĞŬĞLJƚŚĂƚǁŝůůďĞĂƐƐŽĐŝĂƚĞĚǁŝƚŚ 2 1 A B 9 > < A ? 2 + . A C D ƌĞĂůǁŽƌůĚĞdžĂŵƉůĞLJŽƵΖƌĞĨĂŵŝůŝĂƌǁŝƚŚŝƐĂĐŽůůĞĐƟŽŶŽĨĐƵƐƚŽŵĞƌƐĂŶĚƚŚĞŝƌ/ŶƵŵďĞƌ͘ :ƵƐƚďLJŬŶŽǁŝŶŐƚŚĞĐƵƐƚŽŵĞƌΖƐ/͕LJŽƵĐŽƵůĚƌĞƚƌŝĞǀĞƚŚĞĐƵƐƚŽŵĞƌΖƐŝŶĨŽƌŵĂƟŽŶ͘ 7LPHIRUDFWLRQ²FUHDWHDGLFWLRQDU\RISRQ\QDPHVDQGNH\V . A 9 2 A 9 < ? / @ 0 2 - , A E + . 2 1 A ; A - ? D * Dictionary int ó ô + C /E - # LearningScriptĂƐƐŚŽǁŶŝŶƚŚĞŶĞdžƚƐĐƌĞĞŶƐŚŽƚ͘ õ ô ^ĂǀĞƚŚĞĮůĞ͘ ö ô @ @ / 2 - G : > /: ; + @ 8 > 9 - D ! ) [ 73 ] Z ¾ 6 3 Å 4 [ Á å 3 Ç 3 Â Å Ç 3 Å Ä Â 1 Á What just happened? A . A /? 2 1 A D & ŽƵƚƉƵƚƚŽhŶŝƚLJΖƐ ŽŶƐŽůĞ 1 A 9 @ 9 > - ? /? ŽĨĐŽĚĞŝƐĂƐĨŽůůŽǁƐ͗ dŚĞĐŽĚĞŽŶůŝŶĞϴŝƐĂƐĨŽůůŽǁƐ͗ Dictionary string>(); A : > 9 . / @ 0 9 /? B A . - ? / F / > 9 . 2 + C A : > 9 . / @ 0 9 D ¤ Dictionary List . A < / . A ? - + < 2 + ? , A : /E - 2 1 A 2 - , A E + . 2 1 A D ' Dictionary Key 1 /? A ì 9 F , > A < ? A C / @ 2 A 0 A . ? E + . 2 1 A ; A - ? D dŚĞĐŽĚĞŽŶůŝŶĞƐϭϬĂŶĚϭϭŝƐĂƐĨŽůůŽǁƐ͗ myFavoritePonies.Add(10, "Princess Cadence"); myFavoritePonies.Add(20, "Fluttershy"); < ? 2 > / ; A - + < C /C E + . 9 D ,ĞƌĞLJŽƵĂĚĚĞĚƚǁŽƉŽŶŝĞƐƵƐŝŶŐ AddG List dŚĞĐŽĚĞŽŶůŝŶĞƐϭϮĂŶĚϭϴǁŝƚŚŝƚƐĚĞƐĐƌŝƉƟŽŶŝƐĂƐĨŽůůŽǁƐ͗ myFavoritePonies[30] = "Nightmare Moon"; myFavoritePonies[40] = "Rainbow Dash"; ,ĞƌĞLJŽƵĂĚĚĞĚƉŽŶŝĞƐďLJĂƐƐŝŐŶŝŶŐƚŚĞƉŽŶLJŶĂŵĞƚŽĂƉĂƌƟĐƵůĂƌĚŝĐƟŽŶĂƌLJŬĞLJ͘ [ 74 ] Ä ¾ Æ Á ä ] Using a Collection Initializer to add items to a List or Dictionary dŚĞƌĞŝƐĂŶŽƚŚĞƌǁĂLJƚŽĂĚĚĞůĞŵĞŶƚƐƚŽĂ>ŝƐƚŽƌŝĐƟŽŶĂƌLJ͘^ŽĨĂƌLJŽƵŚĂǀĞĚĞĐůĂƌĞĚĂŶĚ ĐƌĞĂƚĞĚĂŶĞǁĞŵƉƚLJ>ŝƐƚĂŶĚŝĐƟŽŶĂƌLJ͕ƚŚĞŶĂĚĚĞĚƉŽŶŝĞƐƚŽƚŚĞŵŽŶƐĞƉĂƌĂƚĞůŝŶĞƐŽĨ ĐŽĚĞ͘zŽƵĐĂŶĂĚĚƚŚĞƉŽŶŝĞƐĂƚƚŚĞƐĂŵĞƟŵĞLJŽƵĚĞĐůĂƌĞƚŚĞ>ŝƐƚŽƌŝĐƟŽŶĂƌLJǁŝƚŚĂ ŽůůĞĐƟŽŶ/ŶŝƟĂůŝnjĞƌ͘ 7LPHIRUDFWLRQ²DGGLQJSRQLHVXVLQJD&ROOHFWLRQ,QLWLDOL]HU /ĨǁĞŬŶŽǁƚŚĞŝƚĞŵƐƚŽĂĚĚĂŚĞĂĚŽĨƟŵĞ͕ǁĞĐĂŶĂĚĚƚŚĞŵǁŚĞŶǁĞĐƌĞĂƚĞƚŚĞ List . D + Dictionary ó ô + C /E - # LearningScriptĂƐƐŚŽǁŶŝŶƚŚĞŶĞdžƚƐĐƌĞĞŶƐŚŽƚ͘ õ ô ^ĂǀĞƚŚĞĮůĞ͘ ö ô @ @ / 2 - G : > /: ; + @ 8 > 9 - D ! ) [ 75 ] Z ¾ 6 3 Å 4 [ Á å 3 Ç 3 Â Å Ç 3 Å Ä Â 1 Á What just happened? < 2 , < 2 I ,ĞƌĞΖƐƚŚĞ ŽŶƐŽůĞ + dŚĞĂŶĂůLJƐŝƐŽĨƚŚĞĐŽĚĞŝƐĂƐĨŽůůŽǁƐ͗ dŚĞĐŽĚĞŽŶůŝŶĞƐϴĂŶĚϵǁŝƚŚŝƚƐĚĞƐĐƌŝƉƟŽŶ͗ List dŚŝƐŝƐĂĐƚƵĂůůLJĂƐŝŶŐůĞƐƚĂƚĞŵĞŶƚ͘/ƚΖƐŽŶƚǁŽůŝŶĞƐƚŽŵĂŬĞŝƚĮƚƚŚĞƐĐƌĞĞŶƐŚŽƚ͘ >ŝŶĞϵƐŚŽǁƐƚŚĞ ŽůůĞĐƟŽŶ/ŶŝƟĂůŝnjĞƌ ƚŚĂƚΖƐďĞĞŶĂĚĚĞĚƚŽƚŚĞƵƐƵĂů ListĚĞĐůĂƌĂƟŽŶ͘ EŽƟĐĞƚŚĞƉŽŶLJŶĂŵĞƐĂƌĞďĞƚǁĞĞŶƚǁŽĐƵƌůLJďƌĂĐĞƐ͘dŚŝƐŝƐŶŽƚĂĐŽĚĞďůŽĐŬ͘ 1 /? /? 9 @ + 2 1 A . < ? A + E : < . > - = . 9 : A ? D 1 /? ListŽůůĞĐƟŽŶ/ŶŝƟĂůŝnjĞƌŝƐƚŚĞƚǁŽĐƵƌůLJďƌĂĐĞƐĂŶĚƚŚĞƐƚƌŝŶŐƐ͕ƚŚĞƉŽŶLJ ŶĂŵĞƐ͕ƚŚĂƚĂƌĞďĞƚǁĞĞŶƚŚĞŵ͘ EŽƟĐĞƚŚĞƌĞŝƐĂƐĞŵŝĐŽůŽŶĂŌĞƌƚŚĞůĂƐƚĐƵƌůLJďƌĂĐĞ͘dŚŝƐĞŶĚƐƚŚĞ List 2 9 2 A F A @ 2 D ĚĞĐůĂƌĂƟŽŶ ? dŚĞĐŽĚĞďĞƚǁĞĞŶůŝŶĞƐϭϰĂŶĚϭϱ͗ Dictionary dŚŝƐŝƐĂƐŝŶŐůĞƐƚĂƚĞŵĞŶƚ͘/ƚΖƐŽŶƚǁŽůŝŶĞƐƚŽŵĂŬĞŝƚĮƚƚŚĞƐĐƌĞĞŶƐŚŽƚ͘ >ŝŶĞϭϱƐŚŽǁƐƚŚĞ ŽůůĞĐƟŽŶ/ŶŝƟĂůŝnjĞƌ ƚŚĂƚΖƐďĞĞŶĂĚĚĞĚƚŽƚŚĞƵƐƵĂů DictionaryĚĞĐůĂƌĂƟŽŶ͘ ĂĐŚŬĞLJĂŶĚǀĂůƵĞƉŽŶLJŶĂŵĞŝƐďĞƚǁĞĞŶƚǁŽĐƵƌůLJďƌĂĐĞƐ͕ƚŚĞŶĂůůƚŚĞ ŬĞLJͬǀĂůƵĞƉĂŝƌĐŽŵďŝŶĂƟŽŶƐďĞŝŶŐŝŶŝƟĂůŝnjĞĚĂƌĞďĞƚǁĞĞŶƚǁŽĐƵƌůLJďƌĂĐĞƐ͘ [ 76 ] Ä ¾ Æ Á ä ] 3RSTXL]²XQGHUVWDQGLQJDQDUUD\DQGD/LVW Yϭ͘/ŶĂŶĂƌƌĂLJŽƌĂ>ŝƐƚ͕ǁŚĂƚŝƐĂŶĞůĞŵĞŶƚ͍ YϮ͘/ŶĂŶĂƌƌĂLJŽƌĂ>ŝƐƚ͕ǁŚĂƚŝƐƚŚĞŝŶĚĞdžŶƵŵďĞƌŽĨƚŚĞĮƌƐƚĞůĞŵĞŶƚ͍ Yϯ͘ĂŶĂƐŝŶŐůĞĂƌƌĂLJ͕ŽƌĂƐŝŶŐůĞ>ŝƐƚ͕ƐƚŽƌĞĚŝīĞƌĞŶƚƚLJƉĞƐŽĨĚĂƚĂ͍ Yϰ͘,ŽǁĐĂŶLJŽƵĂĚĚŵŽƌĞĞůĞŵĞŶƚƐƚŽĂŶĂƌƌĂLJƚŽŵĂŬĞƌŽŽŵĨŽƌŵŽƌĞĚĂƚĂ͍ Looping though lists to make decisions + 0 A 2 C 9 2 9 / @ 2 + 2 1 A F G dŚĞƐĞƉƌĞǀŝŽƵƐĂƌƌĂLJ͕>ŝƐƚ͕ĂŶĚŝĐƟŽŶĂƌLJĞdžĂŵƉůĞƐƐŚŽǁĞĚŚŽǁ 2 ĂŶĚŚŽǁƚŚĞLJƐƚŽƌĞĚĂƚĂ͘/ƚΖƐŶŽǁƟŵĞƚŽůĞĂƌŶŚŽǁƚŽůŽŽƉƚŚƌŽƵŐŚƚŚĞĚĂƚĂƚŽƌĞƚƌŝĞǀĞ 2 1 A @ A A C A C C 9 2 9 D ,ĞƌĞĂƌĞƐŽŵĞĐŽŵŵŽŶǁĂLJƐƚŽƉĞƌĨŽƌŵůŽŽƉƐ͗ > + + , foreach > + + , for > + + , while 8VLQJWKHIRUHDFKORRS tŚĞŶǁŽƌŬŝŶŐǁŝƚŚŽůůĞĐƟŽŶƐƐƵĐŚĂƐĂŶĂƌƌĂLJ͕ĂůŝƐƚŽƌĚŝĐƟŽŶĂƌLJ͕ƚŚĞƉƌĞĨĞƌƌĞĚǁĂLJƚŽ - : > 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 A > + + , D : foreach 7LPHIRUDFWLRQ²XVLQJIRUHDFKORRSVWRUHWULHYHGDWD tĞΖƌĞŐŽŝŶŐƚŽĐƌĞĂƚĞĂŶĂƌƌĂLJ͕ĂůŝƐƚĂŶĚĂĚŝĐƟŽŶĂƌLJ͕ƚŚĞŶůŽŽƉƚŚƌŽƵŐŚĞĂĐŚŽŶĞƚŽƌĞƚƌŝĞǀĞ 1 A C A ? / . A C C 9 2 9 E . + F A 9 : 1 + @ A = - < ? / @ 0 > + + , ? D 2 foreach ó ô + C /E - # LearningScriptĂƐƐŚŽǁŶŝŶƚŚĞŶĞdžƚƐĐƌĞĞŶƐŚŽƚ͘ õ ô ^ĂǀĞƚŚĞĮůĞ͘ [ 77 ] Z ¾ 6 3 Å 4 [ Á å 3 Ç 3 Â Å Ç 3 Å Ä Â 1 Á ö ô @ @ / 2 - G : > /: ; + @ 8 > 9 - D ! ) What just happened? ƐǁĞůŽŽƉĞĚƚŚƌŽƵŐŚĞĂĐŚůŝƐƚ͕ǁĞĚĞĐŝĚĞĚǁŚŝĐŚĚĂƚĂƚŽĚŝƐƉůĂLJƚŽƚŚĞ ŽŶƐŽůĞ I [ 78 ] Ä ¾ Æ Á ä ] dŚĞĂŶĂůLJƐŝƐŽĨƚŚĞĐŽĚĞŝƐĂƐĨŽůůŽǁƐ͗ + . A 9 : 1 H ůŝƐƚǁĞĐƌĞĂƚĞĚ͕ǁĞƉŽƉƵůĂƚĞĚƚŚĞŵƵƐŝŶŐĂŽůůĞĐƟŽŶ/ŶŝƟĂůŝnjĞƌ͘ dŚĞĐŽĚĞďĞƚǁĞĞŶůŝŶĞƐϵĂŶĚϭϬǁŝƚŚŝƚƐĚĞƐĐƌŝƉƟŽŶ͗ string[] ponyArray = new string[] {"AppleJack", "Rarity"}; 9 . . 9 - @ 9 F A C ' string ponyArrayŝƐĚĞĐůĂƌĞĚĂŶĚƚǁŽƐƚƌŝŶŐƐĂƌĞĂĚĚĞĚ͘ dŚĞĐŽĚĞŽŶůŝŶĞϭϮǁŝƚŚŝƚƐĚĞƐĐƌŝƉƟŽŶŝƐĂƐĨŽůůŽǁƐ͗ foreach(string pony in ponyArray) > + + , /? < ? 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 ' foreach / @ ponyArray D B 9 . / 9 = > A /? C A : > 9 . A C @ 9 F A C 2 + 1 + > C 2 1 A . A 2 . /A B A C , + @ - @ 9 F A D ' pony @ : A 9 , + @ - @ 9 F A /? . A 2 . /A B A C G 2 1 A # foreachĐŽĚĞďůŽĐŬ͕ůŝŶĞƐϭϯƚŽϭϲ͕ŝƐĞdžĞĐƵƚĞĚ͘ 9 ? = A A @ . A 2 . /A B A C 9 @ C dŚŝƐůŽŽƉŝŶŐĐŽŶƟŶƵĞƐƵŶƟůĞĂĐŚĞůĞŵĞŶƚŝŶ ponyArray 1 2 A ? 2 A C / @ 2 1 A : + C A = > + : ; D dŚĞĐŽĚĞŽŶůŝŶĞϭϰǁŝƚŚŝƚƐĚĞƐĐƌŝƉƟŽŶŝƐĂƐĨŽůůŽǁƐ͗ if(pony == "Rarity"); E 2 1 A . A 2 . /A B A C ? 2 . / @ 0 ? 2 + . A C / @ /? A < 9 > 2 + G 2 1 A @ > / @ A 6 L A ì A : < 2 A ? D ! pony "Rarity" dŚĞĐŽĚĞŽŶůŝŶĞϭϱǁŝƚŚŝƚƐĚĞƐĐƌŝƉƟŽŶŝƐĂƐĨŽůůŽǁƐ͗ Debug.Log("I was looking for " + pony); dŚĞƐƚƌŝŶŐ/ǁĂƐůŽŽŬŝŶŐĨŽƌƉůƵƐƚŚĞƐƚƌŝŶŐǀĂůƵĞƐƚŽƌĞĚŝŶƉŽŶLJŝƐĚŝƐƉůĂLJĞĚŝŶ 1 A D 2 ŽŶƐŽůĞ dŚĞĐŽĚĞďĞƚǁĞĞŶůŝŶĞƐϭϴĂŶĚϭϵǁŝƚŚŝƚƐĚĞƐĐƌŝƉƟŽŶ͗ List "Fluttershy"}; @ 9 F A C ' List ponyListŝƐĚĞĐůĂƌĞĚƚŚĂƚǁŝůůƐƚŽƌĞƚŚĞ stringƚLJƉĞ͕ĂŶĚƚǁŽ ? 2 . / @ 0 ? 9 . A 9 C C A C D 1 A : + C A + @ ůŝŶĞϮϭǁŝƚŚŝƚƐĚĞƐĐƌŝƉƟŽŶŝƐĂƐĨŽůůŽǁƐ͗ foreach(string pony in ponyList) > + + , /? < ? A C 2 + . A 2 . /A B A + @ A A > A F A @ 2 G 9 , + @ - @ 9 F A G ? 2 + . A C ' foreach string @ D / ponyList B 9 . / 9 = > A /? C A : > 9 . A C @ 9 F A C 2 + 1 + > C 2 1 A . A 2 . /A B A C , + @ - @ 9 F A D ' pony [ 79 ] Z ¾ 6 3 Å 4 [ Á å 3 Ç 3 Â Å Ç 3 Å Ä Â 1 Á @ : A 9 , + @ - @ 9 F A /? . A 2 . /A B A C G 2 1 A # foreachĐŽĚĞďůŽĐŬ;ƚŚĂƚŝƐ͕ůŝŶĞƐϮϮƚŽϮϱͿ /? A ì A : < 2 A C D 9 ? = A A @ . A 2 . /A B A C 9 @ C dŚŝƐůŽŽƉŝŶŐĐŽŶƟŶƵĞƐƵŶƟůĞĂĐŚĞůĞŵĞŶƚŝŶ ponyList 1 2 A ? 2 A C / @ 2 1 A : + C A = > + : ; D dŚĞĐŽĚĞŽŶůŝŶĞϮϯǁŝƚŚŝƚƐĚĞƐĐƌŝƉƟŽŶŝƐĂƐĨŽůůŽǁƐ͗ if(pony == "Fluttershy") E 2 1 A . A 2 . /A B A C ? 2 . / @ 0 ? 2 + . A C / @ /? A < 9 > 2 + G 2 1 A @ > / @ A ! pony "Fluttershy" ϮϰĞdžĞĐƵƚĞƐ͘ dŚĞĐŽĚĞŽŶůŝŶĞϮϰǁŝƚŚŝƚƐĚĞƐĐƌŝƉƟŽŶŝƐĂƐĨŽůůŽǁƐ͗ Debug.Log("I was looking for " + pony); C /? , > 9 - A C dŚĞƐƚƌŝŶŐ/ǁĂƐůŽŽŬŝŶŐĨŽƌƉůƵƐƚŚĞƐƚƌŝŶŐǀĂůƵĞƐƚŽƌĞĚŝŶ pony /? D @ 2 1 A / ŽŶƐŽůĞ dŚĞĐŽĚĞďĞƚǁĞĞŶůŝŶĞƐϮϳĂŶĚϮϴǁŝƚŚŝƚƐĚĞƐĐƌŝƉƟŽŶ͗ Dictionary string>() {{10, "Nightmare Moon"}, {20, "Rainbow Dash"}}; @ 9 F A C ' Dictionary ponyDictionaryŝƐĚĞĐůĂƌĞĚǁŝƚŚŬĞLJĂŶĚǀĂůƵĞŽĨƚLJƉĞ dŚĞĐŽĚĞŽŶůŝŶĞϯϬǁŝƚŚŝƚƐĚĞƐĐƌŝƉƟŽŶŝƐĂƐĨŽůůŽǁƐ͗ foreach(KeyValuePair > + + , /? < ? A C 2 + . A 2 . /A B A + @ A G 9 ; A - 9 @ C B 9 > < A G ? 2 + . A C / @ ' foreach KeyValuePair ponyDictionary D B 9 . / 9 = > A /? C A : > 9 . A C @ 9 F A C 2 + 1 + > C 2 1 A . A 2 . /A B A C D ' pony KeyValuePair : + C A = > + : ; @ : 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 A # foreach ;ƚŚĂƚŝƐ͕ůŝŶĞƐϯϭƚŽϯϰͿŝƐĞdžĞĐƵƚĞĚ͘ @ 1 9 ? = A A @ dŚŝƐůŽŽƉŝŶŐĐŽŶƟŶƵĞƐƵŶƟůĞĂĐŚ KeyValuePair / ponyDictionary . A 2 . /A B A C 9 @ C 2 A ? 2 A C / @ 2 1 A : + C A = > + : ; D dŚĞĐŽĚĞŽŶůŝŶĞƐϯϮǁŝƚŚŝƚƐĚĞƐĐƌŝƉƟŽŶŝƐĂƐĨŽůůŽǁƐ͗ if(pony.Key == 20) ? 2 + . A C / @ , + @ - /? A < 9 > 2 + G 2 1 A @ > / @ A 7 7 A ì A : < 2 A ? D E 2 1 A . A 2 . /A B A C ! Key 20 1 A : + C A ŽŶůŝŶĞϯϯǁŝƚŚŝƚƐĚĞƐĐƌŝƉƟŽŶŝƐĂƐĨŽůůŽǁƐ͗ Debug.Log("I was looking for " + pony.Value); , > < ? 2 1 A ? 2 . / @ 0 B 9 > < A ? 2 + . A C / @ /? 1 A ? 2 . / @ 0 I was looking for pony.Key /? , > 9 - A C / @ 2 1 A D C ŽŶƐŽůĞ [ 80 ] Ä ¾ Æ Á ä ] 8VLQJWKHIRUORRS dŚĞďĞƐƚĚĞƐĐƌŝƉƟŽŶ/ΖǀĞĨŽƵŶĚĨŽƌĂ forůŽŽƉ͗ΗůůŽǁƐĂĐŽĚĞďůŽĐŬƚŽďĞĞdžĞĐƵƚĞĚĂƐƉĞĐŝĮĐ ŶƵŵďĞƌŽĨƟŵĞƐ͘Η > + + , I 1 A ? - @ 2 9 ì + E 9 for for (initializer; condition; iterator) { code block } EŽƟĐĞƚŚĞƚŚƌĞĞƉĂƌƚƐŝŶƐŝĚĞƚŚĞƉĂƌĞŶƚŚĞƐĞƐĂƌĞ ÿ ¤ ¢ ú û ú £ ¤ ¥ ÿ ¤ ¡ ý § ü ÿ ü £ ¡ ¡ ú ÿ 7LPHIRUDFWLRQ²VHOHFWLQJDSRQ\IURPD/LVWXVLQJDIRUORRS , + @ - @ 9 F A ? 2 + 9 D A 2 . /A B A 9 @ C C /? , > 9 - 2 1 A @ < F = A . + E A > A F A @ 2 ? / @ 2 1 A >ĞƚΖƐĂĚĚĨŽƵƌ List " D 1 A @ < ? A 9 > + + , 2 + C /? , > 9 - A 9 : 1 , + @ - @ 9 F A G 9 @ C ? A > A : 2 + @ A + E 2 1 A F I List for ó ô + C /E - # LearningScriptĂƐƐŚŽǁŶŝŶƚŚĞŶĞdžƚƐĐƌĞĞŶƐŚŽƚ͘ õ ô ^ĂǀĞƚŚĞĮůĞ͘ ö ô @ @ / 2 - G : > /: ; + @ 8 > 9 - D ! ) [ 81 ] Z ¾ 6 3 Å 4 [ Á å 3 Ç 3 Â Å Ç 3 Å Ä Â 1 Á What just happened? 2 1 A @ 9 F A ? + E 2 1 A dŚĞĨŽůůŽǁŝŶŐƐĐƌĞĞŶƐŚŽƚƐŚŽǁƐƚŚĞŶƵŵďĞƌŽĨĞůĞŵĞŶƚƐŝŶ ponyListG ƉŽŶŝĞƐǁĞĂĚĚĞĚƚŽ ponyList͕ĂŶĚƚŚĞƉŽŶLJǁĞǁĞƌĞůŽŽŬŝŶŐĨŽƌ͗ 1 A 9 @ 9 > - ? /? + E 2 1 A ĐŽĚĞŝƐĂƐĨŽůůŽǁƐ͗ dŚĞĐŽĚĞďĞƚǁĞĞŶůŝŶĞƐϴĂŶĚϵǁŝƚŚŝƚƐĚĞƐĐƌŝƉƟŽŶ͗ List Cadence", "Fluttershy", "Rainbow Dash", "Rarity"}; @ 9 F A C 2 - , A D ' List ponyListŝƐĚĞĐůĂƌĞĚƚŚĂƚǁŝůůƐƚŽƌĞƚŚĞ string + < . ? 2 . / @ 0 ? 9 . A 9 C C A C + E 2 1 A , + @ - @ 9 F A ? D H dŚĞĐŽĚĞŽŶůŝŶĞϭϭǁŝƚŚŝƚƐĚĞƐĐƌŝƉƟŽŶŝƐĂƐĨŽůůŽǁƐ͗ Debug.Log("Number of elements in ponyList: " + ponyList.Count); 1 A ? 2 . / @ 0 , > < ? 2 1 A @ < F = A . + E A > A F A @ 2 ? Number of elements in ponyList: ? A C / @ /? C /? , > 9 - A C / @ 2 1 A D < ponyList ŽŶƐŽůĞ < ? / @ 0 C + 2 ? - @ 2 9 ì 2 + 9 : : A ? ? 2 1 A , . + , A . 2 - G 9 B 9 . / 9 = > A ponyList.Count /? Count 1 9 2 ? 2 + . A ? 2 1 A @ < F = A . + E A > A F A @ 2 ? / @ 9 D 2 List ? + / 2 1 9 ? E + < . A > A F A @ 2 ? 2 + ? 2 + . A 2 1 A &ŽƵƌŶĂŵĞƐǁĞƌĞĂĚĚĞĚƚŽ ponyListG ? 2 . / @ 0 @ 9 F A ? D [ 82 ] Ä ¾ Æ Á ä ] dŚĞĐŽĚĞŽŶůŝŶĞϭϯǁŝƚŚŝƚƐĚĞƐĐƌŝƉƟŽŶŝƐĂƐĨŽůůŽǁƐ͗ for(int i = 0; i < ponyList.Count; i++) /? : . A 9 2 A C D 1 A for loop dŚĞŝŶŝƟĂůŝnjĞƌŝƐƐŝŵƉůLJĂĚĞĐůĂƌĞĚǀĂƌŝĂďůĞƚŚĂƚΖƐĂƐƐŝŐŶĞĚĂǀĂůƵĞ͘ A C A : > 9 . A C 9 B 9 . / 9 = > A + E 2 - , A G 9 @ C 9 ? ? / 0 @ A C / 2 2 1 A 9 B 9 > < A + E i int 0͘tŚLJ͍ D dŚĞĮƌƐƚŝŶĚĞdžŶƵŵďĞƌŝŶĂ List /? 0 dŚĞĐŽŶĚŝƟŽŶŝƐĐŚĞĐŬĞĚĨŽƌƚƌƵĞďĞĨŽƌĞƚŚĞĐŽĚĞďůŽĐŬ͕ůŝŶĞƐϭϰƚŽϭϵ͕ŝƐĂůůŽǁĞĚ 2 + = A A ì A : < 2 A C D 1 A @ + < . /? A < 9 > 2 + G 9 @ C forůŽŽƉĮƌƐƚďĞŐŝŶƐ͕ƚŚĞǀĂƌŝĂďůĞ i 0 ponyList.Count /? A < 9 > 2 + G 2 1 A . A E + . A /? > A ? ? 2 1 9 @ D 1 A . A E + . A 2 1 A > + + , : + C A 4 0 4͕ǁŚŝĐŚŝƐ true for ďůŽĐŬŝƐĂůůŽǁĞĚƚŽĞdžĞĐƵƚĞ͘ G F 9 ; / @ 0 D 1 A / 2 A . 9 2 + .G i++͕ŶŽǁĂĚĚƐϭƚŽ i iŶŽǁĞƋƵĂůƚŽ 1 i++ŝƐƚŚĞƐĂŵĞƚŚŝŶŐĂƐǁƌŝƟŶŐ i = i + 1͕ǁŚŝĐŚŵĞĂŶƐƚŚĂƚLJŽƵĂƌĞƚĂŬŝŶŐƚŚĞ 9 > < A / @ 9 @ C 9 C C / @ 0 6 G 2 1 A @ 9 ? ? / 0 @ / @ 0 2 1 9 2 2 + D B i i dŚĞůŽŽƉƌĞƉĞĂƚƐƵŶƟůƚŚĞĐŽŶĚŝƟŽŶďĞĐŽŵĞƐ false D ŌĞƌĨŽƵƌƟŵĞƐƚŚƌŽƵŐŚƚŚĞůŽŽƉ͕ iŝƐŶŽǁĞƋƵĂůƚŽϰ͕ƚŚĞƌĞĨŽƌĞƚŚĞĐŽŶĚŝƟŽŶŝƐ A : 9 < ? A /? @ + 2 > A ? ? 2 1 9 @ ŶŽǁ false = i 4͕ƐŽƚŚĞůŽŽƉŝƐĮŶŝƐŚĞĚ͘ dŚĞůĞƩĞƌΗŝΗŝƐƚLJƉŝĐĂůůLJƵƐĞĚĂƐƚŚĞǀĂƌŝĂďůĞŶĂŵĞŝŶĂĨŽƌůŽŽƉ͘/ƚΖƐƚƌĂĚŝƟŽŶ͘/Ĩ LJŽƵŚĂƉƉĞŶƚŽŚĂǀĞŶĞƐƚĞĚĨŽƌůŽŽƉƐ͕ƚŚĞŶƚŚĞǀĂƌŝĂďůĞŶĂŵĞƐƵƐĞĚǁŝůůďĞƚŚĞ ůĞƩĞƌƐũ͕Ŭ͕ů͕ĂŶĚƐŽŽŶ͕ĂƐŶĞĞĚĞĚ͘ 1 A : + C A + @ ůŝŶĞƐϭϱǁŝƚŚŝƚƐĚĞƐĐƌŝƉƟŽŶŝƐĂƐĨŽůůŽǁƐ͗ Debug.Log(ponyList[i]); 1 A A > A F A @ 2 ? / @ 9 . A = A / @ 0 9 : : A ? ? < ? / @ 0 2 1 A / @ C A ì @ < F = A . D ponyList ? 2 1 A /? A < 9 > 2 + G 2 1 A . A E + . A ' forůŽŽƉŝƐĞdžĞĐƵƚĞĚĨŽƌƚŚĞĮƌƐƚƟŵĞ͕ i 0 9 : 2 < 9 > > - G 2 1 A A > A F A @ 2 9 2 / @ C A ì 5 D ponyList[i] /? ponyList[0] D 1 A A > A F A @ 2 9 2 / @ C A ì 5 /? ? 2 + . / @ 0 Princess Cadence + , G 6 /? 9 C C A C 2 + G 2 1 A . A E + . A 2 1 A @ A ì 2 2 . / , ŌĞƌĞĂĐŚŝƚĞƌĂƟŽŶƚŚƌŽƵŐŚƚŚĞ for > + i 1 . + < 0 1 2 1 A E + . > + + , G 2 iǁŝůůďĞϭ͘ 2 1 A @ A ì 2 A > A F A @ 2 9 2 / @ C A ì 6 D ponyList[i]ǁŝůůĂĐƚƵĂůůLJďĞ ponyList[1]G dŚĞƌĞƐƵůƚŝƐĂůůĨŽƵƌƉŽŶŝĞƐǁŝůůďĞĂĐĐĞƐƐĞĚĂŶĚĚŝƐƉůĂLJĞĚŝŶƚŚĞ ŽŶƐŽůĞ D [ 83 ] Z ¾ 6 3 Å 4 [ Á å 3 Ç 3 Â Å Ç 3 Å Ä Â 1 Á dŚĞĐŽĚĞŽŶůŝŶĞƐϭϳǁŝƚŚŝƚƐĚĞƐĐƌŝƉƟŽŶŝƐĂƐĨŽůůŽǁƐ͗ if(ponyList[i] == "Fluttershy") ƵƌŝŶŐĞĂĐŚŝƚĞƌĂƟŽŶƚŚƌŽƵŐŚƚŚĞĐŽĚĞďůŽĐŬ͕ƚŚŝƐŝĨƐƚĂƚĞŵĞŶƚŝƐĐŚĞĐŬŝŶŐƚŽƐĞĞŝĨ 1 A @ 9 F A . A 2 . /A B A C E . + F D 2 ponyListŝƐĞƋƵĂůƚŽΗ Fluttershy" tŚĞŶŝƚŝƐ͕ůŝŶĞϭϴŝƐĞdžĞĐƵƚĞĚ͘ dŚĞĐŽĚĞŽŶůŝŶĞƐϭϴǁŝƚŚŝƚƐĚĞƐĐƌŝƉƟŽŶŝƐĂƐĨŽůůŽǁƐ͗ Debug.Log("I was looking for " + ponyList[i]); 1 A ? 2 . / @ 0 , > < ? 2 1 A @ 9 F A /? C /? , > 9 - A C / @ I was looking for Fluttershy 1 A D 2 ŽŶƐŽůĞ Using the while loop 1 A > + + , A ì A : < 2 A ? 9 while ĐŽĚĞďůŽĐŬƵŶƟůĂƐƉĞĐŝĮĞĚĞdžƉƌĞƐƐŝŽŶĞǀĂůƵĂƚĞƐƚŽĨĂůƐĞ͘ § ¢ ý ü £ ¡ ¢ ü ¤ ü £ ¢ ú û £ ÿ f V whileůŽŽƉŝƐǀĞƌLJƐŝŵŝůĂƌƚŽĂĨŽƌůŽŽƉ͘/ƚΖƐůŝŬĞďƌĞĂŬŝŶŐƚŚĞ for The syntax of a while loop: initializer while (condition) { code block iterator } 7LPHIRUDFWLRQ²ÀQGLQJGDWDDQGEUHDNRXWRIWKHZKLOHORRS tĞΖƌĞŐŽŝŶŐƚŽĚŽƐŽŵĞƚŚŝŶŐĂůŝƩůĞĚŝīĞƌĞŶƚŝŶƚŚŝƐůŽŽƉ͘KŶĐĞǁĞĮŶĚƚŚĞƉŽŶLJǁĞǁĂŶƚ͕ ǁĞΖůůďƌĞĂŬŽƵƚŽĨƚŚĞǁŚŝůĞůŽŽƉ͘dŚŝƐŝƐŚĂŶĚLJǁŚĞŶůŽŽƉŝŶŐƚŚƌŽƵŐŚĂůĂƌŐĞůŝƐƚŽĨŽďũĞĐƚƐ͘ 1 . + < 0 1 2 1 A . A ? 2 + E tŚĞŶƚŚĞĚĞƐŝƌĞĚĚĂƚĂŝƐĨŽƵŶĚ͕ƚŚĞƌĞΖƐŶŽƐĞŶƐĞŝŶĐŽŶƟŶƵŝŶŐƚŽůŽŽƉ 2 2 1 A > /? 2 I ó ô + C /E - # LearningScriptĂƐƐŚŽǁŶŝŶƚŚĞŶĞdžƚƐĐƌĞĞŶƐŚŽƚ͘ õ ô ^ĂǀĞƚŚĞĮůĞ͘ ö ô @ @ / 2 - G : > /: ; + @ 8 > 9 - D ! ) [ 84 ] Ä ¾ Æ Á ä ] What just happened? A A @ ? A 9 . : 1 / @ 0 E + . / @ ? 2 A 9 C + E G 9 @ C @ + 2 / @ : > < C A C 2 1 A /ĨǁĞŚĂǀĞ = Fluttershy Rainbow Dash 1 A ? 9 F A 9 ? 2 1 A > + + , break ŬĞLJǁŽƌĚŽŶůŝŶĞϭϵ͕ƚŚĞŽƵƚƉƵƚǁŽƵůĚŚĂǀĞďĞĞŶĞdžĂĐƚůLJ 2 for A ì 9 F , > A D @ E 9 : 2 G 2 1 A ! break ŬĞLJǁŽƌĚĐŽƵůĚŚĂǀĞĂůƐŽŚĂǀĞďĞĞŶƵƐĞĚƚŽďƌĞĂŬŽƵƚŽĨƚŚĞ E + . > + + , D [ 85 ] Z ¾ 6 3 Å 4 [ Á å 3 Ç 3 Â Å Ç 3 Å Ä Â 1 Á + , A ì 9 F , > A D /ǁŝůůƐŬŝƉĞdžƉůĂŝŶŝŶŐůŝŶĞƐŽĨĐŽĚĞƚŚĂƚĂƌĞŝĚĞŶƟĐĂůŝŶƚŚĞ for > + dŚĞĂŶĂůLJƐŝƐŽĨƚŚĞĐŽĚĞŝƐĂƐĨŽůůŽǁƐ͗ dŚĞĐŽĚĞŽŶůŝŶĞϭϭǁŝƚŚŝƚƐĚĞƐĐƌŝƉƟŽŶŝƐĂƐĨŽůůŽǁƐ͗ int i = 0; dŚĞŝŶŝƟĂůŝnjĞƌŝƐĚĞĐůĂƌĞĚĂŶĚĂƐƐŝŐŶĞĚƚŚĞǀĂůƵĞŽĨϭ͘ dŚĞĐŽĚĞŽŶůŝŶĞϭϮǁŝƚŚŝƚƐĚĞƐĐƌŝƉƟŽŶŝƐĂƐĨŽůůŽǁƐ͗ while(i < ponyList.Count) 1 A whileůŽŽƉŝƐĚĞĐůĂƌĞĚǁŝƚŚƚŚĞĐŽŶĚŝƟŽŶ͘ / @ : A /? G / 2 /? > A ? ? 2 1 9 @ J i 0 ponyList.Count͕ǁŚŝĐŚŝƐ 4͕ƚŚĞĐŽŶĚŝƟŽŶŝƐƚƌƵĞ͘ 1 A whileůŽŽƉĐŽĚĞďůŽĐŬ;ƚŚĂƚŝƐ͕ůŝŶĞƐϭϯƚŽϮϮͿ͕ŝƐĞdžĞĐƵƚĞĚ͘ dŚĞĐŽĚĞŽŶůŝŶĞϭϲǁŝƚŚŝƚƐĚĞƐĐƌŝƉƟŽŶŝƐĂƐĨŽůůŽǁƐ͗ if(ponyList[i] == "Rainbow Dash") 2 9 2 A F A @ 2 /? : 1 A : ; / @ 0 2 + ƵƌŝŶŐĞĂĐŚŝƚĞƌĂƟŽŶƚŚƌŽƵŐŚƚŚĞĐŽĚĞďůŽĐŬ͕ƚŚŝƐ if ? /? A < 9 > 2 + D A A /E 2 1 A @ 9 F A . A 2 . /A B A C E . + F ? ponyList Rainbow Dash tŚĞŶŝƚŝƐ͕ƚŚĞĐŽĚĞďůŽĐŬŽĨůŝŶĞƐϭϳƚŽϮϬŝƐĞdžĞĐƵƚĞĚ͘ tŚĞŶŝƚŝƐŶΖƚ͕ůŝŶĞϮϭŝƐƚŚĞŶĞdžƚůŝŶĞƚŚĂƚŝƐĞdžĞĐƵƚĞĚ͘ dŚĞĐŽĚĞŽŶůŝŶĞϮϭǁŝƚŚŝƚƐĚĞƐĐƌŝƉƟŽŶŝƐĂƐĨŽůůŽǁƐ͗ i++; 1 A / 2 A . 9 2 + . /? / @ : . A F A @ 2 A C = - 6 9 @ C 2 1 A > + + , . A , A 9 2 ? = 9 : ; 2 + > / @ A 6 4 2 + : 1 A : ; i ƚŚĞĐŽŶĚŝƟŽŶĂŐĂŝŶ͘ dŚĞůŽŽƉƌĞƉĞĂƚƐƵŶƟů iŝƐĞƋƵĂůƚŽϰ͕ŵĂŬŝŶŐƚŚĞĐŽŶĚŝƟŽŶĨĂůƐĞǁŚŝĐŚĞdžŝƚƐ 2 1 A > + + , D 1 A : + C A ŽŶůŝŶĞϭϴǁŝƚŚŝƚƐĚĞƐĐƌŝƉƟŽŶŝƐĂƐĨŽůůŽǁƐ͗ Debug.Log("Stop. I was looking for " + ponyList[i]); 1 A ? 2 . / @ 0 , > < ? 2 1 A @ 9 F A /? Stop. I was looking for Rainbow Dash D /? , > 9 - A C / @ 2 1 A C ŽŶƐŽůĞ [ 86 ] Ä ¾ Æ Á ä ] 1 A : + C A ŽŶůŝŶĞϭϵǁŝƚŚŝƚƐĚĞƐĐƌŝƉƟŽŶŝƐĂƐĨŽůůŽǁƐ͗ break; breakŝƐĂηŬĞLJǁŽƌĚƚŚĂƚĂůƚĞƌƐĐŽĚĞŇŽǁ͘ ŽĚĞĞdžĞĐƵƟŽŶŝŵŵĞĚŝĂƚĞůLJůĞĂǀĞƐƚŚŝƐ whileůŽŽƉĐŽĚĞďůŽĐŬĂŶĚĐŽŶƟŶƵĞƐƚŽƚŚĞ ĮƌƐƚƐƚĂƚĞŵĞŶƚĨŽůůŽǁŝŶŐƚŚĞĐŽĚĞďůŽĐŬ͘ dŚĞƌĞŝƐŶŽƐƚĂƚĞŵĞŶƚĨŽůůŽǁŝŶŐƚŚĞǁŚŝůĞůŽŽƉ͕ƚŚĞƐĐƌŝƉƚŝƐĮŶŝƐŚĞĚ͘ +DYHDJRKHUR²FKDQJLQJWKHSRQ\QDPHEHLQJVHDUFKHG KŶůŝŶĞϭϲ͕ĐŚĂŶŐĞƚŚĞƉŽŶLJŶĂŵĞďĞŝŶŐƐĞĂƌĐŚĞĚĂŶĚŽďƐĞƌǀĞŚŽǁŝƚĐŚĂŶŐĞƐƚŚĞŶƵŵďĞƌ E , + @ - @ 9 F A ? C /? , > 9 - A C / @ 2 1 A = A E + . A ? 2 + , , / @ 0 D + ŽŶƐŽůĞ Summary dŚĞƌĞĂƌĞƵŶůŝŵŝƚĞĚǁĂLJƐƚŽŵĂŬĞĚĞĐŝƐŝŽŶƐŝŶĐŽĚĞ͕ŚŽǁĞǀĞƌ͕ǁĞĐŽǀĞƌĞĚŵĂŶLJŽĨƚŚĞ ĐŽŵŵŽŶǁĂLJƐ͘dŚĞŝĨƐƚĂƚĞŵĞŶƚŝƐŚŽǁƚŚĞŵĂũŽƌŝƚLJŽĨĚĞĐŝƐŝŽŶƐĂƌĞŵĂĚĞ͕ŝŶĐůƵĚŝŶŐƚŚĞ ŝĨͲĞůƐĞƐƚĂƚĞŵĞŶƚƐ͘dŚĞŶǁĞĐŽǀĞƌĞĚƐŽŵĞŽĨƚŚĞƐŽƵƌĐĞƐƚŚĂƚƌĞƋƵŝƌĞŵĂŬŝŶŐĚĞĐŝƐŝŽŶƐ͕ůŝŬĞ ƵƐĞƌŝŶƉƵƚ͕ĂŶĚƵƐŝŶŐůŽŽƉƐƚŽĞǀĂůƵĂƚĞĚĂƚĂƐƚŽƌĞĚŝŶĂƌƌĂLJƐ͕ůŝƐƚƐĂŶĚĚŝĐƟŽŶĂƌŝĞƐ͘EŽŶĞŽĨ ƚŚŝƐŝƐĐŽŵƉůŝĐĂƚĞĚ͘/ƚΖƐũƵƐƚĂƉƌŽĐĞƐƐŽĨƐŝŵƉůĞ͕ůŽŐŝĐĂůƐƚĞƉƐ͘ EŽǁƚŚĂƚǁĞΖǀĞůĞĂƌŶĞĚĂďŽƵƚƚŚĞĨƵŶĚĂŵĞŶƚĂůƐŽĨƉƌŽŐƌĂŵŵŝŶŐĨŽƌǁƌŝƟŶŐƐĐƌŝƉƚƐ͕ŝƚΖƐƟŵĞ ƚŽĚŝŐŝŶƚŽƚŚĞǁŽƌůĚŽĨŽďũĞĐƚƐ͘^ŝŶĐĞĞǀĞƌLJƚŚŝŶŐŝŶhŶŝƚLJŝƐĂŶŽďũĞĐƚ͕LJŽƵŶĞĞĚƚŽŬŶŽǁŚŽǁ ƚŽĂĐĐĞƐƐƚŚĞŽŵƉŽŶĞŶƚƐŽĨĂŶŽďũĞĐƚ͕ĂŶĚŚŽǁƚŽĐŽŵŵƵŶŝĐĂƟŽŶďĞƚǁĞĞŶŽďũĞĐƚƐ͕ďLJ ƵƐŝŶŐĚŽƚƐLJŶƚĂdž͘zŽƵŚĂǀĞƐĞĞŶƐŽŵĞĚŽƚƐLJŶƚĂdžƵƐĞĚĂůƌĞĂĚLJŝŶƚŚĞĞdžĂŵƉůĞƐǁĞΖǀĞĐŽĚĞĚ͘ /ŶŶĞdžƚĐŚĂƉƚĞƌ͕LJŽƵǁŝůůƐĞĞŚŽǁƚŚŽƐĞĚŽƚƐǁŽƌŬ͘ [ 87 ] 6 8VLQJ'RW6\QWD[IRU2EMHFW Communication ^ĐƌŝƉƚƐĚŽŵĂŶLJƚŚŝŶŐƐďLJĂĐĐĞƐƐŝŶŐƚŚĞĨĞĂƚƵƌĞƐďƵŝůƚŝŶƚŽhŶŝƚLJĂŶĚƚŚŝƌĚͲƉĂƌƚLJ ƉůƵŐŝŶƐ͘dŚĞhŶŝƚLJ^ĐƌŝƉƚŝŶŐZĞĨĞƌĞŶĐĞŝƐŽƵƌůŝŶŬƚŽƚŚĞďƵŝůƚͲŝŶhŶŝƚLJĨĞĂƚƵƌĞƐ͘ dŚĞƚŚŝŶŐŝƐ͕ĞdžĂĐƚůLJŚŽǁĚŽǁĞŝŶǀŽŬĞĂůůŽĨƚŚŽƐĞhŶŝƚLJĨĞĂƚƵƌĞƐ͍ ^ŽĨĂƌĂůůǁĞΖǀĞĐŽǀĞƌĞĚŝƐďĂƐŝĐηƉƌŽŐƌĂŵŵŝŶŐ͘'ƌĂŶƚĞĚ͕ƚŚĞĞdžĂŵƉůĞĐŽĚĞ ǁĞΖǀĞƐĞĞŶŚĂƐŝŶĐůƵĚĞĚƐŽŵĞŽƚ^LJŶƚĂdž͕ƐƵĐŚĂƐĞďƵŐ͘>ŽŐ;ͿƚŽƐĞŶĚŽƵƚƉƵƚ ƚŽhŶŝƚLJΖƐŽŶƐŽůĞ͘dŚŝƐŝƐŽŶĞŽĨƚŚŽƐĞhŶŝƚLJĨĞĂƚƵƌĞƐ͘/ŶƚŚĞůĂƐƚĐŚĂƉƚĞƌ͕ǁĞ ĞǀĞŶƐĂǁƐŽŵĞŵŽƌĞŽƚ^LJŶƚĂdž͕ƉŽŶLJ͘<ĞLJĂŶĚƉŽŶLJ͘sĂůƵĞ͕ǁŚŝĐŚŚĂƐŶŽƚŚŝŶŐ ƚŽĚŽǁŝƚŚhŶŝƚLJ͘dŚĞƐĞĂƌĞũƵƐƚηKKW;KďũĞĐƚKƌŝĞŶƚĞĚWƌŽŐƌĂŵŵŝŶŐͿ ƌĞůĂƚĞĚĨĞĂƚƵƌĞƐ͘ /ŶďŽƚŚĐĂƐĞƐ͕ƚŚĞƌĞΖƐƐŽŵĞƚLJƉĞŽĨĐŽŵŵƵŶŝĐĂƚŝŽŶƚĂŬŝŶŐƉůĂĐĞƚŽĂĐĐĞƐƐ ŵĞƚŚŽĚƐĂŶĚĚĂƚĂƚŽŵĂŬĞƚŚŝŶŐƐŚĂƉƉĞŶ͘dŽƚŚĞďĞŐŝŶŶĞƌ͕ƚŚŽƐĞĚŽƚƐŵĂLJďĞ ŽĚĚůŽŽŬŝŶŐĂŶĚĐŽŶĨƵƐŝŶŐ͕ĂŶĚƚŚĞLJŵĂLJĂƐŬ͕ΗtŚĂƚΖƐƚŚĞĚĞĂůǁŝƚŚĂůůƚŚŽƐĞ ĚĂƌŶĚŽƚƐďĞƚǁĞĞŶǁŽƌĚƐ͍ΗtĞůů͕ŝĨLJŽƵΖǀĞďĞĞŶƵƐŝŶŐƚŚĞ/ŶƚĞƌŶĞƚĂŶĚƉĂŝĚĂŶLJ ĂƚƚĞŶƚŝŽŶĂƚĂůů͕LJŽƵΖǀĞďĞĞŶƵƐŝŶŐƚŚŽƐĞĚŽƚƐ͕ƉƌŽďĂďůLJĨŽƌLJĞĂƌƐ͕ĂŶĚĚŝĚŶΖƚ ƉĂLJŵƵĐŚĂƚƚĞŶƚŝŽŶƚŽƚŚĞŵ͘ tĞƐĞĞŚŽǁƚŽĂĐĐĞƐƐƚŚĞƉŽǁĞƌŽĨŽƚ^LJŶƚĂdžĂƐǁĞĐŽǀĞƌƚŚĞĨŽůůŽǁŝŶŐƐĞĐƟŽŶƐ͗ ¤ + 2 J - @ 2 9 ì = A / @ 0 < ? 2 9 @ 9 C C . A ? ? tŽƌŬŝŶŐǁŝƚŚŽďũĞĐƚƐ ? / @ 0 ¤ + 2 J - @ 2 9 ì / @ 9 ? : . / , 2 ) ĐĐĞƐƐŝŶŐ'ĂŵĞKďũĞĐƚƐƵƐŝŶŐĚƌĂŐͲĂŶĚͲĚƌŽƉǀĞƌƐƵƐǁƌŝƟŶŐĐŽĚĞ ^ŽůĞƚΖƐŐĞƚŽŶǁŝƚŚŝƚ͘͘͘ hƐŝŶŐŽƚ^LJŶƚĂdžĨŽƌKďũĞĐƚŽŵŵƵŶŝĐĂƟŽŶ Using Dot Syntax is like addressing a letter B A . ? A A @ ? + F A 2 1 / @ 0 ůŝŬĞƚŚŝƐ͍ www.unity3d.com dŚĂƚΖƐƌŝŐŚƚ͕ĂǁĞďĂĚĚƌĞƐƐ͘'ĞĞ͕/ǁŽŶĚĞƌǁŚLJŝƚΖƐĐĂůůĞĚĂǁĞď ĂĚĚƌĞƐƐ ͍ 6LPSOLI\LQJWKHGRWVLQ'RW6\QWD[ A . A /? 9 F 9 / > / @ 0 9 C C . A ? ? I & ĮĐƟƟŽƵƐ A . . - + . 2 + @ $ 4 4 F - J 2 . A A 2 ƐƐĞdž͕sd zŽƵΖǀĞƵŶĚĞƌƐƚŽŽĚŚŽǁƚŽƌĞĂĚĂŶĂĚĚƌĞƐƐůŝŬĞƚŚŝƐƐŝŶĐĞLJŽƵǁĞƌĞĂŬŝĚ͘>ĞƚΖƐƚĂŬĞĂůŽŽŬĂƚ ŝƚĂŐĂŝŶƵƐŝŶŐĂĚŝīĞƌĞŶƚĨŽƌŵĂƚ͗ Post Office Syntax Terry Norton Specific 22 myStreet Essex, VT General Dot Syntax Essex, VT .22 myStreet . Terry Norton General Specific + + ; / @ 0 9 2 2 1 9 2 G K Žƚ^LJŶƚĂdžŝƐŶΖƚƐŽĐŽŶĨƵƐŝŶŐ͘/ƚΖƐũƵƐƚĂŶĂĚĚƌĞƐƐŝŶĂĚŝīĞƌĞŶƚĨŽƌŵĂƚ͕ŝŶĂ ǁĂLJƚŽůŽĐĂƚĞƚŚŝŶŐƐ͘,ĞƌĞΖƐĂŶĞdžĂŵƉůĞ͗ŝŵĂŐŝŶĞǁĞŵĞƚŝŶƵƌŽƉĞƐŽŵĞǁŚĞƌĞ͕ĂŶĚ/ĂƐŬ LJŽƵƚŽŐĞƚŵLJƐƵŶŐůĂƐƐĞƐƵƐŝŶŐŽŶůLJƚŚŝƐŝŶĨŽƌŵĂƟŽŶ͗ h^͘sĞƌŵŽŶƚ͘ƐƐĞdž͘ϮϮŵLJ^ƚƌĞĞƚ͘ϮŶĚ&ůŽŽƌ͘ŽĸĐĞ͘ĚĞƐŬ͘ĐĞŶƚĞƌĚƌĂǁĞƌ͘ƐƵŶŐůĂƐƐĞƐ tŽƵůĚLJŽƵŚĂǀĞĂŶLJƉƌŽďůĞŵůŽĐĂƟŶŐƚŚĞŵ͍ [ 90 ] Ä ¾ Æ Á ä g 8VLQJDFFHVVPRGLÀHUVIRUYDULDEOHVDQGPHWKRGV : + < > C E + . A ? A A + @ A = / 0 /? ? < A 2 . - / @ 0 2 + . A 2 . /A B A F - ! ƐƵŶŐůĂƐƐĞƐ͘DLJŚŽƵƐĞŝƐŶΖƚŽƉĞŶƚŽ ƚŚĞƉƵďůŝĐ͖ŝƚΖƐĂƉƌŝǀĂƚĞƌĞƐŝĚĞŶĐĞ͕ƐŽƚŚĞĚŽŽƌŝƐůŽĐŬĞĚ͘dŚŝƐŵĞĂŶƐLJŽƵĚŽŶΖƚŚĂǀĞĂĐĐĞƐƐ 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 D /Ŷη͕ǁŚĞŶǁĞĐƌĞĂƚĞĂŵĞŵďĞƌǀĂƌŝĂďůĞŽƌŵĞƚŚŽĚŝŶĂƐĐƌŝƉƚ͕ŝƚŝƐƉƌŝǀĂƚĞďLJĚĞĨĂƵůƚ͘ tĞĐĂŶĂůƐŽĞdžƉůŝĐŝƚůLJƐƉĞĐŝĨLJƚŚĂƚŝƚΖƐ private D F A 9 @ ? I A . A G & private 9 ? 9 * + F , + @ A @ 2 , . + , A . 2 - ǀĂƌŝĂďůĞǁŝůůŶŽƚƐŚŽǁŝŶƚŚĞ dŚĞǀĂƌŝĂďůĞŽƌŵĞƚŚŽĚǁŝůůŶŽƚďĞĂĐĐĞƐƐŝďůĞĨƌŽŵŽƚŚĞƌƐĐƌŝƉƚƐ A : 9 @ ? , A : /E - 9 B 9 . / 9 = > A + . F A 2 1 + C 2 + = A D public F A 9 @ ? I A . A G & public 9 ? 9 * + F , + @ A @ 2 , . + , A . 2 - ǀĂƌŝĂďůĞǁŝůůƐŚŽǁŝŶƚŚĞ dŚĞǀĂƌŝĂďůĞŽƌŵĞƚŚŽĚǁŝůůďĞĂĐĐĞƐƐŝďůĞĨƌŽŵŽƚŚĞƌƐĐƌŝƉƚƐ + 2 J - @ 2 9 ì /? + . F A 2 1 + C / @ 9 @ ¤ ƚŚĞƐLJƐƚĞŵƵƐĞĚƚŽůŽĐĂƚĞĂŶĚĐŽŵŵƵŶŝĐĂƚĞǁŝƚŚĂǀĂƌŝĂďůĞ ŽďũĞĐƚ͘dŽƵŶĚĞƌƐƚĂŶĚŚŽǁƚŽƵƐĞŽƚ^LJŶƚĂdž͕ǁĞŚĂǀĞƚŽŬŶŽǁƚŚĞƌĞůĂƟŽŶƐŚŝƉďĞƚǁĞĞŶ 9 : > 9 ? ? 9 @ C / 2 ? + = A : 2 ? D ƐĐƌŝƉƚĂůǁĂLJƐŚĂƐĂĐĐĞƐƐƚŽŝƚƐŽǁŶŵĞŵďĞƌǀĂƌŝĂďůĞĂŶĚŵĞƚŚŽĚƐǁŚĞƚŚĞƌ û ƚŚĞLJΖƌĞ private public Working with objects is a class act /ΖŵƚŚƌŽǁŝŶŐƚŚĞǁŽƌĚ ŽďũĞĐƚ ĂƌŽƵŶĚůŝŬĞLJŽƵǁĞƌĞďŽƌŶǁŝƚŚƚŚĞŬŶŽǁůĞĚŐĞŽĨǁŚĂƚĂŶ ŽďũĞĐƚŝƐ͘ĐƚƵĂůůLJLJŽƵĚŽŬŶŽǁǁŚĂƚŝƚŵĞĂŶƐ͘dŚĞĐŽīĞĞĐƵƉLJŽƵŵĂLJŚĂǀĞŝŶLJŽƵƌŚĂŶĚ ŝƐĂŶŽďũĞĐƚ͕ĂƌĞĂůŽŶĞ͘dŚĂƚh&KŇLJŝŶŐĂƌŽƵŶĚĂƚŶŝŐŚƚŝƐĂŶŽďũĞĐƚ͖ĞǀĞŶŝĨLJŽƵĐĂŶΖƚ ŝĚĞŶƟĨLJŝƚ͘/ŶhŶŝƚLJ͕LJŽƵŵĂLJŚĂǀĞĂŇLJŝŶŐƐĂƵĐĞƌŝŶLJŽƵƌ^ĐĞŶĞ͕ďƵƚŝƚΖƐŽďǀŝŽƵƐůLJŶŽƚĂƌĞĂů ŇLJŝŶŐƐĂƵĐĞƌ͕ŝƚΖƐĂǀŝƌƚƵĂůŽŶĞ͘,ŽǁĞǀĞƌ͕ŝŶƚŚĞǀŝƌƚƵĂůǁŽƌůĚŽĨŐĂŵŝŶŐ͕ŵŽƐƚƉĞŽƉůĞǁŽƵůĚ : + @ ? /C A . 2 1 / @ 0 ? 2 1 A - : 9 @ ? A A + @ 2 1 A ? : . A A @ 9 ? + = A : 2 ? D /ĨLJŽƵĐĂŶĞdžƉĂŶĚLJŽƵƌŵŝŶĚũƵƐƚĂůŝƩůĞďŝƚŵŽƌĞ͕ƉĞƌŚĂƉƐLJŽƵĐĂŶĂĐĐĞƉƚƚŚĂƚŶŽƚĂůůŽďũĞĐƚƐ / @ @ / 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 ) [ 91 ] hƐŝŶŐŽƚ^LJŶƚĂdžĨŽƌKďũĞĐƚŽŵŵƵŶŝĐĂƟŽŶ /ŶĂĐŽŵƉƵƚĞƌ͕ĂŶŽďũĞĐƚŝƐũƵƐƚĂƐŵĂůůƐĞĐƟŽŶŽĨLJŽƵƌĐŽŵƉƵƚĞƌΖƐŵĞŵŽƌLJƚŚĂƚĂĐƚƐůŝŬĞĂ ĐŽŶƚĂŝŶĞƌ͘dŚĞĐŽŶƚĂŝŶĞƌĐĂŶŚĂǀĞƐŽŵĞĚĂƚĂƐƚŽƌĞĚŝŶǀĂƌŝĂďůĞƐĂŶĚƐŽŵĞŵĞƚŚŽĚƐƚŽǁŽƌŬ ǁŝƚŚƚŚĞĚĂƚĂ͘ dŚĞďĞƐƚĞdžĂŵƉůĞ/ĐĂŶƐŚŽǁLJŽƵŝƐƚŚĞŽďũĞĐƚLJŽƵΖǀĞďĞĞŶƵƐŝŶŐƐŝŶĐĞLJŽƵƐƚĂƌƚĞĚƚŚŝƐŬ͘ /ŶDŽŶŽĞǀĞůŽƉ͕ǁĞΖǀĞďĞĞŶǁŽƌŬŝŶŐǁŝƚŚƚŚĞƐĐƌŝƉƚĐĂůůĞĚ LearningScript͘/ŶhŶŝƚLJǁĞ ? A 2 1 A 0 A @ A . 9 > 2 A . F < ^ĐƌŝƉƚ ͕ďƵƚŝƚΖƐĂĐƚƵĂůůLJĂĐůĂƐƐ͕ǁŚŝĐŚŵĞĂŶƐŝƚΖƐĂĚĞĮŶŝƟŽŶŽĨĂƚLJƉĞŽĨ ĐŽŶƚĂŝŶĞƌ͘>ŽŽŬĂƚůŝŶĞϰŽĨƚŚĞĮůĞ͗ public class LearningScript : MonoBehaviour ^ĞĞƚŚĂƚƐĞĐŽŶĚǁŽƌĚ͍dŚĂƚŵĞĂŶƐƚŚĂƚ 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 @ Þ ß à G 2 + > C - + < 9 = + < 2 2 1 A F 9 0 /: 2 1 9 2 ! ! á S /ŶƚƌŽĚƵĐŝŶŐƚŚĞƵŝůĚŝŶŐůŽĐŬƐĨŽƌhŶŝƚLJ^ĐƌŝƉƚƐ ŚĂƉƉĞŶƐǁŚĞŶǁĞĂƩĂĐŚƚŚĞƐĐƌŝƉƚ;ĐůĂƐƐͿƚŽĂ'ĂŵĞKďũĞĐƚ͘^ŚĂnjĂŵ͊͊dŚĞƐĐƌŝƉƚďĞĐŽŵĞƐĂ ŽŵƉŽŶĞŶƚŽďũĞĐƚ͕ĂƚLJƉĞŽĨĐŽŶƚĂŝŶĞƌĨŽƌƚŚĞ'ĂŵĞKďũĞĐƚƚŚĂƚǁĞĚĞĮŶĞĚĂƐŚĂǀŝŶŐƐŽŵĞ ǀĂƌŝĂďůĞƐƚŽƐƚŽƌĞĚĂƚĂĂŶĚƐŽŵĞŵĞƚŚŽĚƐƚŽǁŽƌŬƚŚĂƚƚŚĂƚĚĂƚĂ͘ ĞƐŝĚĞƐƚŚĞǀŝƐƵĂůŵĞƐŚŝŶƚŚĞ^ĐĞŶĞ͕ĐĂŶLJŽƵǀŝƐƵĂůŝnjĞŝŶLJŽƵƌŵŝŶĚƚŚĂƚĂ'ĂŵĞKďũĞĐƚŝƐ ũƵƐƚĂďƵŶĐŚŽĨĚŝīĞƌĞŶƚƚLJƉĞƐŽĨŽŵƉŽŶĞŶƚŽďũĞĐƚƐĂƐƐĞŵďůĞĚƚŽŐĞƚŚĞƌƚŽĐŽŶƐƚƌƵĐƚƚŚĂƚ 'ĂŵĞKďũĞĐƚ͍ ĂĐŚŽĨƚŚŽƐĞŝŶĚŝǀŝĚƵĂůŽŵƉŽŶĞŶƚƐƐŚŽǁŶŝŶƚŚĞ ǁŝůůďĞĐŽŵĞĂŶŽďũĞĐƚŝŶŽƵƌ ĐŽŵƉƵƚĞƌΖƐŵĞŵŽƌLJǁŚĞŶǁĞĐůŝĐŬŽŶƚŚĞ WůĂLJ ďƵƩŽŶ͘ J A > A : 2 9 @ - 9 F A # = A : 2 / @ 2 1 A G 2 1 A @ > + + ; 9 2 2 1 A D + . A ì 9 F , > A G ? A > A : 2 % H ^ĐĞŶĞ 2 1 A 9 F A # = A : 2 D 1 A . A 9 . A ? A B A . 9 > * + F , + @ A @ 2 ? + @ 2 1 A DĂŝŶĂŵĞƌĂ % DĂŝŶĂŵĞƌĂ 'ĂŵĞKďũĞĐƚ͘>ŽŽŬĂƚĞĂĐŚŽĨƚŚŽƐĞĚĞĮŶĞĚŽŵƉŽŶĞŶƚƐ͘ǀĞƌLJŽŶĞŽĨƚŚŽƐĞŽŵƉŽŶĞŶƚƐ ƐƚĂƌƚĞĚŽīĂƐĂĐůĂƐƐĮůĞŝŶhŶŝƚLJ͕ĚĞĮŶŝŶŐĂƚLJƉĞŽĨĐŽŶƚĂŝŶĞƌŽĨǀĂƌŝĂďůĞƐĂŶĚŵĞƚŚŽĚƐ͘ tĞĚŽŶΖƚƐĞĞŽƌŵŽĚŝĨLJƚŚŽƐĞhŶŝƚLJĐůĂƐƐĮůĞƐ͕ďƵƚƚŚĞLJΖƌĞŝŶhŶŝƚLJƐŽŵĞǁŚĞƌĞ͘ dŚĞŶĂŵĞŽĨƚŚĞĐůĂƐƐŝƐĂůƐŽŬŶŽǁŶĂƐƚŚĞŽďũĞĐƚƚLJƉĞŽĨƚŚĞŽďũĞĐƚƚŚĂƚǁŝůůďĞ ĐƌĞĂƚĞĚŝŶŵĞŵŽƌLJĨƌŽŵƚŚĂƚĐůĂƐƐ͕ǁŚĞŶƚŚĞ WůĂLJ ďƵƩŽŶŝƐĐůŝĐŬĞĚ͘ O < ? 2 > / ; A 9 @ G + . 9 /? 9 2 - , A + E C 9 2 9 G 2 1 A @ 9 F A + E 9 : > 9 ? ? /? 9 > ? + 9 2 - , A int string + E C 9 2 9 D dŚŝƐŵĞĂŶƐƚŚĂƚǁŚĞŶǁĞĚĞĐůĂƌĞĂǀĂƌŝĂďůĞĂŶĚƐƉĞĐŝĨLJƚŚĞƚLJƉĞŽĨĚĂƚĂŝƚǁŝůůƐƚŽƌĞ͕ : 9 @ < ? 2 9 ? A 9 ? / > - ? 2 + . A 9 . A E A . A @ : A 2 + 9 @ + = A : 2 + E 2 1 A 2 - , A G 9 ? / 2 LearningScript ƐŚŽǁŶŝŶƚŚĞĨŽůůŽǁŝŶŐůŝŶĞŽĨĐŽĚĞ͗ LearningScript myVariable; [ 92 ] Ä ¾ Æ Á ä g ^ƚŽƌŝŶŐĂƌĞĨĞƌĞŶĐĞƚŽĂŶŽďũĞĐƚŝŶĂǀĂƌŝĂďůĞĚŽĞƐŶŽƚŵĞĂŶǁĞĂƌĞƐƚŽƌŝŶŐƚŚĞ ĂĐƚƵĂůŽďũĞĐƚ͘/ƚŵĞĂŶƐǁĞĂƌĞƐƚŽƌŝŶŐƚŚĞůŽĐĂƟŽŶŝŶŵĞŵŽƌLJŽĨƚŚĂƚŽďũĞĐƚ͘/ƚΖƐ ũƵƐƚĂƌĞĨĞƌĞŶĐĞƚŚĂƚƉŽŝŶƚƐƚŽƚŚĞŽďũĞĐƚŝŶŵĞŵŽƌLJƐŽƚŚĂƚƚŚĞĐŽŵƉƵƚĞƌŬŶŽǁƐ ǁŚĞƌĞƚŽĂĐĐĞƐƐƚŚĞŽďũĞĐƚΖƐĚĂƚĂĂŶĚŵĞƚŚŽĚƐ͘dŚŝƐŵĞĂŶƐǁĞĐĂŶŚĂǀĞƐĞǀĞƌĂů ǀĂƌŝĂďůĞƐƐƚŽƌŝŶŐĂƌĞĨĞƌĞŶĐĞƚŽƚŚĞƐĂŵĞŽďũĞĐƚ͕ďƵƚƚŚĞƌĞΖƐƐƟůůŽŶůLJŽŶĞĂĐƚƵĂů + = A : 2 / @ F A F + . - D ÿ û ý ¢ £ V ŝƐũƵƐƚĂĮůĞŽŶLJŽƵƌŚĂƌĚĚƌŝǀĞ͕ĂŶĚƚŚĞƌĞΖƐŽŶůLJĞǀĞƌŽŶĞĮůĞ͘dŚĞĐůĂƐƐ ĮůĞƐŝŵƉůLJĚĞĮŶĞƐĂƚLJƉĞŽĨĐŽŶƚĂŝŶĞƌŽĨǀĂƌŝĂďůĞƐĂŶĚŵĞƚŚŽĚƐƚŚĂƚǁŝůůďĞĐŽŵĞ ĂŽŵƉŽŶĞŶƚŽďũĞĐƚŝŶƚŚĞŵĞŵŽƌLJǁŚĞŶLJŽƵĐůŝĐŬŽŶ WůĂLJ ͘zŽƵĐĂŶĂƩĂĐŚƚŚĞ ƐĐƌŝƉƚƚŽŵĂŶLJ'ĂŵĞKďũĞĐƚƐ͕ďƵƚƚŚĞƌĞΖƐƐƟůůŽŶůLJŽŶĞĮůĞŽŶLJŽƵƌŚĂƌĚĚƌŝǀĞ͘ ƩĂĐŚŝŶŐĂ ^ĐƌŝƉƚ ƚŽĂ'ĂŵĞKďũĞĐƚŝƐůŝŬĞƉůĂĐŝŶŐĂƐƟĐŬLJͲŶŽƚĞŽŶƚŚĞ'ĂŵĞKďũĞĐƚ͘tŚĞŶ ǁĞĐůŝĐŬŽŶƚŚĞ WůĂLJ ďƵƩŽŶ͕hŶŝƚLJůŽŽŬƐĂƚŽƵƌ'ĂŵĞKďũĞĐƚ͕ƐĞĞƐƚŚĞƐƟĐŬLJͲŶŽƚĞǁŚŝĐŚƐĂLJƐ͕ D 9 ; A ? + F A ΗdŚŝƐ'ĂŵĞKďũĞĐƚŝƐƐƵƉƉŽƐĞĚƚŽŚĂǀĞĂŽŵƉŽŶĞŶƚŽĨƚLJƉĞ LearningScript # ƌŽŽŵŝŶƚŚĞĐŽŵƉƵƚĞƌΖƐŵĞŵŽƌLJƚŽŚŽůĚƚŚŝƐŽďũĞĐƚŽĨǀĂƌŝĂďůĞƐĂŶĚŵĞƚŚŽĚƐĂƐĚĞƐĐƌŝďĞĚŝŶ 1 A 2 LearningScriptĐůĂƐƐĮůĞ͘Η 2 + 6 5 5 5 9 F A # = A : 2 ? G 9 @ C : > /: ; + @ /ĨǁĞǁĞƌĞƚŽĂƩĂĐŚ LearningScript % WůĂLJ ͕ƚŚĞƌĞǁŝůů ďĞϭϬϬϬƐĞƉĂƌĂƚĞƐĞĐƟŽŶƐĐƌĞĂƚĞĚŝŶLJŽƵƌĐŽŵƉƵƚĞƌΖƐŵĞŵŽƌLJƚŚĂƚĞĂĐŚƐƚŽƌĞƐĂŶŽďũĞĐƚ E 2 - , A + LearningScript͘ĂĐŚŽŶĞŚĂƐŝƚƐŽǁŶƐĞƚŽĨǀĂƌŝĂďůĞƐĂŶĚŵĞƚŚŽĚƐ͕ĂƐĚĞƐĐƌŝďĞĚ - 2 1 A = scriptĮůĞ͘ĂĐŚŽŶĞŽĨƚŚŽƐĞϭϬϬϬƐĞĐƟŽŶƐŽĨĐŽŵƉƵƚĞƌŵĞŵŽƌLJŝƐĂƐĞƉĂƌĂƚĞ ŽŵƉŽŶĞŶƚŽďũĞĐƚŽĨŝƚƐƌĞƐƉĞĐƟǀĞ'ĂŵĞKďũĞĐƚ͘ h ? ¤ ü £ © þ © £ © ¤ ¥ U ¤ £ û ¤ ú £ ¤ û ¡ ú § ú ÿ ÿ ý ÿ ú § § ¤ ú T ¡ ¢ ü ¤ ü £ ¥ hŶŝƚLJ͖ŝŶŵŽƌĞŐĞŶĞƌĂůηƚĞƌŵƐ͕ĞĂĐŚŽďũĞĐƚƚŚĂƚŐĞƚƐĐƌĞĂƚĞĚĨƌŽŵĂ § ú ÿ ÿ ý ÿ ú § § ¤ ú ü ý ü ÿ £ ú ü ¤ ¥ U ¤ £ V T ¡ ¢ ü ¤ ü £ ¥ U ¤ £ ú ü ú ü ý ü ÿ £ ú ü ¤ ¥ U ¤ £ ú û ¤ £ © ¤ ÿ ú ¡ ¤ £ © ý ü þ Using Dot Syntax in a script 9 : 1 * + F , + @ A @ 2 + = A : 2 . A ? /C A ? / @ : + F , < 2 A . F A F + . - G ? 2 + . / @ 0 C 9 2 9 EŽǁƚŚĂƚLJŽƵŬŶŽǁƚŚĂƚ A ŝŶǀĂƌŝĂďůĞƐ͕ŝƚΖƐƟŵĞƚŽƵƐĞŽƚ^LJŶƚĂdžƚŽĂĐĐĞƐƐƚŚŽƐĞŽŵƉŽŶĞŶƚǀĂƌŝĂďůĞƐĂŶĚŵĞƚŚŽĚƐ͘ Accessing 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 @ - 'ĂŵĞKďũĞĐƚ͘ǀĞŶƚŚŽƵŐŚĂŽŵƉŽŶĞŶƚĂůǁĂLJƐŚĂƐĂĐĐĞƐƐƚŽŝƚƐŽǁŶǀĂƌŝĂďůĞƐĂŶĚŵĞƚŚŽĚƐ͕ ǁĞĐĂŶƐƟůůƵƐĞŽƚ^LJŶƚĂdžŝĨǁĞǁĂŶƚ͘ [ 93 ] hƐŝŶŐŽƚ^LJŶƚĂdžĨŽƌKďũĞĐƚŽŵŵƵŶŝĐĂƟŽŶ /ŶŽƌĚĞƌƚŽŚĂǀĞĂĐĐĞƐƐƚŽĂǀĂƌŝĂďůĞŽƌŵĞƚŚŽĚ͕ǁĞŚĂǀĞƚŽŬŶŽǁŝƚƐůŽĐĂƟŽŶ͘>ĞƚΖƐƐƚĂƌƚďLJ + ; / @ 0 / @ D > + LearningScript ,ĞƌĞΖƐĂŶŽǀĞƌǀŝĞǁŽĨŚŽǁƚŽĂĐĐĞƐƐĂǀĂƌŝĂďůĞŽƌŵĞƚŚŽĚĨƌŽŵǁŝƚŚŝŶƚŚĞĐƵƌƌĞŶƚŽŵƉŽŶĞŶƚ͗ Dot Syntax for the current Component To access the item inbold : 1 variableor method 2 this variableor method 7LPHIRUDFWLRQ²DFFHVVLQJDYDULDEOHLQWKHFXUUHQW&RPSRQHQW 9 . / 9 = > A / @ E . + F / @ ? /C A D >ĞƚΖƐůŽŽŬĂƚĂĐĐĞƐƐŝŶŐĂ B LearningScript LearningScript ó ô + C /E - # LearningScriptĂƐƐŚŽǁŶŝŶƚŚĞĨŽůůŽǁŝŶŐĮŐƵƌĞ͗ [ 94 ] Ä ¾ Æ Á ä g õ ô ^ĂǀĞƚŚĞĮůĞ͘ ö ô @ @ / 2 - G : > /: ; + @ ) ! WůĂLJ͘ What just happened? I A . A 9 . A 2 1 A + < 2 , < 2 ? / @ 2 1 A & ŽŶƐŽůĞ ŶĂŶĂůLJƐŝƐŽĨƚŚĞĐŽĚĞƐŚŽǁŶŝŶƚŚĞƉƌĞǀŝŽƵƐĐŽĚĞƐĐƌĞĞŶƐŚŽƚŝƐĂƐĨŽůůŽǁƐ͗ >ŝŶĞϲ͗ string myString = "Access the variable "; /? 2 1 A myString ǀĂƌŝĂďůĞƚŚĂƚǁŝůůďĞĂĐĐĞƐƐĞĚ EŽƟĐĞƚŚĂƚŝƚΖƐ privateďLJĚĞĨĂƵůƚ͕LJĞƚŝƚĐĂŶƐƟůůďĞĂĐĐĞƐƐĞĚ >ŝŶĞϭϳ͗ Debug.Log(myString + "the normal way."); dŚŝƐŝƐŚŽǁǁĞŚĂǀĞďĞĞŶĂĐĐĞƐƐŝŶŐƚŚĞǀĂůƵĞƐƚŽƌĞĚŝŶĂǀĂƌŝĂďůĞ͕ďLJũƵƐƚƵƐŝŶŐ 2 1 A B 9 . / 9 = > A @ 9 F A 1 A B 9 > < A / @ G string myString Accessing this variable͕ŝƐƐƵďƐƟƚƵƚĞĚ E + . 2 1 A B 9 . / 9 = > A @ 9 F A G myStringŝƐďĞŝŶŐĂĐĐĞƐƐĞĚǁŝƚŚŽƵƚƵƐŝŶŐŽƚ^LJŶƚĂdžŽƌ GetComponent() ďĞĐĂƵƐĞĂƐĐƌŝƉƚĂůǁĂLJƐŚĂƐĂĐĐĞƐƐƚŽŝƚƐŽǁŶǀĂƌŝĂďůĞƐĂŶĚŵĞƚŚŽĚƐ >ŝŶĞϭϴ͗ Debug.Log(this.myString + "using 'this' keyword."); /? = A / @ 0 9 : : A ? ? A C < ? / @ 0 ¤ + 2 J - @ 2 9 ì myString 1 A this ŬĞLJǁŽƌĚƌĞĨĞƌƐƚŽƚŚĞĐƵƌƌĞŶƚŝŶƐƚĂŶĐĞŽĨƚŚĞĐůĂƐƐ͕ 2 1 A : < . . A @ 2 * + F , + @ A @ 2 [ 95 ] hƐŝŶŐŽƚ^LJŶƚĂdžĨŽƌKďũĞĐƚŽŵŵƵŶŝĐĂƟŽŶ >ŝŶĞϭϵ͗ Debug.Log(GetComponent GetComponent."); /? = A / @ 0 9 : : A ? ? A C < ? / @ 0 ¤ + 2 J - @ 2 9 ì 9 0 9 / @ myString F A 2 1 + C /? . A 2 . /A B / @ 0 2 1 A dŚŝƐƟŵĞ͕ƚŚĞŐĞŶĞƌŝĐ GetComponent + F , + @ A @ 2 LearningScript * / @ A 4 4 I K Debug.Log(this); G 2 1 A * + F , + @ A @ 2 /? ? A @ 2 2 + 2 1 A /? 2 1 A ? / @ 0 ) this ŽŶƐŽůĞ ƐŽǁĞĐĂŶƐĞĞƚŚĂƚ this * + F , + @ A @ 2 + = A : 2 < . . A @ 2 : LearningScript / @ A 4 7 I K Debug.Log(GetComponent ? / @ 0 G 2 1 A * + F , + @ A @ 2 /? ? A @ 2 2 + 2 1 A ) GetComponent + F , + @ A @ 2 + = A : 2 ŽŶƐŽůĞ ͕ƐŽǁĞĐĂŶƐĞĞƚŚŝƐĂůƐŽŝƐƚŚĞĐƵƌƌĞŶƚ LearningScript * 1 A 9 . A = + 2 1 . A 2 . /A B / @ 0 thisŬĞLJǁŽƌĚĂŶĚ GetComponent 1 A ? 9 F A * + F , + @ A @ 2 + = A : 2 2 LearningScript tŚŽĂ͊͊tŚĂƚΖƐǁŝƚŚůŝŶĞϭϴ͍ EŽƟĐĞŝƚĞŵϭŝŶƚŚĞŐƌĂƉŚŝĐƵŶĚĞƌƚŚĞƐĞĐƟŽŶ͕ ĐĐĞƐƐŝŶŐĂŽŵƉŽŶĞŶƚΖƐŽǁŶǀĂƌŝĂďůĞƐĂŶĚ Q ß b á ͍dŚŝƐŝƐƚŚĞƵƐƵĂůǁĂLJǁĞǁŝůůĂĐĐĞƐƐǀĂƌŝĂďůĞƐĂŶĚŵĞƚŚŽĚƐŝŶƚŚĞĐƵƌƌĞŶƚƐĐƌŝƉƚ͖ ŶŽŽƚ^LJŶƚĂdžƌĞƋƵŝƌĞĚ͘dŚŝƐŝƐŚŽǁǁĞΖǀĞďĞĞŶĚŽŝŶŐŝƚĨƌŽŵƚŚĞďĞŐŝŶŶŝŶŐŽĨƚŚŝƐŬ͘/ƚΖƐ ŚŽǁǁĞǁŝůůƉƌŽďĂďůLJĐŽŶƟŶƵĞƚŽĂĐĐĞƐƐƚŚĞŵ͘,ŽǁĞǀĞƌ͕ǁĞĚŽŚĂǀĞƚŚĞŽƉƟŽŶŽĨĂĐĐĞƐƐŝŶŐ 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 ì D ƐLJŽƵĐĂŶƐĞĞĨƌŽŵƚŚĞŽƵƚƉƵƚŽĨůŝŶĞƐϭϳĂŶĚϭϴ͕ƚŚĞǀĂůƵĞƐƚŽƌĞĚŝŶ myString /? ƐƵďƐƟƚƵƚĞĚŶŽŵĂƩĞƌŚŽǁǁĞĂĐĐĞƐƐ myString D A 2 1 + C 2 + . A 2 . /A B A 2 1 A ^ŽŝĨǁĞƌĞĂůůLJǁĂŶƚĞĚƚŽ͕ǁĞĐŽƵůĚƵƐĞƚŚĞ GetComponent() F : > 9 ? ? / @ F A F + . - G 2 1 A @ < ? A ¤ + 2 J - @ 2 9 ì 2 + < . . A @ 2 * + F , + @ A @ 2 + = A : 2 + E 2 1 A : LearningScript : : A ? ? 9 myString͘,ŽǁĞǀĞƌ͕ηƉƌŽǀŝĚĞƐĂƐŚŽƌƚĐƵƚƚŽŐĞƚƚŚĞĐƵƌƌĞŶƚŽŵƉŽŶĞŶƚŽďũĞĐƚďLJ ? / @ 0 2 1 A < thisŬĞLJǁŽƌĚ͘ / F , > - /ƚĞŵϮŝŶƚŚĞŐƌĂƉŚŝĐŝƐƚŚĞƐLJŶƚĂdžƵƐĞĚŝŶůŝŶĞϭϴ͘/ŶƚŚŝƐĞdžĂŵƉůĞ͕ƚŚĞŬĞLJǁŽƌĚ this ? A 9 @ ? 2 1 A : < . . A @ 2 / @ ? 2 9 @ : A + = A : 2 + E 2 1 A : > 9 ? ? G 2 1 A : < . . A @ 2 * + F , + @ A @ 2 D F LearningScript tŚLJĚŽ/ĞǀĞŶŵĞŶƟŽŶƵƐŝŶŐ thisĂƚƚŚŝƐƟŵĞ͍>ĂƚĞƌŽŶǁŚĞŶǁĞŐĞƚ ŝŶƚŽƚŚĞ^ƚĂƚĞDĂĐŚŝŶĞ͕ǁĞǁŝůůďĞƵƐŝŶŐ this͘/ǁĂŶƚLJŽƵƚŽďĞĂǁĂƌĞŽĨ ǁŚĂƚ thisŝƐ͕ĂƐƵďƐƟƚƵƚĞĨŽƌƚŚĞĐƵƌƌĞŶƚŝŶƐƚĂŶĐĞŽďũĞĐƚŽĨĂĐůĂƐƐ͘ [ 96 ] i j k l m n o p Accessing another Component on the current GameObject EŽǁǁĞƐƚĂƌƚƚŽũƵƐƚƚŽƵĐŚŽŶƚŚĞƌĞĂůƉŽǁĞƌŽĨŽƚ^LJŶƚĂdž͕ĐŽŵŵƵŶŝĐĂƟŶŐǁŝƚŚŽƚŚĞƌ ŽďũĞĐƚƐƚŽĂĐĐĞƐƐǀĂƌŝĂďůĞĚĂƚĂĂŶĚŵĞƚŚŽĚƐ͘tĞǁŝůůŶŽǁĐŽŵŵƵŶŝĐĂƚĞǁŝƚŚĂŶŽƚŚĞƌ * + F , + @ A @ 2 + @ 2 1 A ? 9 F A 9 F A # = A : 2 G 2 1 A D A F A F = A .G /? " % DĂŝŶĂŵĞƌĂ LearningScript ĂƩĂĐŚĞĚƚŽƚŚĞ DĂŝŶĂŵĞƌĂ ĂůƌĞĂĚLJ͘dŚĞĨŽůůŽǁŝŶŐĚŝĂŐƌĂŵǁŝůůĞdžƉůĂŝŶŚŽǁƚŚŝƐŝƐĚŽŶĞ͗ Dot Syntax for the current GameObject To accessanother item in bold : 3 Component 4 Component variableor method 7LPHIRUDFWLRQ²FRPPXQLFDWLQJZLWKDQRWKHU&RPSRQHQWRQ the Main Camera >ĞƚΖƐĐƌĞĂƚĞĂŶŽƚŚĞƌƐĐƌŝƉƚǁŝƚŚĂǀĂƌŝĂďůĞĂŶĚĂŵĞƚŚŽĚ͕ĂŶĚĂƩĂĐŚŝƚƚŽƚŚĞ DĂŝŶĂŵĞƌĂ G 1 A @ 1 9 B A 2 LearningScriptĐŽŵŵƵŶŝĐĂƚĞǁŝƚŚŝƚ͗ ó ô 9 @ C @ 9 F A / 2 D @ @ / 2 - G : . A 9 2 A 9 @ + 2 1 A . ) ! η^ĐƌŝƉƚ TalkToMe õ ô 9 ; A 9 B 9 . / 9 = > A @ 9 F A C D # public string hereItIs ö ô ? ? / 0 @ ? + F A 2 A ì 2 2 + D ' hereItIs ô . 9 ; A 9 F A 2 1 + C @ 9 F A C D # public MakeMeTalk() ô / + < 2 , < 2 ? + F A 2 A ì 2 2 + 2 1 A D 9 B A & MakeMeTalk() ŽŶƐŽůĞ Y ô + 2 1 A ƩĂĐŚ MakeMeTalk() 2 DĂŝŶĂŵĞƌĂ ͘EŽǁƚŚĞĐŽĚĞƐŚŽƵůĚůŽŽŬƐŽŵĞƚŚŝŶŐ > / ; A 2 1 /? I [ 97 ] hƐŝŶŐŽƚ^LJŶƚĂdžĨŽƌKďũĞĐƚŽŵŵƵŶŝĐĂƟŽŶ ô q + C /E - 2 + . A 2 . /A B A 2 1 A * + F , + @ A @ 2 D # LearningScript TalkToMe r ô + C /E - 2 + . A 2 . /A B A 2 1 A C 9 2 9 / @ # LearningScript hereItIs. s ô + C /E - 2 + : 9 > > 2 1 A # LearningScript MakeMeTalk()ŵĞƚŚŽĚ͘EŽǁƚŚĞĐŽĚĞ ƐŶŝƉƉĞƚƐŚŽƵůĚůŽŽŬĂƐĨŽůůŽǁƐ͗ ó t ô J 9 B A - + < . ? : . / , 2 ? D ó ó ô * > /: ; + @ / @ @ / 2 - D WůĂLJ ) What just happened? 1 A + < 2 , < 2 I ,ĞƌĞΖƐ 2 * + 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 + @ 1 A LearningScript 1 A 2 TalkToMeŽŵƉŽŶĞŶƚ͘>ĞƚΖƐĨŽůůŽǁƚŚĞĐŽĚĞŇŽǁǁŝƚŚƚŚĞƐĞƚǁŽŽŵƉŽŶĞŶƚƐ͘ [ 98 ] i j k l m n o p ŶĂŶĂůLJƐŝƐŽĨƚŚĞĐŽĚĞƐŚŽǁŶŝŶƚŚĞƉƌĞǀŝŽƵƐĐŽĚĞƐĐƌĞĞŶƐŚŽƚŝƐĂƐĨŽůůŽǁƐ͗ @ # LearningScript: >ŝŶĞϲ͗ TalkToMe otherComponent; B 9 . / 9 = > A /? C A : > 9 . A C 2 + ? 2 + . A 9 B 9 > < A + E 2 - , A ' otherComponent TalkToMe ' TalkToMeŽŵƉŽŶĞŶƚŽďũĞĐƚǁŝůůďĞĐƌĞĂƚĞĚĂŶĚƐƚŽƌĞĚŝŶƚŚĞǀĂƌŝĂďůĞ otherComponent / @ A 6 5 I K otherComponent = GetComponent A F A F = A .G 2 1 /? /? / @ 2 1 A " Start()ŵĞƚŚŽĚǁŚŝĐŚhŶŝƚLJĐĂůůƐŽŶůLJŽŶĐĞƚŽ ŝŶŝƟĂůŝnjĞǀĂƌŝĂďůĞƐ͘ F A 2 1 + C /? : 9 > > A C 2 + . A 2 . /A B A 9 1 A 0 A @ A . /: B A . ? / + @ + E 2 1 A GetComponent * + F , + @ A @ 2 + = A : 2 D 1 /? /? / 2 A F 7 + @ 2 1 A , . A B / + < ? 0 . 9 , 1 /: . A E A . A @ : A 2 + 2 1 A TalkToMe ƵŶĚĞƌƚŚĞƐĞĐƟŽŶ͕ ĐĐĞƐƐŝŶŐĂŶŽƚŚĞƌŽŵƉŽŶĞŶƚŽŶƚŚĞĐƵƌƌĞŶƚ'ĂŵĞKďũĞĐƚ D 1 A , 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 = > A otherComponent͘tŚLJ͍^ŽƚŚĂƚĞǀĞƌLJ ƟŵĞǁĞŶĞĞĚƚŽƵƐĞƚŚĞ TalkToMeŽŵƉŽŶĞŶƚǁŝƚŚŽƚ^LJŶƚĂdž͕ǁĞĐĂŶ < ? 2 < ? A 2 1 A . A E A . A @ : A ? 2 + . A C / @ / @ ? 2 A 9 C + E 1 9 B / @ 0 2 + < ? A otherComponent GetComponent >ŝŶĞϭϵ͗ Debug.Log("This is the TalkToMe Component: " + otherComponent); 1 /? > / @ A + E : + C A ? A @ C ? 2 1 A B 9 > < A ? 2 + . A C / @ 2 + 2 1 A @ / 2 - ) otherComponent ŽŶƐŽůĞ + F , + @ A @ 2 + = A : 2 ƐŽǁĞĐĂŶƐĞĞƚŚĞƌĞĨĞƌĞŶĐĞƚŚĂƚΖƐƉŽŝŶƟŶŐƚŽƚŚĞ TalkToMe * / @ A 4 5 I K Debug.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 A + TalkToMeŽŵƉŽŶĞŶƚŽďũĞĐƚ͘dŚŝƐŝƐŝƚĞŵϰŝŶƚŚĞŐƌĂƉŚŝĐƵŶĚĞƌƚŚĞƐĞĐƟŽŶ͕ ĐĐĞƐƐŝŶŐĂŶŽƚŚĞƌŽŵƉŽŶĞŶƚŽŶƚŚĞĐƵƌƌĞŶƚ'ĂŵĞKďũĞĐƚ D 1 A : > 9 ? ? D hereItIsǀĂƌŝĂďůĞŝƐĚĞĐůĂƌĞĚŽŶůŝŶĞϲŽĨƚŚĞ TalkToMe /? ? + 2 1 9 2 / 2 : 9 @ = A 9 : : A ? ? A C E . + F + 2 1 A . ? : . / , 2 ? D EŽƟĐĞƚŚĂƚ hereItIs public /ĨǁĞĚŝĚŶΖƚƵƐĞ otherComponent͕ǁĞǁŽƵůĚŚĂǀĞǁƌŝƩĞŶƚŚĞŽƚ^LJŶƚĂdž ĞdžƉƌĞƐƐŝŽŶůŝŬĞƚŚĞĨŽůůŽǁŝŶŐůŝŶĞŽĨĐŽĚĞ͗ GetComponent A ì 9 F , > A I dŚĞĨŽůůŽǁŝŶŐŝƐĂƐĐƌĞĞŶƐŚŽƚŽĨƚŚĞ ^ĐƌŝƉƟŶŐZĞĨĞƌĞŶĐĞ [ 99 ] hƐŝŶŐŽƚ^LJŶƚĂdžĨŽƌKďũĞĐƚŽŵŵƵŶŝĐĂƟŽŶ ƚƚŚĞƚŝŵĞŽĨƚŚŝƐǁƌŝƚŝŶŐ͕hŶŝƚLJǁĂƐƵƉĚĂƚŝŶŐŝƚƐĚŽĐƵŵĞŶƚĂƚŝŽŶ͘dŚĞƉĂŐĞ ǁĂƐŶŽƚĐŽŵƉůĞƚĞ͘dŚĞĨŽůůŽǁŝŶŐƐĐƌĞĞŶƐŚŽƚŝƐƚŚĞŽůĚƉĂŐĞ͖ŚŽǁĞǀĞƌ͕ƚŚĞ ¤ ý ÿ ÿ £ ý § § ? ú § ý / @ A 4 6 I K otherComponent.MakeMeTalk(); ¤ + 2 J - @ 2 9 ì /? < ? A C 2 + > + : 9 2 A 9 @ C : 9 > > 2 1 A F A 2 1 + C + E 2 1 A MakeMeTalk() TalkToMe * + F , + @ A @ 2 + = A : 2 ŽĚĞŇŽǁŶŽǁũƵŵƉƐŽǀĞƌƚŽƚŚĞ TalkToMeĐůĂƐƐ͘dŚŝƐŝƐĂůƐŽŝƚĞŵϰŝŶƚŚĞŐƌĂƉŚŝĐ ƵŶĚĞƌƚŚĞƐĞĐƟŽŶ͕ ĐĐĞƐƐŝŶŐĂŶŽƚŚĞƌŽŵƉŽŶĞŶƚŽŶƚŚĞĐƵƌƌĞŶƚ'ĂŵĞKďũĞĐƚ D [ 100 ] i j k l m n o p @ I # TalkToMe >ŝŶĞϴ͗ public void MakeMeTalk() 1 A F A 2 1 + C /? ? + 2 1 9 2 / 2 : 9 @ = A : 9 > > A C E . + F + 2 1 A . ? : . / , 2 ? MakeMeTalk() public 2 ? : + C A = > + : ; ? / F , > - ? A @ C ? 9 ? 2 . / @ 0 + E 2 A ì 2 2 + 2 1 A @ / 2 - ! ) ŽŶƐŽůĞ : > 9 ? ? dŚĞĐŽĚĞďůŽĐŬĞŶĚƐĂŶĚĐŽĚĞŇŽǁƌĞƚƵƌŶƐƚŽƚŚĞ LearningScript @ I # LearningScript / @ A 4 4 I K } * + C A ŇŽǁŚĂƐŶŽǁƌĞĂĐŚĞĚƚŚĞĞŶĚŽĨƚŚĞ if ƐƚĂƚĞŵĞŶƚǁŚŝĐŚďĞŐĂŶŽŶůŝŶĞϭϳ͕ A - 9 0 9 / @ ĂŶĚŝƐǁĂŝƟŶŐƚŽĚĞƚĞĐƚŝĨǁĞƉƌĞƐƐƚŚĞ ZĞƚƵƌŶ ; ĞĨŽƌĞLJŽƵƉƌŽĐĞĞĚĨƵƌƚŚĞƌǁŝƚŚƚŚĞŶĞdžƚƐĞĐƟŽŶ͕ƌĞŵŽǀĞƚŚĞ TalkToMe ¡ ¢ ü ¤ ü £ û ¡ £ © ¤ T DĂŝŶĂŵĞƌĂ ͘tĞĂƌĞĚŽŶĞǁŝƚŚƚŚŝƐƐĐƌŝƉƚƐŽƚŚĞƌĞΖƐ ü ÿ ¤ ü ÿ ¤ ý ü © ú ? ý ü þ ú ü ý £ ÿ T ¡ ¢ ü ¤ ü £ ÿ © ú ü þ ý ü þ ú û ü Accessing other GameObjects and their Components zŽƵũƵƐƚůĞĂƌŶĞĚƚŽĂĐĐĞƐƐŽŵƉŽŶĞŶƚƐŽŶƚŚĞƐĂŵĞ'ĂŵĞKďũĞĐƚ͘EŽǁŝƚΖƐƟŵĞƚŽĂĐĐĞƐƐ + 2 1 A . 9 F A + = A : 2 ? G 9 @ C 2 1 A / . * + F , + @ A @ 2 ? < ? / @ 0 ¤ + 2 J - @ 2 9 ì D % Dot Syntax for another GameObject To access the item inbold : 5 GameObject 6 GameObject Component 7 GameObject Component variableor method [ 101 ] hƐŝŶŐŽƚ^LJŶƚĂdžĨŽƌKďũĞĐƚŽŵŵƵŶŝĐĂƟŽŶ 7LPHIRUDFWLRQ²FUHDWLQJWZR*DPH2EMHFWVDQGDQHZVFULSW /ǁĂŶƚLJŽƵƚŽĐƌĞĂƚĞŽŶĞƐĐƌŝƉƚƚŚĂƚǁŝůůďĞĂƩĂĐŚĞĚƚŽƚǁŽ'ĂŵĞKďũĞĐƚƐ͘dŚĞƐĐƌŝƉƚǁŝůůŚĂǀĞ ƚǁŽŵĞƚŚŽĚƐƚŚĂƚǁŝůůĐĂƵƐĞƚŚĞ'ĂŵĞKďũĞĐƚƐƚŽƌŽƚĂƚĞůĞŌĂŶĚƌŝŐŚƚ͘dŚŝƐǁŝůůƐŚŽǁLJŽƵƚŚĂƚ ĨƌŽŵĂƐŝŶŐůĞƐĐƌŝƉƚĮůĞ͕ƚǁŽƐĞƉĂƌĂƚĞŽŵƉŽŶĞŶƚŽďũĞĐƚƐǁŝůůďĞĐƌĞĂƚĞĚŝŶƚŚĞŵĞŵŽƌLJ͘ĂĐŚ ŽŵƉŽŶĞŶƚŽďũĞĐƚŝƐĂƐĞƉĂƌĂƚĞŝŶƐƚĂŶĐĞŽďũĞĐƚǁŝƚŚŶŽĂďƐŽůƵƚĞůLJŬŶŽǁůĞĚŐĞŽĨƚŚĞŽƚŚĞƌ͘ ó ô @ - + < . 9 @ C D ! ^ĐĞŶĞ ͕ĐƌĞĂƚĞƚǁŽ'ĂŵĞKďũĞĐƚƐ͕ Capsule Cube õ ô C C 9 2 + 2 1 A ? + - + < : 9 @ A 9 ? / > - ? A A 2 1 A 9 F A # = A : 2 ? D % ' ŝƌĞĐƟŽŶĂů>ŝŐŚƚ ^ĐĞŶĞ ö ô ? 9 @ A ì 9 F , > A I ,ĞƌĞΖƐŵLJ ^ĐĞŶĞ 9 ô . ƌĞĂƚĞĂŶĞǁη^ĐƌŝƉƚĂŶĚŶĂŵĞŝƚ^ƉŝŶŶĞƌ͘ ô / ŽĚĞƚŚĞƐĐƌŝƉƚĂƐƐŚŽǁŶŝŶƚŚĞĨŽůůŽǁŝŶŐƐĐƌĞĞŶƐŚŽƚ͗ [ 102 ] i j k l m n o p Y ô ? : . / , 2 2 + 2 1 A 9 @ C 2 1 A 9 F A # = A : 2 ? D ƩĂĐŚƚŚĞ Spinner ĂƉƐƵůĞ ƵďĞ % ô q + C /E - # LeaningScriptĂƐƐŚŽǁŶŝŶƚŚĞĨŽůůŽǁŝŶŐƐĐƌĞĞŶƐŚŽƚ͗ r ô 9 B A 2 1 A J ĮůĞ͘ s ô D @ @ / 2 - G : > /: ; + @ ) ! WůĂLJ [ 103 ] hƐŝŶŐŽƚ^LJŶƚĂdžĨŽƌKďũĞĐƚŽŵŵƵŶŝĐĂƟŽŶ What just happened? ,ĞƌĞΖƐƚŚĞŽƵƚƉƵƚƚŽƚŚĞ ŽŶƐŽůĞ I EŽǁƉƌĞƐƐƚŚĞůĞŌĂŶĚƌŝŐŚƚĂƌƌŽǁŬĞLJƐƚŽŵĂŬĞƚŚĞĂƉƐƵůĞƐƉŝŶ͕ĂŶĚƚŚĞƵƉĂŶĚĚŽǁŶ ĂƌƌŽǁŬĞLJƐƚŽŵĂŬĞƚŚĞƵďĞƐƉŝŶ͘ : . / , 2 @ 9 F A C zŽƵĐƌĞĂƚĞĚŽŶĞ ? Spinner͕ƚŚĞŶĂƩĂĐŚĞĚƚŚĞƐĐƌŝƉƚƚŽƚǁŽƐĞƉĂƌĂƚĞ 9 F A # = A : 2 ? D 1 A @ - + < : > /: ; + @ * + F , + @ A @ 2 + = A : 2 ? 9 . A % WůĂLJ ͕ƚǁŽƐĞƉĂƌĂƚĞ Spinner > 9 ? ? /? < ? 2 ĐƌĞĂƚĞĚŝŶƚŚĞĐŽŵƉƵƚĞƌŵĞŵŽƌLJ͘dŚŝƐŝƐĂŶĞdžĂŵƉůĞŽĨŚŽǁƚŚĞ Spinner : ĂďůƵĞƉƌŝŶƚ͕ĂĚĞƐĐƌŝƉƟŽŶ͕ŽĨǁŚĂƚĞĂĐŚŽŵƉŽŶĞŶƚŽďũĞĐƚĐƌĞĂƚĞĚǁŝůůďĞ͘ + 9 : : A ? ? A 9 : 1 * + F , + @ A @ 2 E . + F 2 1 A * + F , + @ A @ 2 G - + < @ A A C Spinner LearningScript ƚŽŬŶŽǁĂďŽƵƚĞĂĐŚ'ĂŵĞKďũĞĐƚƚŚĂƚƚŚĞ SpinnerŽŵƉŽŶĞŶƚŝƐĂƩĂĐŚĞĚƚŽ͘ dŚŝƐĐŽĚĞŝƐũƵƐƚĂƐŝŵƉůĞĚĞŵŽŶƐƚƌĂƟŽŶƚŽƐŚŽǁŚŽǁŽƚ^LJŶƚĂdžǁŽƌŬƐ͘ ¡ ú © ú ? ¤ ¤ ú © T ¡ ¢ ü ¤ ü £ ¤ £ ¤ £ ÿ ¤ û ý ü ¢ £ ^ ü £ © ¤ > ü û ¤ ú § § ý ¤ ŽƚŚĞƌŚĂŶĚ͕ƉĞƌŚĂƉƐLJŽƵŵĂLJǁĂŶƚĂĐůĂƐƐĚĞĚŝĐĂƚĞĚƚŽƉƌŽĐĞƐƐŝŶŐƵƐĞƌ ŝŶƉƵƚ͘dŚĂƚΖƐƚŚĞŶĞĂƚƚŚŝŶŐĂďŽƵƚǁƌŝƟŶŐĐŽĚĞ͕ƚŚĞƌĞĂƌĞĂnjŝůůŝŽŶǁĂLJƐƚŽ ú ¡ ¢ § ý ÿ © ú £ ú ÿ ¨ ŶĂŶĂůLJƐŝƐŽĨƚŚĞĐŽĚĞƐŚŽǁŶŝŶƚŚĞƉƌĞǀŝŽƵƐĐŽĚĞƐĐƌĞĞŶƐŚŽƚŝƐĂƐĨŽůůŽǁƐ͗ @ I # LearningScript >ŝŶĞϲ͗ GameObject capsuleGO; B 9 . / 9 = > A + E 2 - , A /? C A : > 9 . A C ' GameObject / @ 2 1 A dŚĞǀĂůƵĞƚŚŝƐǁŝůůƐƚŽƌĞŝƐĂƌĞĨĞƌĞŶĐĞƚŽƚŚĞ ĂƉƐƵůĞ ^ĐĞŶĞ >ŝŶĞϳ͗ Spinner cubeComp; B 9 . / 9 = > A + E 2 - , A /? C A : > 9 . A C ' Spinner * + F , + @ A @ 2 + = A : 2 : . A 9 2 A C E . + F dŚĞǀĂůƵĞƚŚŝƐǁŝůůƐƚŽƌĞŝƐĂƌĞĨĞƌĞŶĐĞƚŽĂ Spinner : > 9 ? ? 1 A 2 Spinner [ 104 ] i j k l m n o p >ŝŶĞϵ͗ void Start() 1 A Start()ŵĞƚŚŽĚŝƐƵƐĞĚƚŽĂůůŽǁƚŚĞƚǁŽǀĂƌŝĂďůĞƐƚŽďĞŝŶŝƟĂůŝnjĞĚ A F A F = A .G 2 1 /? F A 2 1 + C /? : 9 > > A C + @ > - + @ : A " / @ A 6 6 I K capsuleGO = GameObject.Find("Capsule"); 1 A F A 2 1 + C + E 2 1 A : > 9 ? ? > + : 9 2 A ? 9 9 F A # = A : 2 / @ + < . % Find() GameObject ^ĐĞŶĞ 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 = > A % ĂƉƐƵůĞ capsuleGO 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 + 2 / @ A 6 4 I K Debug.Log(capsuleGO); 9 F A # = A : 2 /? / @ E 9 : 2 . A E A . A @ : A C % dŚŝƐůŝŶĞǁĂƐĂĚĚĞĚũƵƐƚƚŽƐŚŽǁƚŚĂƚƚŚĞ ĂƉƐƵůĞ @ 2 1 A B 9 . / 9 = > A / capsuleGO / @ A 6 7 I K cubeComp = GameObject.Find("Cube").GetComponent dŚŝƐůŝŶĞƐŚŽǁƐŚŽǁƚŽƌĞƚƌŝĞǀĞĂŽŵƉŽŶĞŶƚŽŶĂ'ĂŵĞKďũĞĐƚ 1 /? . A 2 . /A B A C . A E A . A @ : A 2 + 2 1 A * + F , + @ A @ 2 + = A : 2 /? + @ 2 1 A Spinner 9 F A # = A : 2 ƵďĞ % 1 /? /? ŝƚĞŵϲŽŶƚŚĞƉƌĞǀŝŽƵƐŐƌĂƉŚŝĐĂŶĚĂůƐŽŽŶƚŚĞƉƌĞǀŝŽƵƐĐŽĚĞƐĐƌĞĞŶƐŚŽƚ >ŝŶĞϭϰ͗ Debug.Log(cubeComp); * + F , + @ A @ 2 /? , 9 . 2 + E 2 1 A dŚŝƐůŝŶĞǁĂƐĂĚĚĞĚũƵƐƚƚŽƐŚŽǁƚŚĂƚƚŚĞ Spinner ƵďĞ 9 F A # = A : 2 G 9 @ C /? / @ E 9 : 2 . A E A . A @ : A C / @ 2 1 A B 9 . / 9 = > A % cubeComp >ŝŶĞϭϵ͗ if(Input.GetKey(KeyCode.LeftArrow) 1 /? if ƐƚĂƚĞŵĞŶƚĐŚĞĐŬƐƚŽƐĞĞŝĨƚŚĞƵƐĞƌŚĂƐƉƌĞƐƐĞĚƚŚĞůĞŌĂƌƌŽǁŬĞLJ E , . A ? ? A C G K / @ A 4 6 + E 2 1 A : + C A = > + : ; /? A ì A : < 2 A C ! / @ A 4 6 I K capsuleGO.GetComponent dŚŝƐůŝŶĞƐŚŽǁƐƵƐŝŶŐŽƚ^LJŶƚĂdžƚŽůŽĐĂƚĞĂŵĞƚŚŽĚŝŶĂŽŵƉŽŶĞŶƚŽĨ 9 @ + 2 1 A . 9 F A # = A : 2 D % 1 A 9 F A # = A : 2 % CapsuleGOǀĂƌŝĂďůĞƐƵďƐƟƚƵƚĞƐƚŚĞƌĞĨĞƌĞŶĐĞƚŽƚŚĞ ĂƉƐƵůĞ 1 A * + F , + @ A @ 2 + = A : 2 /? > + : 9 2 A C + @ 2 1 A 9 F A # = A : 2 % Spinner ĂƉƐƵůĞ 1 A F A 2 1 + C /? : 9 > > A C / @ 2 1 A * + F , + @ A @ 2 + E 2 1 A SpinLeft() Spinner 9 F A # = A : 2 ĂƉƐƵůĞ % * + F , + @ A @ 2 + = A : 2 ŽĚĞŇŽǁŶŽǁũƵŵƉƐƚŽƚŚĞ Spinner [ 105 ] hƐŝŶŐŽƚ^LJŶƚĂdžĨŽƌKďũĞĐƚŽŵŵƵŶŝĐĂƟŽŶ ^ƉŝŶŶĞƌ;ŽŶƚŚĞĂƉƐƵůĞͿ͗ >ŝŶĞϲ͗ public void SpinLeft() 1 /? /? 2 1 A F A 2 1 + C : 9 > > A C E . + F 2 1 A + = A : 2 SpinLeft() LearningScript >ŝŶĞϴŝŶƚŚĞĐŽĚĞďůŽĐŬŝƐĞdžĞĐƵƚĞĚ >ŝŶĞϴ͗ transform.Rotate(0, 0, 60 * Time.deltaTime); F A 2 1 + C + @ 2 1 A : 9 < ? A ? 1 A Rotate() TransformŽŵƉŽŶĞŶƚŽďũĞĐƚŝƐĐĂůůĞĚǁŚŝĐŚ ƚŚĞĂƉƐƵůĞƚŽƐƉŝŶĂƌŽƵŶĚƚŚĞnjͲĂdžŝƐ /? < ? A C / @ 2 1 A ¤ + 2 J - @ 2 9 ì EŽƟĐĞƚŚŽƵŐŚ͕ƚŚĂƚƚŚĞǀĂƌŝĂďůĞŶĂŵĞĚ transform 2 9 2 A F A @ 2 / @ ? 2 A 9 C + E 2 1 A F A 2 1 + C ? GetComponent @ / 2 - 1 9 ? ? A B A . 9 > = < / > 2 / @ * + F , + @ A @ 2 ? G ? < : 1 9 ? 2 1 A * + F , + @ A @ 2 : > 9 ? ? ) ( Transform : > 9 ? ? / @ 2 1 A / @ C 2 1 A H GameObject ^ĐƌŝƉƟŶŐZĞĨĞƌĞŶĐĞ ĂŶĚŶŽƟĐĞƚŚĂƚŽŶĞŽĨƚŚĞ 9 . / 9 = > A ? /? @ 9 F A C B transform @ ? 2 A 9 C + E 1 9 B / @ 0 2 + < ? A 2 1 A F A 2 1 + C + @ 9 9 F A # = A : 2 G ! % GetComponent() @ / 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 A ) + F , + @ A @ 2 Transform * B 9 . / 9 = > A C A ? : . / = A C / @ 2 1 A dŚĞĨŽůůŽǁŝŶŐƐĐƌĞĞŶƐŚŽƚƐŚŽǁƐƚŚĞ transform ^ĐƌŝƉƟŶŐZĞĨĞƌĞŶĐĞ I 1 A Rotate()ŵĞƚŚŽĚƐŚŽǁƐϯĂƌŐƵŵĞŶƚƐďĞŝŶŐƐĞŶƚƚŽƚŚĞŵĞƚŚŽĚ͘ /ŶƚŚŝƐĞdžĂŵƉůĞ͕ƚŚĞĂƉƐƵůĞŝƐƌŽƚĂƟŶŐϲϬĚĞŐƌĞĞƐƉĞƌƐĞĐŽŶĚŽŶƚŚĞnjͲĂdžŝƐ͘ + = A : 2 D ŽĚĞŇŽǁŶŽǁƌĞƚƵƌŶƐƚŽƚŚĞ LearningScript [ 106 ] i j k l m n o p On LearningScript: >ŝŶĞϮϰ͗ if(Input.GetKey(KeyCode.RightArrow) 1 /? if ƐƚĂƚĞŵĞŶƚĐŚĞĐŬƐŝĨƚŚĞƵƐĞƌŚĂƐƉƌĞƐƐĞĚƚŚĞƌŝŐŚƚĂƌƌŽǁŬĞLJ /ĨƉƌĞƐƐĞĚ͕ůŝŶĞϮϲŽĨƚŚĞĐŽĚĞďůŽĐŬŝƐĞdžĞĐƵƚĞĚ >ŝŶĞϮϲ͗ capsuleGO.GetComponent 1 /? /? 9 > F + ? 2 9 @ A ì 9 : 2 . A , A 9 2 + E > / @ A 4 6 G A ì : A , 2 2 1 A F A 2 1 + C SpinRight() /? = A / @ 0 : 9 > > A C >ŝŶĞϮϵ͗ if(Input.GetKey(KeyCode.UpArrow) 1 /? if ƐƚĂƚĞŵĞŶƚĐŚĞĐŬƐŝĨƚŚĞƵƐĞƌŚĂƐƉƌĞƐƐĞĚƚŚĞƵƉĂƌƌŽǁŬĞLJ E , . A ? ? A C G > / @ A 7 6 + E 2 1 A : + C A = > + : ; /? A ì A : < 2 A C ! / @ A 7 6 I K cubeComp.SpinLeft(); dŚŝƐŝƐĚŝīĞƌĞŶƚƚŚĂŶůŝŶĞƐϮϭĂŶĚϮϲ A E A . = 9 : ; 2 + > / @ A 6 7 D 1 A B 9 . / 9 = > A 9 > . A 9 C - ? 2 + . A ? 2 1 A . A E A . A @ : A 2 + 2 1 A " cubeComp 9 F A # = A : 2 9 @ C 2 1 A * + F , + @ A @ 2 + = A : 2 G 2 1 A . A E + . A O < ? 2 2 1 A B 9 . / 9 = > A ƵďĞ % Spinner @ A A C A C / @ 2 1 A ¤ + 2 J - @ 2 9 ì 2 + : 9 > > 2 1 A F A 2 1 + C + @ 2 1 A cubeComp /? SpinLeft() 9 F A # = A : 2 ƵďĞ % ŽĚĞŇŽǁŝƐƐŝŵŝůĂƌƚŽůŝŶĞϴ͕ĞdžĐĞƉƚƚŚĂƚƚŚĞƵďĞƌŽƚĂƚĞƐŶŽǁ >ŝŶĞϯϰ͗ if(Input.GetKey(KeyCode.DownArrow) 1 /? if ƐƚĂƚĞŵĞŶƚĐŚĞĐŬƐƚŽƐĞĞŝĨƚŚĞƵƐĞƌŚĂƐƉƌĞƐƐĞĚƚŚĞĚŽǁŶĂƌƌŽǁŬĞLJ /ĨƉƌĞƐƐĞĚ͕ůŝŶĞϯϲŽĨƚŚĞĐŽĚĞďůŽĐŬŝƐĞdžĞĐƵƚĞĚ͕ƐƉŝŶŶŝŶŐƚŚĞƵďĞƌŝŐŚƚ +DYHDJRKHUR²FUHDWLQJDQGXVLQJDQHZYDULDEOHQDPHGFDSVXOH&RPS @ ! LearningScript͕ůŝŶĞƐϮϭĂŶĚϯϭƉĞƌĨŽƌŵƚŚĞƐĂŵĞĨƵŶĐƟŽŶĂůŝƚLJŽĨĐĂůůŝŶŐƚŚĞ A 2 1 + C + @ 2 1 A / . SpinLeft() F SpinnerŽŵƉŽŶĞŶƚƐ͘zĞƚƚŚĞĐŽĚĞŽŶĞĂĐŚůŝŶĞŝƐǀĞƌLJ ĚŝīĞƌĞŶƚ͘dŚĞĚŝīĞƌĞŶĐĞŝƐƚŚĂƚ cubeCompĂůƌĞĂĚLJƐƚŽƌĞƐĂƌĞĨĞƌĞŶĐĞƚŽƚŚĞƵďĞΖƐ Spinner * + F , + @ A @ 2 D 1 A . A /? @ + capsuleCompǀĂƌŝĂďůĞƚŽƐƚŽƌĞĂƌĞĨĞƌĞŶĐĞƚŽƚŚĞĂƉƐƵůĞΖƐ + F , + @ A @ 2 D Spinner * dƌLJĐƌĞĂƟŶŐĂ capsuleCompǀĂƌŝĂďůĞĂŶĚƐƚŽƌĞĂƌĞĨĞƌĞŶĐĞƚŽƚŚĞĂƉƐƵůĞΖƐ Spinner ŽŵƉŽŶĞŶƚ͘dŚĞŶĐŚĂŶŐĞůŝŶĞƐϮϭĂŶĚϮϲƚŽƵƐĞ capsuleComp D [ 107 ] hƐŝŶŐŽƚ^LJŶƚĂdžĨŽƌKďũĞĐƚŽŵŵƵŶŝĐĂƟŽŶ Accessing GameObjects using drag-and-drop versus writing code hŶŝƚLJŚĂƐĂƌĂƚŚĞƌŶĞĂƚĨĞĂƚƵƌĞƚŚĂƚĂůůŽǁƐƵƐƚŽĂƐƐŝŐŶ'ĂŵĞKďũĞĐƚƐƚŽǀĂƌŝĂďůĞƐǁŝƚŚŽƵƚ ǁƌŝƟŶŐƚŚĞĐŽĚĞ͘/ƚĚĞĮŶŝƚĞůLJŚĂƐŝƚƐƵƐĞƐ͕ŚŽǁĞǀĞƌ͕ŝĨŝƚΖƐŶŽƚƌĞĂůůLJŶĞĐĞƐƐĂƌLJ͕/ƌĞĐŽŵŵĞŶĚ ĂƐƐŝŐŶŝŶŐ'ĂŵĞKďũĞĐƚƐŝŶĐŽĚĞ͘tŚLJ͍ ^ŝdžŵŽŶƚŚƐĨƌŽŵŶŽǁ͕ǁŚĞŶLJŽƵĂƌĞƚŚĞƐƚƌĂŶŐĞƌůŽŽŬŝŶŐĂƚLJŽƵƌŽǁŶĐŽĚĞ͕ LJŽƵŵĂLJůŽŽŬĂƚŝƚĂŶĚǁŽŶĚĞƌǁŚLJLJŽƵƌĐŽĚĞůŽŽŬƐŝŶĐŽŵƉůĞƚĞ͘/ƚΖƐLJŽƵƌ ŐĂŵĞƚŚŽƵŐŚ͕ƐŽLJŽƵĐĂŶĐƌĞĂƚĞŝƚĂŶLJǁĂLJLJŽƵƉůĞĂƐĞ͘/ΖŵũƵƐƚƐĂLJŝŶŐ͕ĚŽŶΖƚ ŐŽŚŽŐǁŝůĚǁŝƚŚĚƌĂŐͲĂŶĚͲĚƌŽƉĂŶĚƚŚĞŶůĂƚĞƌǁŽŶĚĞƌǁŚĂƚŝƚǁĂƐLJŽƵǁĞƌĞ £ û ý ü þ £ ú ¡ ¢ § ý ÿ © 7LPHIRUDFWLRQ²WU\LQJGUDJDQGGURSWRDVVLJQD*DPH2EMHFW / @ A ? + E : + C A / @ 9 ? ? / 0 @ 2 1 A >ĞƚΖƐĐŚĂŶŐĞĂĨĞǁ > LearningScriptƚŽƐŚŽǁŚŽǁƚŽ ĂƉƐƵůĞ 9 F A # = A : 2 2 + 2 1 A B 9 . / 9 = > A < ? / @ 0 C . 9 0 9 @ C C . + , D ( ( % capsuleGO ó ô N + . . A F + B A / 2 D ŝƚŚĞƌĐŽŵŵĞŶƚŽƵƚůŝŶĞϭϭƵƐŝŶŐϮĨŽƌǁĂƌĚƐůĂƐŚĞƐ; // G õ ô / ; A 2 1 /? I KŶůŝŶĞϲ͕ĂĚĚƚŚĞĂĐĐĞƐƐŵŽĚŝĮĞƌ public > public GameObject capsuleGO; ö ô ^ĂǀĞƚŚĞĮůĞ͘ ô . @ @ / 2 - G ? A > A : 2 2 1 A 9 F A # = A : 2 D ) % ! DĂŝŶĂŵĞƌĂ ô / 2 + 2 1 A D 1 A ¤ . 9 0 2 1 A ĂƉƐƵůĞ ĂƉƐƵůĞ'K ĮĞůĚŝŶƚŚĞ ĨŽůůŽǁŝŶŐƐĐƌĞĞŶƐŚŽƚƐŚŽǁƐŚŽǁƚŚŝƐŝƐĚŽŶĞ͘ Y ô > /: ; + @ D * WůĂLJ [ 108 ] i j k l m n o p What just happened? 1 A B 9 . / 9 = > A D A ĂƉƐƵůĞ 'ĂŵĞKďũĞĐƚŝƐŶŽǁĂƐƐŝŐŶĞĚƚŽƚŚĞ capsuleGO ĚŝĚŶΖƚŚĂǀĞƚŽ ǁƌŝƚĞƚŚĞĐŽĚĞďĞĐĂƵƐĞhŶŝƚLJŚĂƐĚŽŶĞƚŚĞĂƐƐŝŐŶŵĞŶƚŝŶƚĞƌŶĂůůLJĨŽƌƵƐ͘ůƐŽ͕ƚŚŝƐĚŽĞƐŶΖƚ 1 9 @ 0 A : LearningScriptŝŶĂŶLJǁĂLJ͘ 3RSTXL]²XQGHUVWDQGLQJFRPPXQLFDWLRQEHWZHHQREMHFWV Yϭ͘tŚĂƚŝƐŽƚ^LJŶƚĂdž͕ĂŶĚǁŚĂƚĚŽĞƐŝƚĂůůŽǁLJŽƵƚŽĚŽ͍ YϮ͘tŚĞŶĂŶŽďũĞĐƚŝƐĂƐƐŝŐŶĞĚƚŽĂǀĂƌŝĂďůĞ͕ǁŚĂƚŝƐĂĐƚƵĂůůLJƐƚŽƌĞĚŝŶƚŚĞǀĂƌŝĂďůĞ͍ Yϯ͘ƌĞƚŚĞƌĞĂŶLJůŝŵŝƚƐƚŽƵƐŝŶŐŽƚ^LJŶƚĂdžǁŚĞŶƚƌLJŝŶŐƚŽĂĐĐĞƐƐǀĂƌŝĂďůĞƐĂŶĚŵĞƚŚŽĚƐ͍ Yϰ͘tŚĂƚŝƐĂŶŽƚŚĞƌǁĂLJƚŽĂƐƐŝŐŶ'ĂŵĞKďũĞĐƚƐƚŽǀĂƌŝĂďůĞƐďĞƐŝĚĞƐǁƌŝƟŶŐĐŽĚĞ͍ 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 . ! ŽďũĞĐƚƐ͘/ƚΖƐƚŚŝƐĂďŝůŝƚLJƚŽĐŽŵŵƵŶŝĐĂƚĞďĞƚǁĞĞŶŽďũĞĐƚƐƚŚĂƚŵĂŬĞKKWƐŽƉŽǁĞƌĨƵů͘ĂƚĂŝƐ ; 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 ? D ůůƌŝŐŚƚ͕ǁĞΖǀĞĐŽǀĞƌĞĚƚŚĞǀĞƌLJďĂƐŝĐƐŽĨηƐĐƌŝƉƟŶŐĨŽƌhŶŝƚLJ͘ŽŶŐƌĂƚƵůĂƟŽŶƐ͊ /ŶƚŚĞŶĞdžƚĐŚĂƉƚĞƌ͕/ΖŵŐŽŝŶŐƚŽƚĂŬĞLJŽƵƚŚƌŽƵŐŚĂĐŽŵďŝŶĂƟŽŶŽĨhŶŝƚLJĐŽĚŝŶŐĂŶĚŐĞŶĞƌĂů ηĐŽĚŝŶŐƚŽĂĐƚƵĂůůLJĂƉƉůLJLJŽƵƌŶĞǁŬŶŽǁůĞĚŐĞ͘tĞǁŝůůƐƚĂƌƚůŽŽŬŝŶŐĂƚĂ^ƚĂƚĞDĂĐŚŝŶĞƚŽ ǁŽƌŬǁŝƚŚhŶŝƚLJ͘zĞƐ͕ŝƚΖƐŐŽŝŶŐƚŽďĞĂƐŝŵƉůĞƐƚĂƚĞŵĂĐŚŝŶĞƚŽƐŚŽǁƚŚĞĐŽŶĐĞƉƚƐ͘zŽƵΖǀĞ ũƵƐƚďĂƌĞůLJůĞĂƌŶĞĚηƐĐƌŝƉƟŶŐ͕ƐŽ/ΖŵŐŽŝŶŐƚŽĞĂƐĞLJŽƵŝŶƚŽƐŽŵĞŐĂŵĞĐƌĞĂƟŽŶǁŚŝĐŚǁŝůů ŚĞůƉLJŽƵƐĞĞŚŽǁƚŽĂƉƉůLJƚŚĞĐŽŶĐĞƉƚƐƚŚĂƚLJŽƵΖǀĞũƵƐƚůĞĂƌŶĞĚ͘ĞƐŝĚĞƐ͕ďĞƚLJŽƵΖƌĞĚĂƌŶ ƐŝĐŬĂŶĚƟƌĞĚŽĨĐŽŶƐƚĂŶƚůLJŵŽĚŝĨLJŝŶŐ͕ŽƌĐŽŵƉůĞƚĞůLJĐŚĂŶŐŝŶŐ LearningScript D [ 109 ]