Unity SDK
SDK หลักของ MAJACLOUD: C# สำหรับ Unity พร้อม API แบบ async/await และโครูทีน หน้าต่างตั้งค่า และตัวอย่าง Starter
คอมเมนต์ในโค้ดและชื่อ API ยังคงเป็นภาษาอังกฤษเพื่อให้ตรงกับ SDK
ความต้องการของระบบ#
- Unity 2021.3 LTS ขึ้นไป รวมถึง Unity 6 ใช้ได้ทั้ง Built-in, URP และ HDRP เพราะ SDK ไม่มีโค้ดด้านการเรนเดอร์
- ใช้เฉพาะโมดูลในตัวของ Unity (UnityWebRequest, JSON, uGUI) ส่วนตัวอย่างใช้ TextMesh Pro
- Editor, Windows, macOS, Linux, Android, iOS และ WebGL ไม่มีการใช้เธรด async/await จึงปลอดภัยบน WebGL และรองรับ IL2CPP
การติดตั้ง#
- ดาวน์โหลด
.unitypackageจากหน้าโปรเจกต์หรือหน้า ดาวน์โหลด - ใน Unity: Assets ▸ Import Package ▸ Custom Package… เลือกไฟล์แล้วนำเข้าทั้งหมด
- เมื่อ Unity ถามว่าจะนำเข้า TMP Essentials สำหรับตัวอย่างหรือไม่ ให้ตอบตกลง
ไฟล์ทั้งหมดอยู่ใน Assets/Majacloud: Runtime (ตัว SDK), Editor (เครื่องมือตั้งค่า), Samples/Starter และ Tests
เชื่อมต่อโปรเจกต์#
Tools ▸ Majacloud ▸ Setup (มีใน Project Settings ▸ Majacloud ด้วย) จะเขียนไฟล์ Assets/Resources/MajacloudSettings.asset และ SDK จะเริ่มทำงานจากไฟล์นี้ก่อนที่ซีนแรกจะโหลด
| ฟิลด์ | ค่า |
|---|---|
| Base URL | ที่อยู่ของระบบที่ติดตั้งนี้ https://majacloud.majanite.com |
| Project ID | แดชบอร์ด ▸ คีย์ API |
| Client Key | คีย์สาธารณะที่ขึ้นต้นด้วย pk_live_ ใส่ไว้ในบิลด์ได้อย่างปลอดภัย |
Test connection จะเก็บชื่อโปรเจกต์ แพ็กเกจ และคีย์สาธารณะของรีโมตคอนฟิก ซึ่งใช้ปักหมุดการตรวจสอบลายเซ็นไว้กับเซิร์ฟเวอร์ของคุณ
sk_live_…) ไว้ในบิลด์เกมหรือหน้าเว็บ ทุกสิ่งที่ส่งถึงผู้เล่นสามารถถูกอ่านได้ตั้งค่าจากโค้ด#
สร้างการตั้งค่าตอนรันไทม์ได้ เช่น ให้บิลด์สำหรับพัฒนาชี้ไปที่เซิร์ฟเวอร์ staging:
// Switch environments from code (e.g. a staging server in development builds)
var settings = ScriptableObject.CreateInstance<MajacloudSettings>();
settings.Configure("https://staging.yourstudio.com", "<project id>", "pk_live_…");
Majacloud.Initialize(settings);Async และโครูทีน#
ทุกเมธอด async (…Async) มีเมธอดคู่แบบโครูทีนที่รับคอลแบ็ก สำหรับโค้ดที่ไม่ได้ใช้ async/await
// Every async method has a coroutine version with a callback
StartCoroutine(Majacloud.Leaderboards.GetTop("coins", 10, result =>
{
if (result.Ok) Debug.Log(result.Value.Total + " players");
}));ตัวอย่าง Starter#
Samples/Starter/Scenes/MajacloudStarter.unity มีห้าแท็บ ได้แก่ Leaderboard, Cloud save, Rewards, Config และ Account ซีนนี้ต้องใช้เนื้อหาที่สร้างจาก เพิ่มเนื้อหาตัวอย่าง Starter
พรีแฟบที่นำกลับมาใช้ได้ใน Samples/Starter/Prefabs: MajacloudLeaderboardView, MajacloudPlayerBadge และ MajacloudDailyRewardButton วางลงใน UI แล้วกำหนด slug หรือคีย์รางวัลใน Inspector
WebGL และมือถือ#
- ให้บริการบิลด์ WebGL ผ่าน HTTPS เพราะเบราว์เซอร์จะบล็อกคำขอ
http://จากหน้าhttps://และ API ส่งเฮดเดอร์ CORS ที่ WebGL ต้องการให้อยู่แล้ว - เบราว์เซอร์จะเปิดแท็บใหม่ได้เฉพาะเมื่อมีการคลิก สำหรับการเชื่อมบัญชีบน WebGL ให้เริ่มโฟลว์ไว้ก่อน แล้วเปิดหน้าเว็บภายในตัวจัดการการคลิกปุ่ม (ดู ผู้เล่น)
- การทดสอบบนโทรศัพท์กับเซิร์ฟเวอร์ในคอมพิวเตอร์ของคุณก็ต้องใช้ HTTPS เช่นกัน (หรือเฉพาะระหว่างพัฒนา ให้ตั้ง
ALLOW_INSECURE_HTTPบนเซิร์ฟเวอร์และอนุญาตการดาวน์โหลดผ่าน HTTP ใน Player Settings)
เมนูในเอดิเตอร์#
| เมนู | หน้าที่ |
|---|---|
Tools ▸ Majacloud ▸ Setup | คีย์ การทดสอบการเชื่อมต่อ และการตั้งค่าการทำงาน |
Tools ▸ Majacloud ▸ Open Starter Sample | เปิดซีน Starter |
Tools ▸ Majacloud ▸ Rebuild Starter Sample | สร้างซีนและพรีแฟบ Starter ใหม่ |
Tools ▸ Majacloud ▸ Export .unitypackage | ส่งออก SDK เป็น .unitypackage |