เทคนิคเล็กๆของถังสี by

31
Dec
0

เริ่มต้นด้วยการเพ้นแบบแยกเลเยอร์
01

จากนั้นตั้งค่าถังสีตามรูปข้างล่างและเลือกเลเยอร์บนสุดแล้วเทสีลงบนพื้นที่ขาว
02_1
02

จะเห็นได้ว่าสีทับเลเยอร์ล่างทั้งหมด

—————————————————-

ลองตั้งค่าถังสีตามภาพแล้วทดลงเทลงบนพื้นที่ขาวอีกครั้ง

03_1

03

จะเห็นว่า พื้นที่ขาวทั้งหมดถูกเททับ แต่สีจะไม่ทับภาพ

—————————————————

จากนั้นลองตั้งค่าเลถังสี และตั้งค่าเลเยอร์ตามภาพแล้วทดลองเทสีบนพื้นที่สีขาวดู

04_1

05

 04 

จะเห็นได้ว่า มีเฉพาะเลเยอร์ที่เราเลือกเท่านั้นที่เปลี่ยนสี
แม้เราจะคลิกถังสีลงบนพื้นที่ที่เราไม่ได้วาดอะไรลงไปบนเลเยอร์นั้นก็ตาม

เอาไปลองใช้กับงานที่ต้องเปลี่ยนสีหลายๆแบบได้ครับผม

06

[Unity][NGUI] เคยเจอปัญหาใช้ Anchor แล้วมันเลื่อนๆไหม?? by

31
Dec
0

เคยเจอปัญหาใช้ Anchor แล้วพอสั่ง play มันก็เลื่อนๆๆ สักพัก กว่าจะเข้าที่ไหม เวลาเปลี่ยนหน้าไปมา มันก็เลือนๆๆ อยู่อย่างนั้นแหละ ทำให้ UI เราไม่สวยเลยย วันนี้จะมาบอกวิธีแก้กันนะฮ้าฟฟฟ

  • ก่อนอื่นให้เราลองดู Anchor ของ Object ที่มันเลือนๆ กันก่อนว่าใช้ Anchor Type เป็น Advanced รีเปล่า
  • ถัดไปให้ดูว่ามีการ Set ฝั่งไหนเป็น None รึเปล่า ถ้ามี นี่แหละ เป็นตัวการที่ทำให้ Object ของเรา เลื่อนนๆๆๆๆๆ
  • หากว่าเราอยากให้ส่วนบนของ Object A ติดกับส่วนล่างของ Object B แล้วปล่อยให้ ส่วนล่างของ Object A ไม่กำหนด (ที่เมื่อก่อนเราปล่อยตรงนี้ไว้เป็น None) ให้เราทำอย่างนี้

 

ปรับ Pivot ดังนี้

  • ถ้าอยากให้ชิดบน Pivot บน
  • ถ้าอยากให้ชิดล่าง Pivot ล่าง
  • ถ้าอยากให้ชิดซ้าย Pivot ซ้าย
  • ถ้าอยากให้ชิดขวา Pivot ขวา

ปรับ Anchor ดังนี้

  • ถ้าอยากให้ชิดบน ทำ Anchor ล่างให้เหมือน Anchor บน
  • ถ้าอยากให้ชิดล่าง ทำ Anchor บนให้เหมือน Anchor ล่าง
  • ถ้าอยากให้ชิดซ้าย ทำ Anchor ขวาให้เหมือน Anchor ซ้าย
  • ถ้าอยากให้ชิดขวา ทำ Anchor ซ้ายให้เหมือน Anchor ขวา

จบแล้วคร้าฟฟฟฟ ทีนี้ Object ของเราก็จะไม่วิ่งๆ เลื่อนๆ อีกต่อไป

วาดระบายกระโปรงแบบง่าย by

31
Dec
0

วิธีวาดชายกระโปรงแบบง่าย

วาดโค้งๆ ยึกยือขึ้นมา (ไม่รู้จะเรียกอะไๆรดี)

s01

ขีดเส้นลากต่อด้านบน

s02

ใส่เส้นความลึก

s03

*** ช่างสังเกตนิดนึงจะ พื่อวาดไม่ให้ดูแบน

โดยการวาดโค้งใหญ่ๆ แล้ว ไล่ไปเล็ก

s04

จากนั้นเข้าขั้นตอนเติมคือลากเส้นต่อด้านบน และเส้นความลึก

ระบายจะดูมีมิติขึ้น

s05

โค้งๆถี่ๆ ไม่เท่ากันนี้ใช้ตรงไหน (ตามภาพเลย)

เป็นการเข้า ‘tive ชายกระโปรง เพื่อให้ดูสมจริง หรือ เพี้ยนน้อยที่สุด
เพราะถ้าวาด โค้งๆ เท่ากันหมดทั้งเส้น มันจะดูแบน ไม่มีมิติ

s08

s09

ลองฝึกวาดดูนะเจ้า

s06

s07

แยกเส้นออกจากBGด้วยวิธีใน PS by

30
Dec
0

1.ขั้นแรกเปิดภาพที่จะแยกเส้นกับBGขึ้นมา และก็อปปี้เลเยอร์Ctrl+J ก่อนเลยเพื่อกันภาพจริงเสียนะครับ
01-1

2.จากนั้นไปเลือกที่เมนู select ที่แถบเมนู เลือก color range จะมีป๊อบอัพขึ้นมา
3. ให้ตั้งค่าคามรูป โดยเลื่อนค่า Fuzziness 200 แล้วก็กด OK
02

4.เมื่อกด OK แล้วจะเกิดพื้นที่ selection เป็นรูปรอยปะ ตามภาพ
04_1

5.จากนั้นกด Ctrl+J สร้างเลเยอร์ใหม่ เราก็จะได้เส้นแยกจาBGแล้ว ตามรูปครับ
05-1

วิธีนี้ใช้ได้ดีกับการตัดเส้นด้วยมือและสแกนมาลงสีต่อในคอม หวังว่าจะมีประโยชน์นะครับ

Unity Test Tools มาเขียน Test ให้กับเกมของเรากันเถอะ! by

30
Dec
2

ท้าวความก่อนเล็กน้อยสำหรับคนที่ไม่เคยเขียน Test มาก่อน ถามว่าทำไมเราต้องมี Test เหรอ?

  1. เคยไหม สมมติมีคนเล่นเกมเราพร้อมกัน 1 หมื่นคน เรา upload เกมขึ้น Store ปรากฏว่าคนเปิดเกมไม่ได้ Crashed เลย หรือมี Bug ที่ใช้ประโยชน์จากเกมของเราได้ และกว่าเราจะรู้ตัวว่ามี Bug กว่าจะแก้เสร็จและ upload ขึ้น Store กว่าคนเล่นจะกด Download เกมเวอร์ชั่นแก้ Bug ไป รวมๆ แล้วผ่านไปกี่ชม. แล้ว? อ้อ สำหรับคนที่ไม่รู้ App Store ของ iOS ใช้เวลา Approve 7 วันนะครับบบบ เรารอได้ไหม?
  2. แก้ Bug ระบบ A แต่ระบบ B เสือกพัง เห้ยยย เป็นไปได้ไงแว้ ไม่ได้ทดสอบระบบ B ก่อน up ขึ้น Store ซะด้วย
  3. นาย A มาแก้ Code ของนาย B แล้วพัง อ้าวเห้ย จะแก้อันนี้ทำไมไม่บอกกันก่อนวะ ห้ามทำแบบนี้นะเว้ย ต้องทำแบบนี้ๆๆๆ เท่านั้น !@#@$#^%$#

โอเคเหตุการณ์ Basic ทั่วไปของวงการ Software Development ที่ไม่ได้เป็นเฉพาะวงการเกมก็คงจะเคยเจอเหตุการณ์แบบนี้บ่อยๆ จริงไหมครับ ปัญหานี้เราแก้ได้ด้วยการมีระบบ Automate Test ครับ หรือจะ Test Manual เอาก็ได้นะ แต่จะเสียเวลาและแรงงานโดยยังมีโอกาสเกิด Human Error อีกตะหาก

เข้าเรื่อง อาจจะมีคนสงสัยว่า Unity สามารถเขียน Test เกมของเราได้หรือไม่ คำตอบคือได้ครับ! แถมยังทดสอบการทดสอบพวกหน่วงเวลาจะเกิด Action ตามที่ต้องการได้หรือไม่ซึ่งมักเป็นองค์ประกอบหลักของเกมแทบทุกเกมได้เป็นอย่างดี

ทาง Unity ได้ออก library ของตัวเองให้ Download กันได้ฟรี ชื่อว่า Unity Test Tools ถ้าใครใช้ Unity 5.3 เป็นต้นไปจะฝังมากับตัว Unity อยู่แล้ว ไม่ต้องโหลดเพิ่มครับ (เฉพาะส่วนของ NUnit) แต่ถ้าใครยังจำเป็นต้องใช้ version เก่าอยู่ก็โหลดตาม link มาได้ ทำให้เราสามารถทดสอบเกมของเราได้ โดยการทดสอบจะแบ่งออกเป็นสามประเภทหลักๆ

  1. NUnit หรือเทียบได้กับ Unit Test ธรรมดาทั่วๆ ไปของภาษาอื่นๆ เป็นการใช้ Assert ใน Code เพื่อทดสอบการทำงานเป็นราย class หรือ method โดยควรออกแบบให้ไม่ต้องเชื่อมต่อกับระบบด้านนอกเช่น database หรือ web server เพื่อทดสอบเฉพาะ logic การทำงานของ method นั้นจริงๆ และควร Test แค่อย่างเดียวต่อ 1 การทดสอบ (Unit แปลว่าหน่วย 1 หน่วยที่เล็กที่สุด ดังนั้นควรทดสอบแค่หน่วยเดียว อย่าทดสอบหลายๆ หน่วยในการทดสอบ 1 ครั้ง) สำหรับ NUnit นี้เราจะต้องทดสอบภายใน Folder ชื่อ Editor เท่านั้นเป็นข้อบังคับของ Unity โดย Unity จะติด Library NSubstitute ซึ่งเป็น Library สำหรับสร้างพวก Dummy Object, Stub, Test Spy, Mock อย่างง่ายๆ มาให้ในตัวโดยไม่ต้องหาโหลดเพิ่มอีก เพื่อเพิ่มความสะดวกในการทดสอบอย่างสูงสุดครับ

    nunit2 nunit
  2. Assertion Component เป็นการทดสอบโดยไม่ต้องเขียน Code ทดสอบ คล้ายข้อ 1 แต่อาศัยการเปรียบเทียบและใส่ค่าผ่าน Inspector โดยตรงแทน อาจให้คนที่มีความรู้ Coding น้อยๆ ช่วยทำได้ ทำให้สะดวกมาก ไม่ต้องเป็น Programmer ทำเสมอไป โดยสามารถใส่แทรกไปกับระบบการทำงานปกติของเกมได้เลย เพราะเมื่อสั่ง Build แล้วตัว Unity จะตัด component ส่วนนี้ออกให้เองอัตโนมัติ สามารถตั้ง Event ได้ว่าจะทดสอบเมื่อไหร่ เช่นเมื่อ Object ตัวนี้ๆ โดน Destroy หรือเมื่อเกิดเหตุการณ์ใดๆ สามารถเปรียบเทียบค่าระหว่างวัตถุสองชิ้นก็ได้ จุดเด่นคือสามารถแทรกการทดสอบกับ Scene จริงและใช้ช่วยหา Bug ที่ค้นหาได้ยากได้ เวลาใช้กับ Option Error Pauseassertion_component
  3. Integration Test เป็นการทดสอบโดยกำหนดสภาพแวดล้อมและสถานการณ์อย่างหนึ่งขึ้นมาสำหรับการ Test โดยเฉพาะ คิดซะว่า New Scene ขึ้นมา setup ค่าทุกอย่างใหม่หมดทุกครั้งต่อการทดสอบ 1 อย่าง แล้ว reset ค่าทุกอย่างก่อนจะทดสอบลำดับถัดไป เป็นการทดสอบความสัมพันธ์ระหว่าง GameObject หลายๆ ชื้นที่มีปฏิสัมพันธ์ต่อกันว่าดำเนินไปอย่างถูกต้องหรือไม่โดยเฉพาะ เช่นถ้าบอลแตะ Collider ภายในเวลาที่กำหนดให้ผ่าน Test นั้นซะ ถ้าแตะไม่ทันให้ไม่ผ่าน หรือหน้านี้จะต้องโหลดสำเร็จภายในกี่วินาที ซึ่งเราสามารถเขียน Code เสริมเพื่อสั่งว่าการทดสอบผ่านแล้วได้อีกด้วย ไม่จำเป็นต้อง set ผ่าน Inspector เพียงอย่างเดียวintegration_test

รอติดตามตัวอย่างการใช้งานได้ในตอนต่อไปนะครับ :)

ปล. ข้อควรระวัง แม้จะมี Automate Test ก็อย่าละเลย Manual Test ไป คิดซะว่า Automate Test แค่ช่วยลดงานและ Human Error ของ Manual Test เท่านั้น มันยังคงมี Bug บางส่วนที่ Automate Test ไม่สามารถทำได้ หรือทำได้แต่ใช้แรงงานเยอะจนไม่คุ้มอยู่เหมือนกัน เช่นแก้ UI แล้ว UI เบี้ยวจากตำแหน่งที่ควรจะเป็น 10 pixel หรืออะไรทำนองนี้ ถ้าจะเขียนดักให้ครบเคสพวก UI เบี้ยวแถมมือถือยังมีหลากหลายขนาดหน้าจออีกก็อาจจะลำบากหน่อย ซึ่งขึ้นอยู่กับวิจารณาณของทีมว่าสมควรเขียนไหมอีกทีครับ

Link แนะนำ:

http://www.tallior.com/introduction-unity-test-tools/
อธิบายจุดประสงค์และประโยชน์อย่างละเอียดในการทดสอบทั้งสามแบบด้านบน

https://unity3d.com/learn/tutorials/modules/beginner/live-training-archive/test-tools
วิดีโอสาธิตการใช้งาน

http://blogs.unity3d.com/2014/07/28/unit-testing-at-the-speed-of-light-with-unity-test-tools/ (บทความ)
https://github.com/DmytroMindra/TestDoublesBlogpost (Code)
ตัวอย่างการใช้งาน Dummy Object, Stub, Test Spy, Mock และพื้นฐานการเขียน Test (สำหรับคนที่ไม่เคยเขียน Test มาก่อนเลยในชีวิตแนะนำให้อ่านก่อนเลยครับ)

https://bitbucket.org/Unity-Technologies/unitytesttools/wiki/Home
Manual การใช้งาน Tools ตัวนี้และ Source Code

https://github.com/DmytroMindra/GrowingGamesGuidedByTests
Code ตั้งต้นเป็นแบบฝึกหัดสนุกๆ สำหรับการเริ่มต้นหัดเขียน Test สำหรับเกม สำหรับใครที่นึกภาพไม่ออกว่าควรจัดโครงสร้าง Object สำหรับ Test ยังไงบ้างแนะนำให้โหลดไปเล่นได้ครับ

กู้เงิน | เศรษฐกิจพอเพียง | สินเชื่อบุคคล | สมัครบัตรกดเงินสด | สินเชื่อ | เงินกู้ด่วน | ยืมเงินทรูมูฟ | เงินด่วนนอกระบบ