打包后啟動(dòng).exe帶參數(shù)
啟動(dòng)傳參數(shù)可以參考這篇文章: 瀏覽器調(diào)用本地exe(應(yīng)用程序)方法
Unity準(zhǔn)備工作
需要用到這個(gè)API
Environment.GetCommandLineArgs()
官方解釋:返回包含當(dāng)前進(jìn)程的命令行參數(shù)的字符串?dāng)?shù)組
返回值是一個(gè)string[],當(dāng)Length>1的時(shí)候就是帶參數(shù),注意:在UnityEditor模式也就是編輯器模式會(huì)有默認(rèn)參數(shù)返回,Length是大于1的
UnityWebRequest API使用
常用的就是Get與Post,代碼比較簡(jiǎn)單,有的地方傳參時(shí)需要注意有沒(méi)有RequestHeader,這個(gè)需要進(jìn)行特殊處理文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-573997.html
代碼
IEnumerator IePostRequest(string url, object mRequestData, GetDate getDate)
{
string paramStr = JsonUtility.ToJson(mRequestData);
byte[] databyte = Encoding.UTF8.GetBytes(paramStr);
using (var request = new UnityWebRequest(url, UnityWebRequest.kHttpVerbPOST))
{
request.uploadHandler = new UploadHandlerRaw(databyte);
request.downloadHandler = new DownloadHandlerBuffer();
request.SetRequestHeader("Content-Type", "application/json;charset=utf-8");
request.SetRequestHeader("Authorization", "Bearer" + sessionId);
request.SetRequestHeader("Content-Length", databyte.Length.ToString());
yield return request.SendWebRequest();
if (request.result != UnityWebRequest.Result.Success)
{
Debug.Log(request.error);
}
else
getDate(request.downloadHandler.text);
}
}
IEnumerator IeGetRequest(string url, GetDate getDate)
{
using (var request = new UnityWebRequest(url, UnityWebRequest.kHttpVerbGET))
{
request.SetRequestHeader("Content-Type", "application/json");
request.SetRequestHeader("Authorization", "Bearer" + sessionId);
request.downloadHandler = new DownloadHandlerBuffer();
yield return request.SendWebRequest();
if (request.result != UnityWebRequest.Result.Success)
{
Debug.Log(request.error);
}
else
getDate(request.downloadHandler.text);
}
}
其中GetDate getDate是一個(gè)委托,用來(lái)接收返回的數(shù)據(jù)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-573997.html
public delegate void GetDate(string data);
完整代碼
using System;
using System.Collections;
using System.Text;
using UnityEngine;
using UnityEngine.Networking;
public class UnityPageRequest : MonoBehaviour
{
/// <summary>
/// token
/// </summary>
string sessionId;
public delegate void GetDate(string data);
private void Awake()
{
string[] CommandLineArgs = Environment.GetCommandLineArgs();
string testData = "";
if (CommandLineArgs.Length < 2)
{
Debug.Log("沒(méi)有參數(shù)");
//Application.Quit();//啟動(dòng)時(shí)沒(méi)有參數(shù)則退出
}
else
{
if (CommandLineArgs[1] == "")
{
//啟動(dòng)參數(shù)是空的
}
else
{
//解析各種ID
testData = CommandLineArgs[1];
}
}
ParseInitData(testData);
}
void ParseInitData(string data)
{
//啟動(dòng)數(shù)據(jù)在這里進(jìn)行解析
//sessionId = 解析的數(shù)據(jù)
}
public void PostRequest(string url, object mRequestData, GetDate getDate)
{
StartCoroutine(IePostRequest(url, mRequestData, getDate));
}
public void GetRequest(string url, string mRequestData, GetDate getDate)
{
StartCoroutine(IeGetRequest(url + mRequestData, getDate));
}
public void DeleteRequest(string url)
{
StartCoroutine(IeDeleteRequest(url));
}
IEnumerator IePostRequest(string url, object mRequestData, GetDate getDate)
{
string paramStr = JsonUtility.ToJson(mRequestData);
byte[] databyte = Encoding.UTF8.GetBytes(paramStr);
using (var request = new UnityWebRequest(url, UnityWebRequest.kHttpVerbPOST))
{
request.uploadHandler = new UploadHandlerRaw(databyte);
request.downloadHandler = new DownloadHandlerBuffer();
request.SetRequestHeader("Content-Type", "application/json;charset=utf-8");
request.SetRequestHeader("Authorization", "Bearer" + sessionId);
request.SetRequestHeader("Content-Length", databyte.Length.ToString());
yield return request.SendWebRequest();
if (request.result != UnityWebRequest.Result.Success)
{
Debug.Log(request.error);
}
else
getDate(request.downloadHandler.text);
}
}
IEnumerator IeGetRequest(string url, GetDate getDate)
{
using (var request = new UnityWebRequest(url, UnityWebRequest.kHttpVerbGET))
{
request.SetRequestHeader("Content-Type", "application/json");
request.SetRequestHeader("Authorization", "Bearer" + sessionId);
request.downloadHandler = new DownloadHandlerBuffer();
yield return request.SendWebRequest();
if (request.result != UnityWebRequest.Result.Success)
{
Debug.Log(request.error);
}
else
getDate(request.downloadHandler.text);
}
}
/// <summary>
/// Delete請(qǐng)求(攜程)
/// </summary>
/// <returns></returns>
public IEnumerator IeDeleteRequest(string url)
{
using (UnityWebRequest webRequest = UnityWebRequest.Delete(url))
{
yield return webRequest.SendWebRequest();
if (!string.IsNullOrEmpty(webRequest.error))
{
Debug.Log(webRequest.error);
}
else
{
Debug.Log("Okk");
}
}
}
}
到了這里,關(guān)于Unity 啟動(dòng)時(shí)帶參數(shù),網(wǎng)頁(yè)后端進(jìn)行數(shù)據(jù)交互 UnityWebRequest ,Post,Get,Delete的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!