การหยุดเกมทำได้หลายวิธี บางคนเขียนโค้ดเทพ อาจจะเขียนโค้ดเพื่อสั่งหยุดการทำงานขงสคริปทุกตัวในออบเจกทุกตัวได้ แต่สำหรับเบื้องต้นมีวิธีง่ายๆอยู่เหมือนกันแต่อาจจะมีข้อจำกัดบ้างซึ่งผมจะพูดถึงทีหลัง
วิธีที่เราจะใช้ในโค้ดนี้คือการปรับค่าของตัวแปร Time.deltaTime ซึ่งเป็นตัวแปรที่ควบคุมการคำนวณที่อ้างอิงเวลา(ความเร็ว)ภายในเกมนั่นเองได้แก่พวก rigidbody และคำสั่งที่มีการคูณ Time.deltaTime ภายในโค้ด โดยตามปกติค่านี้จะอยู่ที่ 1.0 ถ้าเราปรับเป็น 0.5 เกมก็จะช้าลงครึ่งนึง ถ้าปรับเป็น 2.0 เกมจะเร็วสองเท่า แต่สำหรับโค้ดตัวนี้จะเซตค่าให้เท่ากับ 0.0 เพื่อเป็นการหยุดเกมครับ ใครขี้เกียจอ่านก็ดูในคลิปได้เลยครับ
ในโค้ดตัวนี้จะให้เชคการคลิกปุ่มซ้ายของเมาส์ เมื่อมีการคลิกจะเชคว่า
- ถ้า timeScale เดิมเป็น 1 (เกมเล่นอยู่ปกติ)ให้หยุดเกม(โดยเปลี่ยนเป็น 0)
- ถ้า timeScale เดิมเป็น 0 (เกมหยุดอยู่)ให้เดินเกมต่า(โดยเปลี่ยนเป็น 1)
using UnityEngine; using System.Collections; public class pauseScript : MonoBehaviour { void Update () { if (Input.GetKeyDown (KeyCode.Mouse0)) { if(Time.timeScale == 1) Time.timeScale = 0; else Time.timeScale = 1; } } }ข้อเสียของการใช้วิธีนี้ในการหยุดเกมคือ บางครั้งเราไม่ได้ต้องการหยุดทุกอย่าง เช่นบางทีเราต้องการหยุดเกมแต่้องการให้มีเมนูสวยๆเลื่อนลงมาก็จำเป็นต้องใช้วิธีอื่นซึ่งยากกว่านิกหน่อยแต่ก็ทำให้เก็บรายละเอียดเกมได้ดีกว่าครับ :)
#7 - สารบัญโค้ด
อ้างอิง docs.unity3d.com/ScriptReference/Time-timeScale.html