Unity Profiler by

31
Aug
0

เคยหรือไม่ ทำเกมแล้วกระตุก เคยหรือไม่ ทำเกมแล้ว memory เกินจนภาพกระพริบ หรือกลายเป็นสีดำ เคยหรือไม่ว่าไม่รู้ว่าอะไรกิน Memory มากที่สุด! วันนี้เราขอนำเสนอ Profiler พระเอกของเรา!!

เนื่องจาก Unity 5 เป็นต้นไปสามารถใช้งาน Feature ต่างๆ ได้ฟรีแบบเต็มที่ แน่นอนว่ารวมไปถึง Profiler นี้ เรามาลองดูกันดีกว่า

profiler4

ภาพที่ 1

profiler1

ภาพที่ 2

 

  1. ขั้นแรกเราต้องเลือก Build Setting เป็น Development Build และ Auto Connect Profiler ก่อน Build APK หรือ Build เป็น XCode ตามรูปที่ 1
  2. กด CTRL + 7 หรือ Command + 7 เพื่อเปิดหน้าต่าง Profiler
  3. กดที่ Active Profiler ตามรูปที่ 2 เพื่อเลือกว่าเราต้องการจะดูข้อมูลการทดสอบที่ใด ถ้าดูที่ Editor เลยก็เลือก Editor ถ้าดูที่ Android ก็ต้องต่อ Wifi เดียวกันระหว่าง PC และ android เครื่องนั้นแล้วจะมีชื่อมือถือเครื่องนั้นมาให้เลือกตามรูปที่ 2 และสุดท้ายถ้าเป็น ios ก็ต้องเสียบ USB ครับ
  4. เมื่อเลือก Device ที่ต้องการแล้ว หากถูกต้องจะปรากฏกราฟวิ่งตลอดเวลา โดยมีหลากหลายอย่างให้เลือกดู ที่ดูบ่อยๆ ก็คงหนีไม่่พ้น CPU และ Memory ลองคลิกที่ Memory กันก่อน

profiler2

รูปที่ 3

profiler3

รูปที่ 4

  1. จากรูปที่ 3 จะเริ่มที่ simple ซึ่งเป็นภาพรวมของ memory ที่ใช้ ซึ่งเราสามารถคลิกเปลี่ยนเป็น Detailed แล้วจะมีคำว่า “Take Sample: xxx” อยู่ข้างๆ ตามรูปที่ 4 ให้กดและรอสัก 2-3 นาที (หากเปิด Profiler ก่อนเปิดโปรแกรมบนมือถืออาจเร็วกว่านั้น)
  2. เมื่อมีข้อมูลปรากฏ เราจะสามารถรู้ได้ทันทีว่า ณ เวลาที่เรากด Take Sample  อะไรที่กิน Memory มากที่สุด ซึ่งสิ่งที่กินมากที่สุดมักจะหนีไม่พ้น Texture 2D รองลงมาก็คือ Mesh หากเป็นเกม 3D และสุดท้ายคือ ManagedHeap หรือก็คือ Mono Memory ซึ่งจะเพิ่มอย่างเดียวไม่มีลด ก็ต้องคอยระวัง เคลียร์ค่า Texture 2D หรือ Mesh ไม่ให้ค้างใน Memory ตลอดเวลา ซึ่งหนึ่งในวิธีที่ง่ายที่สุดก็คือการ Load Scene ใหม่นั่นเอง
  3. หากต้องการดู CPU ก็คอยสังเกตว่ามีอะไรที่กราฟพุ่งสูงผิดปกติไหม สูงจนได้ fps ต่ำเกินไป และมี Draw Calls มากเกินไปหรือไม่

ขอให้โชคดีกับการทำเกมครับ :)

 

[Unity] ว่าด้วยเรื่อง Audio Compression Format หรือวิธีบีบอัด Audio ให้ไม่กิน Memory ขณะรัน by

30
Apr
0

ปกติแล้วเวลาเราใส่ Audio ต่างๆลงในโปรเจ็คแล้วสั่งเล่น ขณะรันจะพบว่าตัว Audio นั้นกิน Memory มากเกินควร ซึ่งทั้งๆที่ Source Audio ของเรานำเข้ามาเป็น MP3 ขนาดไฟล์ไม่ใหญ่แท้ๆ แต่พอนำเข้ามากลับมีกิน Memory ไปเยอะมากขณะรัน ซึ่งถ้าเรามาย้อนดู Inspect ที่ตัวไฟล์ตั้งแต่แรกนั้นก็จะพบว่า Audio ของเรานั้นมีขนาดมากกว่าตัวไฟล์จริงๆ ซึ่งเกิดจากเจ้า Unity ไม่ว่าจะนำ Audio ใดๆก็ตามเข้ามาจะพยายามแกะให้เป็น Audio ที่ Decompress (ไม่บีบอัดเลย) ขณะรัน ซึ่งก็เหมือนกับเราเอา WAV ไฟล์มาใส่ตรงๆนั่นแหละครับ พอ Decompress ไฟล์ก็จะบานออกทำให้กิน Memory มากขึ้นนั่นเอง เราจึงต้องทำการปรับ Setting ใน Inspect ให้เรียบร้อยก่อนการรันนั่นเองครับ

จากรูปด้านบน ที่ใต้สุดของรูปจะเห็นได้ว่า ขนาดของ Audio ตัวนี้กลายเป็น 10.3 MB ซึ่งขนาดจริงมีเพียง 2.7 MB ซึ่งสิ่งที่เราต้องเช็คคือ Load Type และ Compression Format

ให้เราทำการเปลี่ยน Load Type เป็น Compressed In Memory ซึ่งจะทำงานตามชื่อมันเลยคือจะยัง Compressed (บีบอัด) อยู่เหมือนเดิมเวลาเก็บลง Memory แต่ ถ้าถามว่าอ่าวแล้วไม่มีข้อเสียเลยหรอ มีครับ การที่มันบีบอัดอยู่ใน Memory ก็แปลว่าการรันของมันจะต้องทำการแกะมาอ่านในทุกๆ Sample เสียงแทน ซึ่งจะใช้งาน Process มากขึ้น แต่ถ้าเพื่อแลกกับการทำให้ Memory ล้นจนเกมพัง ก็ยังถือว่าคุ้มครับ

ส่วน Compression Format มัน Default ไว้ที่ Vorbis อยู่แล้วให้ทิ้งไว้แบบนั้นครับ Format อื่นๆ แทบจะไม่ได้ลดขนาดลงเท่าไรเลยครับ และ Quality แนะนำว่าเต็มไว้ดีแล้วครับ ลดลงจากนี้จะทำให้เริ่มฟังออกแล้วว่าคุณภาพเสียงตกลง

เมื่อปรับเรียบร้อย แถ่นแท้นนน 1.8 MB เองครับ

 เราชนะรอบ 4 | ยืมเงิน 3000 ด่วน | แอพกู้เงิน | แอพเงินด่วน | สินเชื่อออนไลน์อนุมัติทันที | Site Map | กู้เงินก้อน | กระเป๋าตัง | thisshop และ ยืมเงินฉุกเฉิน 5000 ด่วน