[UNITY] [Editor] เทคนิคการเขียน Editor ภาค 3 by

2
Sep
0

[UNITY] [Editor] เทคนิคการเขียน Editor ภาค 3

จากคราวที่แล้ว เรื่อง Validate Function ของ MenuItem วันนี้เราจะมาสอนเรื่อง Hot Key ครับ

รู้หมือไร่?? เราสามารถกำหนด Hot Key ให้ MenuItem ของเราได้ เพื่อที่จะได้เรียกใช้ได้ง่ายๆครับ วิธีใช้ก็ดังนี้เลยครับ

[MenuItem("Test/Menu1", false, 1)]
static void Menu1() { }
[MenuItem("Test/Menu2", false, 1)]
static void Menu2() { }
[MenuItem("Test/Menu3", false, 51)]
static void Menu3() { }
[MenuItem("Test/Menu4", false, 101)]
static void Menu4()
{
Selection.activeGameObject.name = "Test";
}
[MenuItem("Test/Menu4", true, 101)]
static bool Menu4Validator()
{
return Selection.activeGameObject != null;
}

นี่คือ code ของคราวที่แล้ว แล้วถ้าเราอยากให้ Menu4 นั้นมี Hot Key ก็ให้แก้พารามิเตอร์ตัวแรก ของ MenuItem
ซึ่งมี supported keys อยู่ดังนี้ครับ

% – CTRL on Windows / CMD on OSX
# – Shift
& – Alt
LEFT/RIGHT/UP/DOWN – Arrow keys
F1…F2 – F keys
HOME, END, PGUP, PGDN

เมื่อเราจะใส่ก็ใช้ประมาณนี้นะครับ

[MenuItem("Test/Menu4 %x", false, 101)]
static void Menu4()
{
Selection.activeGameObject.name = "Test";
}
[MenuItem("Test/Menu4 %x", true, 101)]
static bool Menu4Validator()
{
return Selection.activeGameObject != null;
}

จะได้ผลลัพท์ดังรูป
1

สังเกตุ1: จะต้อง เว้นวรรคก่อนใส่สัญลักษณ์ Hot Key เสมอนะครับ
สังเกตุ2: ถ้ามี Validate Function จะต้องแก้พารามิเตอร์ตัวแรกให้เหมือนกันนะครับ

เราสามารถใส่ %#&x เพื่อแทน Hot Key Ctrl+Alt+Shift+x ได้ครับ

ก็จบกันไปแล้วนะครับสำหรับการแนะนำ Feature ต่างๆของ UnityEditor ครับ
แต่จริงๆแล้ว UnityEditor ยังทำอะไรๆได้อีกมาก ถ้าใครอยากรู้มากกว่านี้ไปศึกษาดูได้ ที่นี่ ครับ

[UNITY] [Spine] Separator by

31
May
0

การใช้ Spine ร่วมกับ UNITY นั้นทำให้การทำงานง่ายขึ้นมาก แต่ก็มีหลายอย่างที่ถูกจำกัดไว้ ถ้าหากเราอยากแบ่ง Order in Layer ของ Spine ให้มีหลายชั้น เพื่อที่จะได้เอา Particle หรือ Object อื่นๆมาสอดไว้ตรงกลางก็จะต้องทำตามขั้นตอนดังนี้

  • หลังจากสร้าง Spine GameObject (skeleton) แล้วเราก็จะมี หน้าตาแบบนี้ และประกอบด้วย Script ดังรูปนี้1
  • หากอยากให้ Spine GameObject นี้มีการแบ่ง Layer ให้คลิ๊กขวาที่ Skeleton Animation (Script)2
  • และเลือก Add Skeleton Render Separator3
  • จะได้ Script ใหม่โผล่ออกมาแบบนี้4
  • ให้แก้เลข Size ใต้หัวข้อ Separator Slot Names ให้เป็น 15
  • จะมี Element0 มาให้เลือก ตัวเลือกจะเรียงจากชั้นล่างสุดไปถึงชั้นบนสุดให้อยู่แล้ว ให้เราเลือกมา 1 อัน6
  • เมื่อเลือกแล้วให้คลิ๊กที่ Add the missing renderer7
  • จะได้ผลลัพท์ดังนี้8
  • จะเห็นว่า Spine GameObject ของเรามี ลูกโผล่ออกมา 2 ตัว และเมื่อลอง Play และ ดูที่ลูกของ Spine GameObject ก็จะเห็นดังนี้10 9

ปอลิง. สำคัญมาก หากอยากแยก Layer ระหว่าง Shadow และส่วนประกอบอื่นๆ ห้ามเลือก Shadow ให้เลือกของที่อยู่เหนือ Shadow ไป 1 ชิ้น จึงจะได้ผลลัพท์แบบที่ต้องการรรรรร

[Unity 2D] วิธีการจัดหน้าหลังโดยไม่ใช่ Z! by

31
May
0

โดยปกติแล้ว Unity เป็น tool ที่เอาไว้ทำเกม 3D ซึ่ง offset ตำแหน่งต่างๆก็จะเป็น x y z แต่ในเมื่อเราต้องการเราจะทำเกม 2D แล้ว z จึงเป็นค่าที่เราไม่ควรไปยุ่งเป็นอย่างมาก (ใช้แล้วจะงงเอง) การจัดหน้าหลังของ Unity แบบปกติก็จะใช้ค่า z เพื่อกำหนดความลึกแบบ 3 มิตื แต่พอเรามาทำ 2D เลยมีวิธีที่ไม่ใช้ Z ดังนี้ครับ

  • Object ทั่วไปใน Scene ของเราจะใช้ Sprite Renderer ซึ่งมีค่า Sorting Layer และ Order in Layer ซึ่งเราจะมาเริ่มกับ Sorting Layer กันก่อน

หลักๆที่เราจะใช้คือค่า Sorting Layer และ Order in Layer

  • ให้เรากดที่เมนู Sorting Layer ซึ่งตอนแรกจะมีแต่ Default ให้เราทำการเพิ่มก่อนโดยการกด Add Sorting Layer….

Add Sorting Layer… เพื่อเพิ่ม / ปรับ Layer

  • จากนั้นก็เพิ่ม Layer ต่างๆที่เราต้องการใช้ในการจัดเรียงหน้าแบบหลักๆกันก่อน (สามารถคลิกลากขึ้นลงเพื่อปรับได้)

Layer UI ด้านหน้า / Layer ตัวเกม / Layer ฉากหลัง

  • จากตัวอย่างเมื่อเราแบ่ง Layer หลักๆเช่น UI ด้านหน้า / ตัวเกม / ฉากหลัง เป็นที่เรียบร้อยแล้ว ในส่วนเลเยอร์ของตัวเกมเองก็จะมี Object หลายๆตัวที่ยังจัดเรียงไม่ถูกอยู่ ให้เราใช้ Order in Layer ครับ

ตัวละครด้านหลังมาทับตัวละครด้านหน้าซึ่งอยู่ใน Sorting Layer เดียวกัน

  • ซึ่ง Order in Layer ที่มีค่ามากจะอยู่หน้า Object ที่มีค่านี้น้อยกว่าเสมอๆ

ปรับค่าตัวหน้าให้มากกว่าก็จะอยู่เหนือกว่าทันที!

* ภาคเสริม : ใน Object ของ NGUI จะไม่มี Order in Layer ให้เราตั้งค่าที่ Depth แทนนะครับ (ทำงานเหมือนๆกัน)

ปรับ Depth แทนได้เลย

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