ตัวแปรเป็นสิ่งที่ขาดไม่ได้เลยในการโปรแกรมเกม
นึกดูสิถ้าคุณเล่น flappy bird อยู่แต่กลับไม่มีตัวแปรเก็บคะแนนที่เราอุตส่าบินผ่านท่อเขียวๆพวกนั้นมา
เเล้วเราก็จะเบื่อกับเกมนั้นเพราะไม่มีคะแนนไปอวดเพื่อนและชวนไฝ้ว์ต่อ
ตัวแปรก็เปรียบเสมือนการจำอะไรบางอย่างเอาไว้เป็นการชั่วคราว อาจจะเป็นตอนอยู่ในฉากเกม หรือตอน setting ค่าต่างๆในเมนู เทียบกับคนเราก็คล้ายๆกับคิดเลขเร็วทดไว้ในใจ หรือวาดภาพตามจินตนาการท่เราต้องมีภาพผุดมาในหัวก่อนถึงจะวาดได้
วิธีประกาศตัวแปรค่อนข้างจะซับซ้อนนิดหน่อยเพราะเป็นส่วนที่สำคัญ
การประกาศตัวแปรครั้งนึงจะต้องระบุตามแบบนี้นะ
ประเภทตัวแปร
- ตัวแปรทุกตัวต้องระบุประเภทว่าเอาไว้เก็บอะไร - เลข - ตัวอักษร - คำ - ภาพ ฯลฯ
- ประเภทตัวแปร ควรจะตรงกับ สิ่งที่เก็บไว้ในตัวแปร ถ้าเราจะเก็บค่าทศนิยม ก็ไม่ควรเก็บในตัวแปรจำนวนเต็มเพราะตัวเลขจะเพี้ยนไป
- ตัวแปรสามารถที่จะเป็น script (คลาส) หรือเป็น component ก็ได้ แล้วเราก็เข้าถึงค่าต่างๆใน component ได้ด้วย
- มีประเภทเยอะมวากกก แต่ประเภทก็ค่อนข้างตรงกับชื่อเลยไม่ต้องคิดมากเท่าไหร่
int - (integer) เก็บจำนวนเต็ม
float - เก็บค่าทศนิยม
string - เก็บข้อความหรือประโยค
Vector2 - เก็บพิกัด 2D (x,y)
Vector3 - เก็บพิกัด 3D (x,y,z)
Color - เก็บค่าสี (red,green,blue,alpha)
GameObject - เก็บวัตถุและเข้าถึง transform,collider หรือ rigidbody ได้
ชื่อตัวแปร
- มีกฎการตั้งชื่อคล้ายกับการตั้งชื่อไฟล์สคริปในตอนที่เเล้ว
- ห้ามใช้ คำพวกนี้ เป็นตัวแปรเพราะจะไปซำ้กับคำสั่งพื้นฐาน
- ห้ามขึ้นต้นด้วยตัวเลขหรือเครื่องหมาย + - * /
- ห้ามมีตัวแปรชื่อซำ้กัน
- ห้ามเว้นวรรค
อีกสิ่งนึงที่สำคัญมาก คือควรตั้งชื่อให้รู้ว่าตัวแปรนี้คือเก็บค่าอะไรอย่างชัดเจน เพราะเชื่อผมเถอะเวลาเขียนเกมไปซักพัก จะเริ่มมีตัวแปรที่ใช้งานคล้ายๆกันเเล้วเราจะมึนเองว่าอันไหนคืออะไรกันแน่ อย่าตั้งชื่อที่คลุมเครืออย่าง color พอมาเห็นก็อาจจะสงสััยว่ามันสีของอะไรหรอ ก็ควรระบุให้ชัดไปเลย แล้วยิ่งเวลาที่ทำงานร่วมกับคนอื่นเนี่ย จะทำให้คนอื่นเข้าใจโค้ดเราได้ง่านขึ้นมากครับ
กำหนดค่า
- ให้กำหนดค่าในลักษณะที่ตรงกับประเภทตัวแปร ตามตัวอย่างข้างบนเลยนะครับ
- เราอาจจะยังไม่กำหนดค่าเริ่มต้นของตัวแปรโดยปล่อยว่างส่วนนี้เอาไว้แล้วใส่ค่าทีหลังก็ได้ แต่เมื่อไหร่ที่เราเรียกใช้ตัวแปรที่ยังไม่ได้ใส่ค่าลงไปเกมมันจะ error นะ
- เวลาตัวแปรถูกประกาศ มันจะใช้ได้แค่ในบริเวณปีกกาของมันเอง ถ้าออกนอกปีกกาที่ถูกประกาศจะ error
- ถ้าผมประกาศตัวแปรในปีกกาที่ 1 ผมจะใช้ได้ทั้งในปีกกา 2 และ 3 ด้วย เพราะ 2 และ 3 ก็อยู่ในปีกกา 1
- แต่ถ้าประกาศตัวแปรในปีกกาที่ 2 ก็จะเอาตัวแปรนั้นไปใช้ใน 1 หรือ 3 ไม่ได้
ตัวแปรจะมีขอบเขตอีกระดับนึง คือการเข้าถึงในระดับสคริป(คลาส) ที่สคริปแต่ละตัวจะขอใช้ตัวแปรร่วมด้วย ก็จะมีคำที่ใส่ข้างหน้าเพื่อกำหนด
- private - ไม่ให้สคริปอื่นมาใช้เลย
- public - อณุญาติให้ใช้ได้ เเล้วก็ให้เรากำหนดค่าเริ่มต้นจาก inspector ได้เลย