วิธีง่ายๆในการใส่อีเวนท์ของ NGUI Checkbox ว่าติ้กอยู่หรือไม่ by

30
Sep
0

ก่อนอื่นเรามาดูปุ่ม NGUI Checkbox สองปุ่มที่นำมาใช้ในตัวอย่างกันก่อนครับ

ปุ่มเพศชาย กำหนด Function Name ไว้ชื่อ OnGenderSelectMale

 

ปุ่มเพศหญิง กำหนด Function Name ไว้ชื่อ OnGenderSelectFemale

หลังจากที่เราสร้าง NGUI Checkbox ไปแล้ว ส่วนที่จะกำหนดฟังก์ชั่นที่จะใช้เรียกเมื่อ Check (ติ้ก) มีการเปลี่ยนแปลงคือ Property ที่ชื่อ Function Name ซึ่งโดยปกติแล้วจึงใส่โค้ดให้กับฟังก์ชั่น ดังตัวอย่าง

เหมือนจะถูก แต่ยัง! ยังไม่ถูก

แต่เมื่อรันแล้วปัญหาจะเกิดขึนที่ฟังก์ชั่นนั้นถูกเรียกทุกครั้งที่ถูก Check (ติ้กเลือก) ซึ่งดูเหมือนจะถูก แต่มันดันไปเรียกตอน Uncheck (ติ้กออก) ด้วย ซึ่งทำให้โค้ดนั้นผิดพลาด

 

ทำให้บางคนเลือกที่จะทำ Flag ไว้เพื่อเลือก หรืออะไรก็ตามแต่ ซึ่งยากกว่าแน่ๆ โดยมองข้ามไปว่า จริงๆแล้วชื่อฟังก์ชั่นที่เราใส่ใน Property เจ้า Function Name เนี่ย มันส่ง Boolean ว่า Check อยู่หรือเปล่ามาให้ด้วย!! รู้แค่นี้ทุกอย่างก็ง่ายแล้วใช่ไม๊ล่ะครับ โค้ดที่ถูกแบบง๊ายยย ง่าย จึงออกมาเป็นแบบนี้ครับ

แค่นี้แหละ ง่ายๆ ถ้าไม่ติ้กอยู่ก็ออกจากฟังก์ชั่นไปเลยไป!

ง่ายนิดเดียวแถมประหยัดเวลาได้อีกเยอะ ทำให้มีเวลาเหลือไปทำอย่างอื่นได้ แต่ตอนนี่ จขบ. ขอตัวไปเสียใจกับเจสซิก้าที่ออกจากเกิร์ลส์เจ็นก่อนนะครับบบ โฮฮฮ..

(Unity3d) NGUI 3.6 Anchor กับการทำ UI บนจอหลายขนาด by

31
May
0

การทำเกมบนมือถือ ปัญหาใหญ่ที่สุดปัญหาหนึ่งคือการทำเกมบนหน้าจอหลายขนาด ซึ่งวันนี้เราจะมาดูว่าการทำ UI ให้รองรับหลายหน้าจอนั้นทำอย่างไรกัน เราจะใช้ NGUI 3.6 ซึ่งมีวางขายใน Asset Store ของ Unity มาช่วยทำงานนี้ (หากใครไม่มีเงิน ก็สามารถใช้ NGUI 2.7 หัวข้อ Free Version ได้ แต่จะต้องทำอีกวิธีซึ่งยากกว่าพอสมควร) ในบทความนี้อ้างอิงจาก Example 1 – Anchor ใน NGUI Example ที่มีติดมากับ package อยู่แล้วนะครับ

1

จากรูปด้านบนเปิด Example 1 มาจะเป็นดังภาพ เลือก Top Right แล้วดูที่ Inspetor จะเห็นค่าที่เซ้ตไว้ดังรูปด้านล่าง

2

จะเห็นว่า Target เป็น UI Root หมายถึงใช้หน้าจอมือถือ(กรอบใหญ่สุด)เป็นตัวอ้างอิง และมี Left, Right, Bottom, Top อยู่โดยตรงนี้ โดยอธิบายได้ดังนี้

  • Left เลือกเป็น Target’s Right + (-180) อันนี้แปลว่าให้ขอบซ้ายของปุ่มเริ่มนับจาก Target’s Right หรือก็คือขอบจอมือถือทางขวาถอยมาทางซ้าย 180 pixel
  • Right เลือกเป็น Target’s Right + (0) คือให้ขอบขวาของปุ่มเริ่มที่สุดขอบจอขวาของมือถือพอดี  ทำให้ได้ปุ่มยาว 180 pixel อยู่ทางขวาของจอ
  • Bottom เลือกเป็น Target’s Top + (-70) คือให้ขอบล่างของปุ่มเริ่มที่ขอบจอด้านบนของมือถือลดลงมา 70 pixel
  • Top เลือกเป็น Target’s Top + (0) คือให้ขอบบนของปุ่มเริ่มที่ขอบจอด้านบนของมือถือพอดี คือชิดขอบจอบน ทำให้ได้ปุ่มสูง 70 pixel อยู่ด้านบนของจอมือถือ

3

ถัดมาลองคลิกที่ Label ที่อยู่ด้านใน Top Right อีกที แล้วเลือก Anchors เป็น Unified จะเห็นว่า Target เป็น Top Right หมายความว่าการเซ็ต Left, Right, Bottom, Top ของ Label ตัวนี้จะสามารถทำได้เช่นเดียวกับรูปที่แล้ว แต่ใช้การอ้างอิงกับขอบปุ่มแทนที่จะเป็นขอบจอมือถือ ทำให้สามารถกำหนดให้ตัวหนังสือหด-ขยายตามปุ่มได้โดยง่าย

5

ทีนี้ผมลองแก้ไขปุ่มให้เป็นดังภาพ คือจากจอซ้าย 20 pixel จอขวา 20 pixel และจากตรงกลางอย่างละ 50 pixel ทำให้สุดท้ายผมได้ปุ่มที่มีความยาวยืดตามขนาดหน้าจอ โดยห่างจากขอบ 20 pixel เสมอไม่ว่าจอจะขนาดเท่าใด โดยมีความสูงของปุ่ม 100 pixel ได้ผลเป็นภาพด้านล่าง

4

เป็นอย่างไรบ้างครับ ง่ายใช่ไหมครับ ไม่ต้องเขียน Code สักบรรทัดก็สามารถทำ Responsive Design ได้ในตัว Unity ตั้งแต่แรก โยนงานให้ฝั่ง Designer จัดการได้เลยโดยที่ลดแรงของ Programmer ไปได้มาก :) ขอให้สนุกกับการทำ ui ในมือถือด้วย unity นะครับ