xna framework กับเต้ย
posted on 17 Dec 2007 16:23 by xnanoob in Tutorialsสวัสดีค่ะ
วันนี้ได้คุยกับเพื่อนคนนึงชื่อน้องเต้ย (แต่ความจริงเค้าไม่ได้ชื่อเต้ยนะ แต่พิมพ์ตกสระอีไป)
แต่ถ้าเรียกชื่อ ที่พิมพ์ถูกแล้ว เดี๋ยวเค้าจะโกรธเอา
เรื่องมีอยู่ว่า น้อยเต้ย (ฝืนใจพิมพ์ให้ผิดนะเนี้ย) อยากหัดทำ XNA กับเค้าบ้าง
ก่อนอื่นให้เต้ยไป install Microsoft Visual C# 2005 Express Edition ก่อนนะ
แล้วค่อยลง XNA เอาเป็น version 2.0 เลยก้อได้
เสร็จแล้วก้อไป เปิด Project ขี้นมาอะนะ
เลือกเป็น Windows Game (2.0) ถ้าเห็นอันนี้ก้อแสดงว่าน่าจะลงไรเสร็จแล้วอะนะ
ก้อเสร็จแล้วก้อเปิดหน้าที่เขียน code ขึ้นมา หลักๆ ของเราจะอยู่ที่ไฟล์ Game1.cs
โดยใน Game1.cs มันก้อจะมีหลาย method อะนะ สังเกตว่า
Class Game1 ของเราจะ Inherit มาจาก Microsoft.Framework.Game
ซึ่งตัวเนี้ยแระ มันจะเป็นคนจัดการให้เรา เรามามั่วดูนะ ว่า Game Component มันเป็นยังไงบ้าง
ภาพ แสดงการทำงานของ XNAFramework
หลักๆ ก้อจะมีอยู่ 5 method อะนะ Initialize LoadContent Draw Update และ UnloadContent
-
Initialize ก้อ initial อะ (เต้ยคงเข้าใจ)
-
LoadContent ก้อ load อะนะ ก้อโหลดกราฟฟิคหรืออะไรก้อตามที่อยู่ใน Content Pipeline (มั่ง)
-
Draw ควมการแสดงผลออกหน้าจะ
-
Update ความคุมค่าต่างๆ ที่จะเปลี่ยนแปลงไป
-
UnloadContent จะทำงานหลังจากโปรแกรมเสร็จสิ้น หรือไม่ใช่แล้วมั่ง
ซึ่งแต่หละ method จะแยกเป็นอิสระกัน
ไม่ได้ยาวหรือรวมกันเป็นพรีด โดยในกรอบสีแดงจะเป็น เหมือน runtime ในโปรแกรมอะ
ในขณะที่ ถ้าไม่ terminate หรือปิดโปรแกรม ก้อจะไม่ออกมา หลังจากนั้นค่อย call Unload
(หรือเปล่า?)
ยกตัวอย่าง สมมติต้องการแสดงค่า 1 ถึง 100 ออกหน้าจอ
int i=0; // ตรงนี้ก้อควรยัดใน Initial
การแสดงผล display i // ตรงนี้ไปไปวางไว้ใน Draw ... แล้วก้อจบแล้วนะ
ส่วน i++ // ซึ่งต้องการเพิ่มค่า i ก้อไปไว้ใน method update
....
บางครั้งใหม่ๆ ก้อจะงงๆ ว่า แล้วใครเป็นคน call หรือเรียกฟังก์ชั่น Draw ใครเป็นคนเรียกฟังก์ชั่น Update
ก้อไม่รู้เหมือนกัน XNAframework เป็นคนเรียกมั่ง
ภาพ แสดง ตัวอย่าง method Draw และ Update
โดยปกติแล้วก้อมั่วกับ 2 method เนี้ยแระในตัวเกมส์อะ ประมาณ 70-80% มั่ง
ถ้าไงเต้ยลองมั่วดูก่อนแล้วกันนะจ๊ะ
จบแระค่ะ
บายค่า เฮือก...
ปล. ถ้าไงวันนี้เอาเว็บ เต้ยแฟนคลับตัวจริงมาให้ดู
ด้านล่างนะ http://www.toeyclub.net








#1 By T!D on 2007-12-17 17:19