วิธีการแก้ไขปัญหา Unity ไม่รวม AndroidManifest บางตัวให้ by

31
Oct
0

ในขั้นแรกขออธิบายวิธีการเช็ค AndroidManifest ตัวที่ใช้จริงกันก่อน เนื่องจากในโฟลเดอร์ Plugin > Android ของเราจะมีไฟล์ AndroidManifest.xml อยู่มากมาย ซึ่งตามปกติแล้ว Unity จะทำการรวมไฟล์พวกนี้ให้เป็นไฟล์เดียวไว้ใช้งานจริงบน Run time ซึ่งวิธีการเช็คก็คือ

  • ที่ File > Build Settings… ติ้กเลือก Google Android Project แล้วเลือกโฟลเดอร์

  • โฟลเดอร์ที่ได้ออกมาจะมี AndroidManifest.xml ตัวที่ใช้งานจริง ให้เปิดเช็คดูว่ามี  Tag  ครบตามที่มีทั้งหมดหรือไม่ หรือถ้ารันแล้วตัวไหนพังก็มาเช็คดูว่าขาดตัวไหนไปหรือเปล่า

ซึ่งหลังจากที่เราใช้ POKKT Unity SDK 4.1.1 เราก็ได้พบปัญหาดังกล่าวว่า AndroidManifest.xml ที่สร้างขึ้นมาไม่ยอมรวมเป็น AndroidManifest.xml ตัวหลัก ซึ่งวิธีแก้ไขก็ง่ายๆ Copy  Tag  ที่จำเป็นต้องใช้ แล้วนำไปฝากกับ AndroidManifest.xml ของ Plugin ตัวอื่นๆ ซึ่งจากที่เราทำเราได้เอา Tag ไปฝากไว้กับ Chartboost ซึ่งออกมาก็ได้ผลทีถูกต้อง

วิธีทำให้ปุ่มกดไม่ได้โดยที่ไม่เปลี่ยน Sprite เป็น Disabled by

29
Sep
0

จากบนลงล่าง กดได้ / กดไม่ได้ / กดไม่ได้

จากรูปด้านบน ปกติแล้วปุ่ม UI Button จะมีอยู่ 3 State คือ Normal / Pressed / Disabled ทีนี้ปุ่มที่โชว์ขณะไม่มีแอคชั่นใดๆก็จะมองเห็นได้อยู่สองแบบคือ Normal กับ Disabled แต่โจทย์คือเราอยากได้แบบที่ 3 คือดูเหมือนปุ่มกดได้ (Normal) แต่ว่าจริงๆแล้วกดไม่ได้ เลยมีวิธีแก้โดยใช้โค๊ดดังนี้ฮะ

Set Sprite ไว้ตามปกติ สีขาว Normal / สีแดง Disabled


if (isLock) //ถ้าล็อค
{
buttonTrans.GetComponent<BoxCollider>().enabled = false; //ปิด BoxCollider
button.enabled = false; //Disable ตัวปุ่มไป โดยจะไม่ใช่ .isEnable ที่จะทำให้ปุ่มนั้นเปลี่ยน state เป็น Disabled
}
else //ถ้าปกติ
{
button.isEnabled = true; //เปลี่ยนกลับเป็น Normal
button.enabled = true; //Enable ตัวปุ่ม
buttonTrans.GetComponent<BoxCollider>().enabled = true; //เปิด BoxCollider
}

ตามโค๊ดด้านบนถ้าเรียง Order ผิดก็จะแสดงผลผิดได้ เพราะแค่ Hover ปุ่มก็จะทำการเช็ค State แล้ว แต่ Order ด้านบนสามารถทำให้ได้ผลลัพธ์ตรงตามความต้องการครับ

วิธีใส่แสงประกอบฉากให้กับตัว Spine (Unity) by

31
Jul
0

Spine  นั้นจะรับแต่ Point Light เท่านั้น ดังนั้นต้องเลือกให้ถูกนะ ขั้นตอนการใส่แสง Ambient ก็มีดังนี้

รูปก่อนการใส่แสง Ambient

  • เลือกส่วนประกอบของ Spine ของเรา ที่มี Skeleton Parts Renderer

  • ที่สคริปท์ Skeleton Parts Renderer เปลี่ยน Shader เป็น Spine/Skeleton Lit

  • จากนั้น Spine ที่เราเลือกจะดำมืดไป ไม่ต้องตกใจเพราะเรายังไม่ได้ใส่แสงให้มันนั่นเอง

  • วิธีการใส่แสง ก็ไปที่เมนู GameObject -> Light -> Point Light

  • สร้างเสร็จก็จัดตำแหน่งให้เรียบร้อย และปรับค่าของแสงได้ที่สคริปท์ Light
    Type – ให้ใช้เป็น Point ไว้ แบบอิ่นจะไม่มีผลกับ Spine
    Range – ระยะของแสงของเราที่จะให้มีผล
    Color – ปรับสีของแสง Ambient
    Intensity – ปรับความเข้มของแสง เวลามีหลายๆแสงชนกัน Intensity สูงจะแสดงผลชัดกว่า

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

  • อันนี้เป็นตัวอย่างหลังจากใส่จุดกำเนิดแสงเพิ่ม

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

31
Jul
0

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

รู้หมือไร่?? MenuItem นั้นสามารถ Disable Menu หรือ Enable Menu ตามเงื่อนไขต่างๆ
ที่เรากำหนดไว้ใน Validate Function ของแต่ละ Item นั่นเอง วิธีใช้ก็ดังนี้เลยครับ


[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() { }

นี่คือ code ของคราวที่แล้ว แล้วถ้าเราอยากให้ Menu4 นั่น Enable ก็ต่อเมื่อเราเลือก GameObject
ไว้ (การเลือกนี้จะถือเอา Object ที่แสดงอยู่ใน Inspector ในขณะนั้น) ก็ให้เราเพิ่ม code นี้ลงไป

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

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

จากนั้นจะเอา GameObject นั้นไปใช้ยังไงก็ต้มยำทำแกงได้ตามสบายเลยครับ ยกตัวอย่างเช่น
แก้ Function Menu4 ให้เป็นแบบนี้

[MenuItem("Test/Menu4", false, 101)]
static void Menu4()
{
Selection.activeGameObject.name = "Test";
}

ถ้าเราเลือก GameObject ไว้ แล้วกดที่ Menu4 GameObject นั้นก็จะถูกเปลี่ยนชื่อให้เป็น Test ในบัดดล
2

ไว้คราวหน้าจะมาสอน trick เด็ดๆเกี่ยวกับ Editor อีกนะคร้าฟฟฟฟฟ

การสร้างสเตท Skill (ท่าไม้ตาย) ของฮีโร่ด้วย Unity Animator by

13
Jul
0

 

 

 

1.หลังจากอนิเมทท่าทางตัวละครใส่สเตท skill ด้วย Spine เรียบร้อยแล้ว export นำเข้าสู่ Unity

 

2.คลิกขวาที่ SkeletonData เลือก Spine > Instantiate (Mecanim)

sample28a

 

3.เราจะได้ Controller หน้าเหลี่ยมๆอย่างนี้มา พร้อมๆกับก้อน Spine Mecanim GameObject ซัมติงที่คืออะไรต้องไปถามโปรแกรมเมอร์

sample28b

 
4.กาง Controller ออกมาเลือกที่สเตท skill

sample28c

 

5.เปิดแท็บ Animator ลากสเตท skill เข้าไป เราจะได้ สเตท skill เข้าไปอยู่ใน Unity Animator

sample28d

 

 

 

6.สร้าง panel ที่  sorting layer skill depth 50 ตั้งชื่อว่า skill

sample28e

 

7.ลาก Spine Mecanim GameObject ไปไว้ใน panel นั้น เปลี่ยนชื่อมันเป็น Hero

 

8.เลือกที่ Hero แล้วไปที่แท็บ Animation เราจะสามารถจัดการอนิเมทบนไทม์ไลน์ของ Unity Animator ได้ต่อไป

sample28f