[Unity3D][NGUI] ScrollView && Grid by tosawat
May0
ใครทีใช้ Unity3D ร่วมกับ NGUI ก็คงจะเคยเจอปัญหาเรื่องของ ScrollView และ Grid กันมาบ้าง วันนี้ผมมาเสนอวิธีแก้ปัญหา ScrollView และ Grid ที่ผมเคยเจอครับ
ปัญหาแรกคือ เมื่อ เราสร้างลูกของ Grid แบบ Run Time แล้วสั่ง Grid.Reposition(); และตามด้วยคำสั่ง ScrollView.ResetPosition(); เราก็จะเห็นว่าลูกของ Grid ที่เราพึ่งสร้างนั้นค่อยๆเลือนไปประจำตำแหน่งของมัน
ปัญหาที่สองคือ ถ้าเราสร้างลูกของ Grid มาจำนวนน้อย หรือมีจำนวนไม่มากพอที่จะทำให้ Grid นั้นล้นออกนอก ScrollView แล้วมันก็จะทำให้ ลูกของ Grid นั้นไปอยู่ตรงกลาง ScrollView ดังรูป
ปัญหาที่สามคือ เมื่อเราทำ Application หรือ Game ในหลายๆขนาดหน้าจอ ถ้าเราอยากให้ Grid ของเราอยู่ชิดข้างบนเสมอล่ะ ทำยังไงดี ก็ Grid มันไม่มี Anchor นี่นา
วิธีแก้ก็ทำตามนี้เลยครับ
ถ้าเป็น Grid แบบนี้
ให้ Set ค่า ScrollView ตามนี้ครับ
และ Set ค่า Grid ตามนี้ ซึ่งเราต้อง Add Component UIWidget ให้ Grid ด้วยมันจะได้มี Anchor ให้เราใช้ไงครับ
แต่ถ้าเป็น Grid แบบนี้
ก็ให้ Set ScrollView ตามนี้ครับ
และ Grid ตามนี้
ให้สังเกต ScrollView ตรง Content Origin นะครับ
และให้สังเกต Grid ตรง Pivot, Smooth Tween และ ขนาดของ UIWidget นะครับ
Unity Debugging(2) by tosawat
Jan0
เคยไหม เวลาที่อยากให้ 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 Ziah
Aug0
หลังจากที่ทาง Mobile Devs เรา ได้เผชิญความยากลำบากในการส่งต่อโปรเจ็ค หรือส่วนใดส่วนหนึ่งของโปรเจ็ค Unity เพราะแต่ก่อนจะใช้การ Copy/Paste ซึ่งโฟลเดอร์ของโปรเจ็คยูนิตี้นั้นมีไฟล์ขยะมากมาย ยิ่งถ้าเป็นโปรเจ็คขนาดใหญ่นี่มีโอกาส Copy/Paste นานหลายนาทีเลยทีเดียว แต่แล้ววันหนึ่ง Mr. Tosawat นามสมมติได้เสนอวิธีการส่งต่อโปรเจ็คด้วยการ Export Package… ซึ่งอาจจะใช้ได้ก็เป็นได้ ผมก็เป็นหนึ่งในผู้ร่วมทดสอบและก็ค้นพบว่า นอกจากวิธีจะกำจัดไฟล์ขยะ ส่งต่อได้ไว แล้วยังมีปัญหาตามมาน้อยที่สุดด้วย (แต่ก็อาจจะยังมีบ้าง) เกริ่นมานาน วิธีก็มีง่ายๆ เท่านี้แหละครับ
สังเกตได้ว่าขนาดจองโปรเจคมันใหญ่ยิ่งนัก
• ขั้นแรกให้เราเลือกที่โฟลเดอร์ที่เราต้องการจะส่งต่อ ถ้าทั้งหมดก็เลือกที่ Assets ได้เลย
• จากนั้นก็ไปที่ Assets -> Export Package…

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

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

จะเห็นได้ว่าขนาดไฟล์นั้นมัน!! เล็กกว่าการคัดลอกโฟลเดอร์หลายเท่าตัว
• จากนั้นก็ให้เราไปที่โปรเจ็คใหม่แล้วจัดการ Import ที่ Assets -> Import Package -> Custom Package…
เท่านี้ข้อมูลทั้งหมดของโปรเจคนั้นก็จะมาอยู่ในโปรเจคใหม่เรียบร้อยแล้วครับผม

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