[Unity3D][NGUI] ScrollView && Grid by

30
May
0

ใครทีใช้ Unity3D ร่วมกับ NGUI ก็คงจะเคยเจอปัญหาเรื่องของ ScrollView และ Grid กันมาบ้าง วันนี้ผมมาเสนอวิธีแก้ปัญหา ScrollView และ Grid ที่ผมเคยเจอครับ

ปัญหาแรกคือ เมื่อ เราสร้างลูกของ Grid แบบ Run Time แล้วสั่ง Grid.Reposition(); และตามด้วยคำสั่ง ScrollView.ResetPosition(); เราก็จะเห็นว่าลูกของ Grid ที่เราพึ่งสร้างนั้นค่อยๆเลือนไปประจำตำแหน่งของมัน

ปัญหาที่สองคือ ถ้าเราสร้างลูกของ Grid มาจำนวนน้อย หรือมีจำนวนไม่มากพอที่จะทำให้ Grid นั้นล้นออกนอก ScrollView แล้วมันก็จะทำให้ ลูกของ Grid นั้นไปอยู่ตรงกลาง ScrollView ดังรูป
1

ปัญหาที่สามคือ เมื่อเราทำ Application หรือ Game ในหลายๆขนาดหน้าจอ ถ้าเราอยากให้ Grid ของเราอยู่ชิดข้างบนเสมอล่ะ ทำยังไงดี ก็ Grid มันไม่มี Anchor นี่นา

วิธีแก้ก็ทำตามนี้เลยครับ
ถ้าเป็น Grid แบบนี้
4
ให้ Set ค่า ScrollView ตามนี้ครับ
2
และ Set ค่า Grid ตามนี้ ซึ่งเราต้อง Add Component UIWidget ให้ Grid ด้วยมันจะได้มี Anchor ให้เราใช้ไงครับ
3

แต่ถ้าเป็น Grid แบบนี้
5
ก็ให้ Set ScrollView ตามนี้ครับ
6
และ Grid ตามนี้
7

ให้สังเกต ScrollView ตรง Content Origin นะครับ
และให้สังเกต Grid ตรง Pivot, Smooth Tween และ ขนาดของ UIWidget นะครับ

Unity Debugging(2) by

31
Jan
0

เคยไหม เวลาที่อยากให้ Object บางตัว โผล่ออกมา หรือหายไป แต่มันดันไม่เป็นไปอย่างที่เราอยากให้เป็น บางทีมันดันมี Object ที่อยากให้หายไปตอนนี้แต่มันดันโผล่มา หรือไม่ยอมหายไป เอ้า ทีนี้จะทำยังไงล่ะ!! วันนี้เลยจะมาบอกวิธีการที่ใช้หาว่า Object ตัวนั้นๆ มันหายไป หรือโผล่มาตอนไหนบ้าง แล้วถูกสั่งให้หายไปหรือ โผล่มาโดย Code บรรทัดไหนเป็นคนสั่ง

1. ก่อนอื่นเลยให้สร้าง Script แล้วใส่ Method ตามนี้

void OnEnable(){
Debug.LogError("OnEnable");
}
void OnDisable(){
Debug.LogError("OnDisable");
}

2. Add Script ที่เราสร้างใหม่นี้ไปใส่กับ Object ที่ต้องการจะดูว่ามันหายหรือโผล่มาตอนไหน
3. คราวนี้เมื่อ Object ตัวนี้ หายไป หรือโผล่มา ก็จะมี ข้อความ OnEnable หรือ OnDisable พ่นออกมา พร้อมกับ Call Stack ด้วย ทำให้เรารู้ได้ทันทีว่า Object นี้หายไปเพราะอะไร นั่นเองงง

[Unity] วิธีการส่งต่อโปรเจ็คหรือส่วนหนึ่งของโปรเจ็คโดยที่ไม่ติดไฟล์ขยะเหมือนกับการคัดลอก/วาง by

31
Aug
0

หลังจากที่ทาง Mobile Devs เรา ได้เผชิญความยากลำบากในการส่งต่อโปรเจ็ค หรือส่วนใดส่วนหนึ่งของโปรเจ็ค Unity เพราะแต่ก่อนจะใช้การ Copy/Paste ซึ่งโฟลเดอร์ของโปรเจ็คยูนิตี้นั้นมีไฟล์ขยะมากมาย ยิ่งถ้าเป็นโปรเจ็คขนาดใหญ่นี่มีโอกาส Copy/Paste นานหลายนาทีเลยทีเดียว แต่แล้ววันหนึ่ง Mr. Tosawat นามสมมติได้เสนอวิธีการส่งต่อโปรเจ็คด้วยการ Export Package… ซึ่งอาจจะใช้ได้ก็เป็นได้ ผมก็เป็นหนึ่งในผู้ร่วมทดสอบและก็ค้นพบว่า นอกจากวิธีจะกำจัดไฟล์ขยะ ส่งต่อได้ไว แล้วยังมีปัญหาตามมาน้อยที่สุดด้วย (แต่ก็อาจจะยังมีบ้าง) เกริ่นมานาน วิธีก็มีง่ายๆ เท่านี้แหละครับ

สังเกตได้ว่าขนาดจองโปรเจคมันใหญ่ยิ่งนัก

• ขั้นแรกให้เราเลือกที่โฟลเดอร์ที่เราต้องการจะส่งต่อ ถ้าทั้งหมดก็เลือกที่ Assets ได้เลย

• จากนั้นก็ไปที่ Assets -> Export Package…

หรือจะเข้ามาเลือกที่ส่วนนี้ก็ได้ (และสามารถเลือกบางส่วนออกไปได้)

ตั้งชื่อให้เรียบร้อย

จะเห็นได้ว่าขนาดไฟล์นั้นมัน!! เล็กกว่าการคัดลอกโฟลเดอร์หลายเท่าตัว

• จากนั้นก็ให้เราไปที่โปรเจ็คใหม่แล้วจัดการ Import ที่ Assets -> Import Package -> Custom Package…

เลือกทั้งหมด หรือเลือกบางส่วนที่จะนำมาใช้ได้

เท่านี้ข้อมูลทั้งหมดของโปรเจคนั้นก็จะมาอยู่ในโปรเจคใหม่เรียบร้อยแล้วครับผม

มาครบกันทั้งหมู่บ้าน