[Unity] การเล่นวีดิโอใน Mobile App by

31
Jan
0

การเล่นวีดิโอในแอ็พของเรานั้นถ้าเล่นแบบเต็มจอแล้วทำได้ไม่ยากเลยครับ เพียงใช้ฟังก์ชั่น Handheld.PlayFullScreenMovie ซึ่งรับพารามิเตอร์ 4 ตัว คือ

  • Path หรือ Url ของไฟล์วีดิโอของเรา *บังคับมี*
  • สีของ Background
  • แผงควบคุม
    จะมีให้เลือก 4 แบบ คือ

    • FullScreenMovieControlMode.Full โชว์แผงควบคุมทั้งหมด
    • FullScreenMovieControlMode.Minimal โชว์แผงควบคุมแบบน้อยที่สุด
    • FullScreenMovieControlMode.CancelOnInput ไม่โชว์แผงควบคุม และหยุดวีดิโอเมื่อแตะ
    • FullScreenMovieControlMode.Hidden ไม่โชว์แผงควบคุม
  • การปรับขนาด
    จะมีให้เลือก 4 แบบ คือ

    • FullScreenMovieScalingMode.None ไม่ทำการปรับขนาดใดๆ
    • FullScreenMovieScalingMode.AspectFit ปรับยึดอัตราส่วนเดิมโดยให้ด้านใดด้านหนึ่งของวีดิโอที่ยาวกว่าชิดขอบ
    • FullScreenMovieScalingMode.AspectFill ปรับยึดอัตราส่วนเดิมโดยให้ด้านใดด้านหนึ่งของวีดิโอที่สั้นกว่าชิดขอบ
    • FullScreenMovieScalingMode.Fill ปรับเต็มจอโดยไม่ยึดอัตราส่วนเดิม

ตัวอย่างเช่น
Handheld.PlayFullScreenMovie(ConfigGame.ImageUrl + “idol.mp4″, Color.black, FullScreenMovieControlMode.Full, FullScreenMovieScalingMode.AspectFit);

ผลลัพธ์ที่ได้



style="display:block"
data-ad-client="ca-pub-5841101416947980"
data-ad-slot="5395238750"
data-ad-format="auto">



style="display:block"
data-ad-client="ca-pub-5841101416947980"
data-ad-slot="8429430352"
data-ad-format="auto">



style="display:block"
data-ad-client="ca-pub-5841101416947980"
data-ad-slot="9906163557"
data-ad-format="auto">



style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5841101416947980"
data-ad-slot="8289829557">



style="display:inline-block;width:468px;height:60px"
data-ad-client="ca-pub-5841101416947980"
data-ad-slot="9766562755">

วิธีง่ายๆในการจัดกลุ่มตัวแปรใน Inspector by

26
Jan
0

เมื่อเราต้องการจัดกลุ่มของตัวแปรปกติเราต้องไปยุ่งกับพวก UnityEngine.GUI GUILayout GUIStyle ซึ่งถ้าเราไม่อยากไปวุ่นวายก็มีวิธีง่ายๆโดยใช้การเขียน Class ของตัวแปร ที่มี [Serializable] เอาครับ

ตัวอย่างเช่น เราต้องการตัวแปร 4 ชุด ที่เก็บ GameObject ด้านในคล้ายๆกัน วิธีปกติก็จะได้โค็ดแบบนี้

public GameObject Border4;
public List Piece4;
public List NewPiece4;
public GameObject Border6;
public List Piece6;
public List NewPiece6;
public GameObject Border9;
public List Piece9;
public List NewPiece9;
public GameObject Border12;
public List Piece12;
public List NewPiece12;

ซึ่งหน้าตาใน Inspector จะออกมาแบบนี้ ดูยากมาก

ที่นี้ถ้าเราทำมันเป็น Class ใส่ [Serializable] เข้าไป โค็ดก็จะหน้าตาออกมาเป็นแบบนี้


public Image Image4;
public Image Image6;
public Image Image9;
public Image Image12;
[Serializable]
public class Image
{
public GameObject Border;
public List Piece;
public List NewPiece;
}

ซึ่งผลลัพธ์ที่ออกมาดูง่ายกว่าเดิมมากครับ

วิธีการแก้ไขปัญหา 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 สูงจะแสดงผลชัดกว่า

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

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