สร้างเกม - pause game : หยุดก่อนเข้าห้องน้ำแปป !!!

           แน่นอนครับ เกมส์ทุกเกมส์ส่วนใหญ่บนโลกใบนี้ จะต้องสามารถที่หยุดเกมส์เอาไว้ก่อน แล้วค่อยกลับมาเล่นต่อได้ ซึ่งวิธีใน Unity มีขั้นตอนในการหยุดเกมที่ทำได้หลายวิธี บางคนเขียนโค้ดเทพ อาจจะเขียนโค้ดเพื่อสั่งหยุดการทำงานขงสคริปทุกตัวในออบเจกทุกตัวได้ แต่สำหรับเบื้องต้นมีวิธีง่ายๆอยู่

          วิธีที่เราจะใช้ในโค้ดนี้คือการปรับค่าของตัวแปร 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 testPause : MonoBehaviour { 

  void Update () { 
      if (Input.GetKeyDown (KeyCode.Mouse0)) 
      { 
          if(Time.timeScale == 1) 
              Time.timeScale = 0; 
          else Time.timeScale = 1; 
      } 
   } 


ลองดูกันครับ เป็นวิธีที่ง่าย แต่วิธีนี้มันหยุดทุกอย่างของเกมส์ ซึ่งบางครั้งบางอย่างของเกมส์ไม่สามารถหยุดได้ เราก็ต้องเขียนโค้ดเพื่อหยุดการทำงานของ script นั้นๆ แล้วมันทำยังไงละ

ก็ขออธิบายง่ายๆ ก็คือโค้ดส่วนไหนที่ทำงานในฟังชั่น update() เราก็ไป if else ให้มันสะ เช่น

bool gamePause = false;

 void Update () { 
      if (gamePause) 
      { 
                 debug.Log("pause");
      } 
      else {
               โค้ดที่เกมส์ทำงาน
      }
   } 

ก็ประมาณนี้ ส่วนเราจะสั่งให้ gamePause เป็น true ตอนไหน ก็อยู่ที่เราแล้วจัดไป สู้ๆครับ









สามารถอ่านบทความที่เกี่ยวข้องของเราที่นี่  >> รวมลิ้งค์บทความ สร้างเกมด้วย Unity

5 ความคิดเห็น:

ขับเคลื่อนโดย Blogger.