简体   繁体   中英

How to do networking in Unity?

Hey i am new to developing apps using unity.

Needed help with how API calls are made in unity. How Network managers can be made to api calls? How objects can be created by mapping JSON? Is there a library that is used for doing networking generally? Can i get some sample implementation to look at?

is this used for networking generally? https://docs.unity3d.com/ScriptReference/Networking.UnityWebRequest.html?_ga=2.260182286.2011413046.1587971291-955861227.1582882092

Any leads would be of great help. Thanks.


It's so simple!

  1. Send a Request with UnityWebRequest (with Post or Get method)
  2. Read the Response value
  3. Make a Struct or Class with fields that you have in your response
  4. Parse your response to your Json Serialization ( Read Here )


For example:

using System;
using UnityEngine;
using UnityEngine.Networking;
using System.Collections;

// UnityWebRequest.Get example

// Access a website and use UnityWebRequest.Get to download a page.
// Also try to download a non-existing page. Display the error.

public class Example : MonoBehaviour
{
    [Serializable]
    public class MyClass
    {
        public int level;
        public float timeElapsed;
        public string playerName;
    }

    void Start()
    {
        // A correct website page.
        StartCoroutine(GetRequest("https://www.example.com"));

        // A non-existing page.
        StartCoroutine(GetRequest("https://error.html"));
    }

    IEnumerator GetRequest(string uri)
    {
        using (UnityWebRequest webRequest = UnityWebRequest.Get(uri))
        {
            // Request and wait for the desired page.
            yield return webRequest.SendWebRequest();

            string[] pages = uri.Split('/');
            int page = pages.Length - 1;

            if (webRequest.isNetworkError)
            {
                Debug.Log(pages[page] + ": Error: " + webRequest.error);
            }
            else
            {
                var json = webRequest.downloadHandler.text;
                Debug.Log(pages[page] + ":\nReceived: " + json);

                var myObject = JsonUtility.FromJson<MyClass>(json); //<-- This is your result object
            }
        }
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM