วันจันทร์ที่ 19 พฤษภาคม พ.ศ. 2557

เซฟเกมด้วย PlayerPrefs()



PlayerPrefs() เป็นฟังขั่นอีกตัวนึงที่ Unity ทำเอาไว้ให้ใช้กัน ฟังขั่นตัวนี้จะทำหน้าที่เก็บค่าของข้อมูลเอาไว้ในเครื่อง อย่างใน windows PlayerPrefs จะถูเก็บเอาไว้ใน registry ซึ่งจะไม่หายไปเมื่อปิดเปิดเกมใหม่

จากลักษณะการเก็บข้อมูลทีค้างอยู่ในเครื่องไม่หายไปไหนเมื่อปิดเกม จึงเหมาะมากสำหรับการนำไปทำระบบเซฟเกมแบบออฟไลน์ เช่น เก็บข้อมูลการเล่นว่าผ่านด่านไหนไปบ้างเเล้ว ตอนนี้เลเวลเท่าไหร่ highscore เท่าไหร่ เวลาเปิดเกมก็ดึงค่าเหล่านี้มาอัพเดต ดึง highscore มาเช็คว่าคะแนนที่ทำใหม่มากกว่ารึเปล่าแล้วเซฟคะแนนใหม่ทีสูงกว่าเข้าไปแทนที่คะแนนเดิม



ลักษณะการเก็บข้อมูลจะคล้ายๆกับการเก็บตัวแปร ต่างกันแค่รูปแบบในการใส่ค่าและดึงค่า
PlayerPrefs ถูกแบ่งประเภทข้อมูลเป็น 3 แบบ
  • Int - ตัวเลข
  • Float - เลขทศนิยม
  • String - ข้อความ
การใส่ค่าและดึงค่าจะต้องเรียกตามประเภทข้อมูล แต่ถ้าเราต้องการเก็บค่าเป็นชนิดอื่น อย่าง long หรือ date อาจต้องทำการแปลงเป็นข้อความแล้วเก็บเป็น String

การใส่ค่า
  • PlayerPrefs.SetInt("ตั้งชื่อ",ค่าตัวเลข);
  • PlayerPrefs.SetFloat("ตั้งชื่อ",ค่าทศนิยม);
  • PlayerPrefs.SetString("ตั้งชื่อ","ข้อความ");

การเรียกค่ามาใช้
  • PlayerPrefs.GetInt("ชื่อที่ตั้งไว้");
  • PlayerPrefs.GetFloat("ชื่อที่ตั้งไว้");
  • PlayerPrefs.GetString("ชื่อที่ตั้งไว้");
คำสั่งเรียกค่าสามารถเอาไปใส่แทนที่ส่วนที่เป็นค่าได้เลย ประมาณนี้
int level = PlayerPrefs.GetInt("exp")/30;