Comment utiliser PHP et Unity3D combinés avec Workerman pour obtenir une synchronisation des données en temps réel
Lors du développement de jeux en ligne multijoueurs ou d'applications d'interaction de données en temps réel, la synchronisation des données en temps réel est une fonction très importante. En utilisant PHP et Unity3D combinés avec Workerman, nous pouvons facilement réaliser la synchronisation et la transmission des données en temps réel.
Tout d'abord, nous devons installer et configurer Workerman sur le serveur. Workerman est un framework de socket PHP hautes performances qui peut être utilisé pour créer des applications en temps réel. Pour les étapes d’installation et de configuration spécifiques, veuillez vous référer à la documentation officielle de Workerman.
Côté PHP, nous devons écrire du code pour recevoir et traiter les données en temps réel envoyées par Unity3D. Voici un exemple de code PHP simple :
<?php use WorkermanWorker; // 创建一个Worker监听指定的端口 $worker = new Worker('websocket://0.0.0.0:2345'); // 当有客户端连接时,触发onConnect事件 $worker->onConnect = function($connection) { echo "New connection "; }; // 当收到客户端发送的数据时,触发onMessage事件 $worker->onMessage = function($connection, $data) { echo "Received data: $data "; // 在这里处理接收到的数据 // 可以将数据存储到数据库或者转发给其他客户端 }; // 当有客户端断开连接时,触发onClose事件 $worker->onClose = function($connection) { echo "Connection closed "; }; // 运行Worker Worker::runAll();
Dans le code ci-dessus, nous avons créé un écouteur WebSocket lorsqu'un client se connecte, envoie des données ou se déconnecte, les événements correspondants sont déclenchés respectivement. Vous pouvez traiter les données reçues dans l'événement onMessage, par exemple les stocker dans une base de données ou les transmettre à d'autres clients.
Côté Unity3D, nous devons utiliser le protocole WebSocket pour transmettre les données avec le serveur PHP. Tout d'abord, nous devons importer la bibliothèque WebSocket, par exemple en téléchargeant la bibliothèque WebSocket-Sharp.
Ensuite, créez un script C# dans Unity3D, voici un exemple simple :
using System.Collections; using System.Collections.Generic; using UnityEngine; using WebSocketSharp; public class DataSync : MonoBehaviour { WebSocket ws; // 连接到服务器 void Start() { // 创建WebSocket实例,并指定服务器地址和端口 ws = new WebSocket("ws://localhost:2345"); // 注册事件,当连接成功时触发 ws.OnOpen += (sender, e) => { Debug.Log("Connected to server."); }; // 注册事件,收到服务器发送的数据时触发 ws.OnMessage += (sender, e) => { Debug.Log("Received data: " + e.Data); }; // 注册事件,当连接关闭时触发 ws.OnClose += (sender, e) => { Debug.Log("Disconnected from server."); }; // 连接到服务器 ws.Connect(); } // 发送数据到服务器 void Update() { // 检测用户输入,发送数据到服务器 if (Input.GetKeyDown(KeyCode.Space)) { ws.Send("Hello server!"); } } // 关闭连接 void OnApplicationQuit() { ws.Close(); } }
Dans le code ci-dessus, nous créons une instance WebSocket et nous nous connectons au serveur au début. Nous avons également enregistré 3 événements : OnOpen, qui est déclenché lorsque la connexion est réussie ; OnMessage, qui est déclenché lorsque les données envoyées par le serveur sont reçues ; OnClose, qui est déclenché lorsque la connexion est fermée. Vous pouvez envoyer des données au serveur dans la méthode Update, par exemple en envoyant un message lorsque l'utilisateur appuie sur la barre d'espace.
Grâce à l'implémentation du code ci-dessus de PHP et Unity3D, nous avons réalisé avec succès la synchronisation et la transmission de données en temps réel. Vous pouvez développer et optimiser le code en fonction des besoins réels. Dans le même temps, nous pouvons également utiliser davantage de fonctionnalités de Workerman, telles que les tâches planifiées, le mode multi-processus, etc., pour répondre à davantage de scénarios d'application.
Résumé
En utilisant PHP et Unity3D combinés avec Workerman, nous pouvons facilement réaliser la synchronisation et la transmission de données en temps réel pour développer des jeux en ligne multi-joueurs ou des applications d'interaction de données en temps réel. Le code côté PHP est responsable de la réception et du traitement des données envoyées par Unity3D, tandis que le code côté Unity3D est responsable de la transmission des données avec le serveur PHP via le protocole WebSocket.
J'espère que cet article vous sera utile. Je vous souhaite du succès dans votre développement de synchronisation de données en temps réel !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!