Java 和 Unity 是兩個非常流行的開發工具,Java 主要是用來開發后端服務,而 Unity 則是專門用來開發游戲的。但是在一些需要網絡交互的游戲項目中,Java 和 Unity 的結合使用可以提高開發效率和游戲性能。那么,究竟如何在 Java 和 Unity 之間進行接口調用呢?
// Java 接口 public class JavaServer { public static void main(String[] args) { try { ServerSocket serverSocket = new ServerSocket(8888); System.out.println("服務器已啟動,等待客戶端連接..."); while (true) { Socket socket = serverSocket.accept(); System.out.println("客戶端已連接:" + socket.getLocalAddress()); InputStream inputStream = socket.getInputStream(); DataInputStream dataInputStream = new DataInputStream(inputStream); String message = dataInputStream.readUTF(); System.out.println("服務器已接收到客戶端消息:" + message); // 給客戶端發送消息 OutputStream outputStream = socket.getOutputStream(); DataOutputStream dataOutputStream = new DataOutputStream(outputStream); dataOutputStream.writeUTF("Hello, Unity!"); dataInputStream.close(); dataOutputStream.close(); socket.close(); } } catch (IOException e) { e.printStackTrace(); } } }
上面是一個簡單的 Java Socket 服務器,它監聽 8888 端口,將接收到的消息原封不動地返回給客戶端。我們可以將這個服務器作為一個后端服務,供 Unity 客戶端調用。
// C# 腳本 public class UnityClient : MonoBehaviour { void Start() { StartCoroutine(SendRequest()); } IEnumerator SendRequest() { using (TcpClient client = new TcpClient("127.0.0.1", 8888)) { Debug.Log("已連接到服務器"); using (NetworkStream stream = client.GetStream()) { byte[] message = Encoding.UTF8.GetBytes("Hello, Java!"); stream.Write(message, 0, message.Length); Debug.Log("已發送請求"); byte[] buffer = new byte[1024]; int length = stream.Read(buffer, 0, buffer.Length); string response = Encoding.UTF8.GetString(buffer, 0, length); Debug.Log("已接收響應:" + response); } } yield return null; } }
上面是一個 Unity C# 腳本,它通過 TcpClient 連接到 Java 服務器,發送一條消息并接收服務器的響應。我們可以在 Unity 游戲中通過調用這個腳本的方法來和后端服務進行交互。