วิธีจัดหลายๆ GameObject และ Label ให้ชิดกันตรงกลาง by Ziah
Mar0
โดยปกติแล้วถ้าใช้ Anchor ธรรมดาๆ โดยมีตัวกลางเป็นตัวยึดก็จะพอทำได้ แต่ถ้าไม่มีของอยู่ตรงกลางเป้ะๆ หรือมีหนักไปทางใดทางนึงมากกว่า สิ่งที่จะใช้ได้ดีกว่าคือ Table นั่นเองครับ
ขั้นแรกเราก็สร้าง GameObject ที่มี UITable ก่อนเลย จัด Center ให้มันซะ
ส่วนตัวลูกๆใส้ใน UILabel ทุกอันให้ตั้งเป็น Resize Freely จะได้ขยับขยายได้ และอย่าใส่ Anchor!
เช่นเดียวกันกับ Widget อื่นๆที่อยู่ร่วมกันที่ต้องการจัดกลาง อย่าใส่ Anchor!
สุดท้าย อย่าลืม /*ชื่อ Table*/.Reposition(); ทุกครั้งที่มีการเปลี่ยนใส้ในไม่ว่าจะเปลี่ยนรูป เปลี่ยน Text ใน Label นะครับ
[Unity] วิธีการทำให้ Grid ใน ScrollView มีระยะห่างที่ถูกต้อง by Ziah
Feb0
โดยปกติแล้ว Grid ก็จะมี Cell Width กับ Height ให้เพื่อกำหนดระยะห่างระหว่าง GameObject ด้านในของเรา ซึ่งถ้าเราใช้ร่วมกับ ScrollView ของด้านในจะเลื่อนไปชิดด้านบนสุด เพราะ Grid จะทำการจัดที่ให้ดูจากของที่อยู่ด้านใน
ซึ่งถ้าเราทำการเลื่อน ScrollView ลงเพื่อให้มีพื้นที่ ก็จะพบปัญหาว่าของด้านในของเรานั้นเวลาถูกเลื่อนออกจาก Scroll View จะถูกตัดขาดก่อนที่ควรจะเป็น เพราะเราเลื่อนช่วงการมองเห็นลงมา
ทีนี้ วิธีแก้ไขก็ไม่มีอะไรมาก ให้เราสร้าง UIWidget มาครอบไว้นอก ให้ระยะเต็มกินขอบไปด้วยเลย แล้ว Grid จะเว้นพื้นที่ไว้ให้เองอัตโนมัติดังรูป
เพียงเท่านี้ก็จะได้ Grid ที่เลื่อนได้โดยมีตำแหน่งที่สวยงามแล้วล่ะครับ
วิธีการประหยัดพื้นที่ App โดยการลดขนาดไฟล์เสียง by Ziah
Jan0
โดยปกติแล้วไฟล์เสียงที่เราใส่มาใน Unity ทาง Unity จะเรียกใช้งานเป็น AudioClip ซึ่งจะมีการปรับแต่งหลังๆอยู่สามหัวข้อคือ
• Load Type ที่แบ่งได้เป็น 3 ตัวเลือก (เพิ่มเติมดูได้ที่ Blog ก่อนหน้า Click)
• ถัดมาขอข้ามไปหัวข้อที่ 3 ก่อน คือ Sample Rate Setting ซึ่งสามารถใช้ลดขนาดได้เหมือนกัน เพราะการลด Sample Rate ของเสียงจะทำให้ลดขนาดและคุณภาพเสียงได้ โดยมี 3 ตัวเลือกคือ
- Preserve Sample Rate คือใช้ Sample Rate จากเสียงโดยตรง
- Optimize Sample Rate ให้ตัว Unity คำนวนหา Sample Rate ที่รองรับความถี่สูงสุดของเสียงนี้ให้เองอัตโนมัคิ
- Override Sample Rate เลือก Sample Rate เองเลย
ซึ่งวิธีนี้สามารถเลือกลด Sample Rate เองเลยก็ได้ หรือจะทำเองจากโปรแกรมตัดต่อเสียงอื่นจากภายนอกก็ได้ซึ่งเสียงทั่วๆไปแล้ว Sample Rate จะอยู่ราวๆ 44.1k – 48k ซึ่งถ้าอยากให้ไฟล์ขนาดลดลง เราสามารถลดเหลือ 22.05k ได้อยู่ แต่คุณภาพจะแย่ลงไปเยอะมากๆเทียบกับขนาดไฟล์ที่ลดลง
• มาข้อที่ 2 กัน ซึ่งจะเป็นวิธีที่แนะนำ คือการเลือก Compression Format ซึ่ง Default ของ Unity จะเลือกให้เป็น PCM ซึ่งจะลดขนาดได้ไม่มาก ทีนี้ตัวเลือกจะมีทั้งหมด 4 แบบดังนี้
- PCM เป็นตัวที่บีบอัดน้อยที่สุดจึงให้เสียงที่คุณภาพดีที่สุด ไม่ควรใช้กับเสียงขนาดใหญ่ ใช้ CPU ไม่มาก
- ADPCM ขนาดเล็กกว่า PCM 3.5 เท่าแต่มี Noise บ้างเล็กน้อย เหมาะกับการใช้กับเสียงที่ต้องเล่นซ้ำๆ ใช้ CPU น้อยกว่า Vorbis/MP3
- Vorbis/MP3 เป็นตัวที่บีบอัดได้ดีมากๆ และมี Slide Quality ให้เลือกระดับคุณภาพ (1-100) จากประสบการณ์จริง Quality 100 ฟังแล้วแยกแทบไม่ออกเลย เป็นตัวเลือกกลางๆที่ดีมาก
- HEVAG คล้ายๆ ADPCM เป็นวิธีพื้นฐานของ PS Vita
ซึ่งจากการที่ใช้มา Vorbis/MP3 เป็นตัวเลือกที่ดีมากจริงๆ เพราะเทียบขนาดต่อคุณภาพแล้ว ลดขนาดได้เยอะมากโดยที่คุณภาพตกไปไม่เยอะเท่าไร ที่เหลือก็อยู่ที่เราจะเลือกปรับ Quality ซึ่งจากลองที่ฟังมาเองนั้น BGM 1 เพลงสรุปคร่าวๆได้ว่า
- Quality 25 – ฟังแล้วแทบแยกไม่ออกจากเสียงปกติเลย ขนาดเล็กลงเหลือ 21% จากขนาดเต็ม
- Quality 20 – ฟังแล้วแยกออกเล็กน้อยว่าไม่ได้คุณภาพดีเท่าเสียงปกติ ขนาดเล็กลงเหลือ 16% จากขนาดเต็ม
- Quality 1 – ฟังแล้วแยกออกชัดเจนอยู่แต่ไม่ได้ถึงกับแย่มาก ขนาดเล็กลงเหลือ 13%
ดังนั้นจากการที่ทดสอบเอง จึงยึดราวๆ Quality 20 เป็นหลัง เพราะฟังแล้วแยกออกได้เพียงเล็กน้อยว่าเสียคุณภาพไปแต่ขนาดที่ลดลงนั้นยังนับว่าคุ้มมากๆ ส่วนต่ำกว่า 20 นั้นน่าจะไม่คุ้มละเพราะจากที่ทดสอบแล้วลด Quality เหลือ 1 ยังลดจาก Quality 20 แค่ 3% เท่านั้น
ที่เหลือก็อยู่ที่คุณภาพเสียงกับการลองฟังดูแล้วล่ะครับว่า App ของคุณเหมาะกับ Quality เท่าไหร่
[Unity] การเลือก LoadType ของ AudioClip ให้เหมาะกับ App ของเรา by Ziah
Jan1
โดยปกติแล้วไฟล์เสียงที่เราใส่มาใน Unity ทาง Unity จะเรียกใช้งานเป็น AudioClip ซึ่งจะมีการปรับแต่ง Load Type หรือรูปแบบในการโหลดข้อมูลเสียงไว้ 3 แบบ คือ
- Decompress On Load
จะทำการแกะการบีบอัดในตอนที่ทำการโหลดเสร็จ หรือก็คือการแกะการบีบอัดแล้วเก็บไว้ใน Memory เลย ข้อดีคือใช้ CPU ไม่มากเพราะประมวลผลตอนโหลดก่อนเล่นเลย ข้อเสียคือจะใช้พื้นที่ใน Memory เยอะ จึงควรใช้กับเสียงที่ไม่ยาวมากนัก
สรุปใช้กับเสียงที่เล่นซ้ำบ่อยๆ และเป็นช่วงที่ Memory เหลือค่อนข้างเยอะ ไฟล์เสียงไม่ใหญ่
- Compressed In Memory
จะทำการบีบอัดไว้ใน Memory แล้วทำการแกะการบีบอัดในขณะที่เล่นจริง ข้อดีคือใช้พื้นที่ใน Memory น้อยกว่าเพราะเก็บไว้ใน Memory แบบบีบอัด ข้อเสียงคือใช้ CPU บ่อยครั้งตามจำนวนที่เล่นเพราะต้องแกการบีบอัดทุกครั้ง
สรุป ใช้ในจังหวะที่เล่นเสียงเพลงที่มีขนาดใหญ่ เล่นซ้ำไม่บ่อย หรือช่วงที่มี Memory เหลือไม่มาก
- Streaming
จะเป็นการเล่นเสียงแบบตามข้อมูลเสียงจริงๆ ณ เวลานั้นเลย ข้อดีคือแทบจะไม่กิน Memory เลยเพราะเก็บแค่ Buffer ในการเล่นเสียงแต่ละช่วง ข้อเสียคือใช้ CPU ตลอดเวลาในการเล่นเสียง
สรุป ใช้กับเสียงที่มีขนาดใหญ่มาก และควรเป็นช่วงที่มีระบบอื่นๆกิน Process CPU ไม่มากเท่าไร
เขียนโค้ดในโปรเจกท์ Unity ด้วยโปรแกรม Visual Studio by Ziah
Nov0
โดยปกติแล้วถ้าเราลง Unity แล้วเราจะมี Editor ที่แถมมาด้วยคือ MonoDevelop ซึ่งสามารถใช้แก้ไขโค็ดตามปกติได้ แต่ด้วยที่มันแถมมาให้ฟรีอาจจะทำอะไรได้ไม่หลากหลายนัก(เช่น Split Window) ทีนี้ในช่วงหลังทาง Visual Studio ก็ได้มีการเปิดให้ Download ฟรีเช่นเดียวกันกับ Unity และทาง Visual Studio ก็ได้ทำ Tools ที่สามารถทำให้ทั้งสองโปรแกรมเชื่อมกันได้ และยังอัพเดทอยู่ตลอด ทำให้เราสามารถใช้ทั้งคู่ได้ร่วมกันโดยสมบูรณ์ โดยขั้นตอนการติดตั้งก็มีดังนี้
- Download และ ติดตั้ง สิ่งที่ต้องใช้ (เพื่อความถูกต้อง ติดตั้งตามลำดับด้านล่าง)
จากนั้นเราก็เข้าไปทำการเปลี่ยนตัว Editor หลักของเราโดย เปิด Unity ขึ้นมาแล้วไปที่เมนู Edit -> Preferences…
จากนั้น ไปที่แท็บ External Tools หัวข้อ External Script Editor เลือกเป็น Visual Studio 2015
เท่านี้เราก็จะใช้ Visual Studio เป็น Editor หลักของเราแล้วล่ะครับ
*เพิ่มเติม สำหรับ Unity รุ่นเก่าหรือ Visual Studio รุ่นเก่า เราต้องทำการ Import Package ด้วย (เพราะยังไม่สนับสนุนเท่าปัจจุบัน) โดยไปที่เมนู Assets -> Import Package -> Visual Studio 2015 Tools
จากนั้นก็เข้าที่เมนู Visual Studio Tools -> Open in Visual Studio เท่านี้ครับ
cr. https://www.visualstudio.com/en-us/features/unitytools-vs.aspx