ลงทะเบียนการโทรกลับเพื่อรับสตริงการแชท
ฟีเจอร์แชทการเล่นระยะไกลสามารถนำไปใช้ในลักษณะที่เมื่อผู้ใช้พิมพ์ข้อความในระหว่างการเล่นระยะไกล ข้อความนั้นจะถูกส่งไปยังหน้าต่างแชทเกมของคอมพิวเตอร์โฮสต์
1) เมื่อผู้ใช้ป้อนสตริงในกล่องข้อความที่จัดเตรียมไว้สำหรับการเล่นเกมระยะไกลบนเว็บตามที่แสดงด้านล่างและกดปุ่ม Enter สตริงจะถูกส่งไปยังเกมบนพีซีโฮสต์。 * ความยาวสูงสุดของการป้อนข้อมูลสำหรับการเล่นเกมระยะไกลคือ 150 ตัวอักษร และทิศทางการอ่านคือ LTR (จากซ้ายไปขวา) และ RTL (จากขวาไปซ้าย)
2) ในเกม PC โฮสต์ สตริงจะถูกส่งผ่านฟังก์ชัน callback ที่ลงทะเบียนล่วงหน้า
3) ในเกม PC โฮสต์ สตริงที่เกี่ยวข้องจะถูกส่งไปยังหน้าต่างแชทของเกม
การลงทะเบียนฟังก์ชัน Callback¶
ในการใช้ฟีเจอร์แชทใน Remote Play คุณต้องลงทะเบียนฟังก์ชัน callback หลังจากนำเข้า Remote Play plugin
โดยการลงทะเบียนฟังก์ชันการเรียกกลับ ฟีเจอร์แชทจะพร้อมใช้งานระหว่างการเล่นระยะไกล ทำให้เกมสามารถนำสตริงที่ได้รับจากการเล่นระยะไกลไปใช้กับฟังก์ชันการแชทตามสภาพแวดล้อมของเกมแต่ละเกมได้
สตริงที่ได้รับในเกมผ่านฟังก์ชัน callback จะถูกเข้ารหัสในรูปแบบ UTF-8 และแปลงเป็น Base64
นอกจากนี้ยังรวมถึงข้อมูลทิศทางการอ่าน ซึ่งช่วยให้รองรับหลายภาษา
ลงทะเบียนฟังก์ชัน callback กับ HiveRemotePlayManager.RegisterCallback ดังที่แสดงด้านล่างนี้
using AOT; // Required for MonoPInvokeCallback
public class {YourCustomClass} : MonoBehaviour { // YourCustomClass: Class used in your user game
#if !UNITY_EDITOR && UNITY_STANDALONE_WIN
[MonoPInvokeCallback (typeof(HiveRemotePlayManager.RemotePlayCallbackType))]
public static void RegisterRemoteCallbackFunction(int type, string remotePlayJsonData)
{
Debug.Log("REMOTE Callback DATA :" + remotePlayJsonData); // Receiving json data sent from RemoteSDK.
}
#endif
void Start() {
#if !UNITY_EDITOR && UNITY_STANDALONE_WIN
HiveRemotePlayManager.RegisterCallback(RegisterRemoteCallbackFunction);
#endif
}
}
เพิ่มเนื้อหาต่อไปนี้ไปที่ [Your_Project_Root]/Source/[Your_Project_Name]/[Your_Project_Name].build.cs. แทนที่ [Your_Project_Name] ด้วยชื่อจริงของโปรเจกต์ของคุณ.
public class <Your_Project_Name> : ModuleRules
{
public <Your_Project_Name>(ReadOnlyTargetRules Target) : base(Target)
{
...
PublicDependencyModuleNames.AddRange(new string[] { "HiveRemotePlay" });
...
}
}
ตัวอย่างของโค้ดที่ใช้ระหว่างการดำเนินโครงการมีดังนี้
#include "RemotePluginInterface.h" // Required in the project's build.cs: PublicDependencyModuleNames.AddRange(new string[] { "HiveRemotePlay" });
// ตัวอย่าง API 1. ชื่อ API ชั่วคราว
void SendRemotePlayKeyCallback(int _type, const char* _pData) {
UE_LOG(LogTemp, VeryVerbose, TEXT("==================SendRemotePlayKeyCallback================\n"));
char typeBuffer[35];
char* typeStr;
typeStr = _itoa(_type, typeBuffer, 10);
UE_LOG(LogTemp, VeryVerbose, TEXT("type : %s \n"), *FString(typeStr));
UE_LOG(LogTemp, VeryVerbose, TEXT("type : %s \n"), *FString(_pData)); // ตัวอย่าง: {"version":"1.0.250300","eventType":"Message","eventValue":{"value":"MTFIZWxsbyBrZXkgaW5wdXQgMQ==","action":"LTR"},"etc":{}}
}
// ตัวอย่าง API 2. เรียกใช้ API นี้หลังจากลงชื่อเข้าใช้, EX) การเรียกกลับการลงชื่อเข้าใช้ภายใน
void RegisterHiveRemoteCallback {
RegisterCallback(SendRemotePlayKeyCallback);
}
โปรโตคอลสตริงแชท¶
โปรโตคอลสำหรับสตริงแชทที่ได้รับผ่านฟังก์ชัน callback ในเกมมีดังนี้
เว็บ - โปรโตคอล JSON ของลูกค้า¶
คีย์ | ประเภทค่า | คำอธิบาย | อื่น ๆ | |
---|---|---|---|---|
version | version | number | ข้อมูลเวอร์ชัน Json | ดูตัวอย่าง |
eventType | eventType | string | ประเภทเหตุการณ์ - มีเพียงรายการข้อความเท่านั้น | ดูตัวอย่าง |
eventValue | eventValue | object | วัตถุค่าของเหตุการณ์ | ดูตัวอย่าง |
eventValue - value | eventValue - value | string | ค่าของเหตุการณ์ | ดูตัวอย่าง |
eventValue - action | eventValue - action | string | การกระทำของเหตุการณ์ | ดูตัวอย่าง |
etc | etc | object | เพื่อวัตถุประสงค์ในการขยาย | ดูตัวอย่าง |
ตัวอย่างข้อมูลสตริงแชท¶
สตริงแชทที่ได้รับผ่านฟังก์ชัน callback ในเกมมีรูปแบบข้อมูล JSON ดังต่อไปนี้
{
"version" : "1.0.2411.0",
"eventType" : "Message" ,
"eventValue" : {
"value" : "Something Message",
"action" : "LTR | RTL"
},
"etc" : { }
}
// value : Base64 (UTF-8 문장) 인코딩
// action : LTR (아랍어를 제외한 문자) | RTL (아랍어)