246 lines
7.3 KiB
C#
246 lines
7.3 KiB
C#
|
using System.Collections;
|
|||
|
using System.Collections.Generic;
|
|||
|
using LitJson;
|
|||
|
using UnityEngine;
|
|||
|
using UnityEngine.Networking;
|
|||
|
using UnityEngine.UI;
|
|||
|
|
|||
|
public class CreateLevMain : MonoBehaviour
|
|||
|
{
|
|||
|
public Transform gamePos;
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ȳ<EFBFBD><C8B3><EFBFBD>Ԥ<EFBFBD><D4A4><EFBFBD><EFBFBD>
|
|||
|
public GameObject[] petPrefabs;
|
|||
|
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ȳ<EFBFBD><C8B3>İ<EFBFBD>ť
|
|||
|
public Button[] petBtns;
|
|||
|
|
|||
|
// <20><>ǰѡ<C7B0><D1A1><EFBFBD><EFBFBD><EFBFBD>ȳ<EFBFBD>Ԥ<EFBFBD><D4A4><EFBFBD><EFBFBD>
|
|||
|
private GameObject nowChoosePet;
|
|||
|
|
|||
|
// <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD><C9B5>ȳ<EFBFBD>ʵ<EFBFBD><CAB5>
|
|||
|
private GameObject createPetGameObj;
|
|||
|
|
|||
|
//<2F>ϴ<EFBFBD><CFB4>ؿ<EFBFBD><D8BF><EFBFBD>ť
|
|||
|
public Button btnUpload;
|
|||
|
|
|||
|
// <20><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
public InputField inputNum;
|
|||
|
public Text txtLev;
|
|||
|
|
|||
|
public TipPanel tipPanel;
|
|||
|
|
|||
|
// <20>趨<EFBFBD><E8B6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
private int maxValue = 99999;
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
private PetInfo pet;
|
|||
|
private LevData levData;
|
|||
|
private float x;
|
|||
|
private float y;
|
|||
|
|
|||
|
private string levDataUploadUrl= "http://192.168.2.24:8080/uploadLevData"; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>URL
|
|||
|
|
|||
|
// Start is called before the first frame update
|
|||
|
void Start()
|
|||
|
{
|
|||
|
tipPanel.gameObject.SetActive(false);
|
|||
|
// <20><><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD>ť<EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD>¼<EFBFBD>
|
|||
|
for (int i = 0; i < petBtns.Length; i++)
|
|||
|
{
|
|||
|
int index = i; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
petBtns[i].GetComponent<Button>().onClick.AddListener(() => OnPetButtonClicked(index));
|
|||
|
}
|
|||
|
|
|||
|
btnUpload.onClick.AddListener(() =>
|
|||
|
{
|
|||
|
if (txtLev.text!="")
|
|||
|
{
|
|||
|
OnButtonClick();
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ仯
|
|||
|
inputNum.onValueChanged.AddListener(OnNumberInputChanged);
|
|||
|
}
|
|||
|
|
|||
|
// Update is called once per frame
|
|||
|
void Update()
|
|||
|
{
|
|||
|
// ȷ<><C8B7>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD>ȳ<EFBFBD>Ԥ<EFBFBD><D4A4><EFBFBD><EFBFBD>
|
|||
|
if (nowChoosePet != null)
|
|||
|
{
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if (Input.GetMouseButtonDown(0))
|
|||
|
{
|
|||
|
// <20><><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
Vector3 mousePosition = Input.mousePosition;
|
|||
|
mousePosition.z = Camera.main.nearClipPlane; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD>ü<EFBFBD><C3BC><EFBFBD>
|
|||
|
Vector3 worldPosition = Camera.main.ScreenToWorldPoint(mousePosition);
|
|||
|
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ȳ<EFBFBD>
|
|||
|
if (createPetGameObj == null)
|
|||
|
{
|
|||
|
createPetGameObj = Instantiate(nowChoosePet, worldPosition, Quaternion.identity);
|
|||
|
createPetGameObj.name = nowChoosePet.name;
|
|||
|
createPetGameObj.AddComponent<PetDelet>();
|
|||
|
createPetGameObj.transform.SetParent(gamePos, false);
|
|||
|
nowChoosePet = null;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
createPetGameObj = Instantiate(nowChoosePet, worldPosition, Quaternion.identity);
|
|||
|
createPetGameObj.name = nowChoosePet.name;
|
|||
|
createPetGameObj.AddComponent<PetDelet>();
|
|||
|
createPetGameObj.transform.SetParent(gamePos,false);
|
|||
|
nowChoosePet = null;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// <20><><EFBFBD>ȳ谴ť<E8B0B4><C5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ
|
|||
|
void OnPetButtonClicked(int index)
|
|||
|
{
|
|||
|
// ѡ<><D1A1><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>ȳ<EFBFBD>Ԥ<EFBFBD><D4A4><EFBFBD><EFBFBD>
|
|||
|
nowChoosePet = petPrefabs[index];
|
|||
|
Debug.Log("Selected Pet: " + nowChoosePet.name);
|
|||
|
}
|
|||
|
|
|||
|
// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>InputField<6C><64><EFBFBD>ݸı<DDB8>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
|||
|
void OnNumberInputChanged(string str)
|
|||
|
{
|
|||
|
if (int.TryParse(str, out int number))
|
|||
|
{
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>ǿ<EFBFBD><C7BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ֵ
|
|||
|
if (number > maxValue)
|
|||
|
{
|
|||
|
number= maxValue;
|
|||
|
inputNum.text = maxValue.ToString();
|
|||
|
}
|
|||
|
// ת<><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD>Ĵ<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>
|
|||
|
string chineseNumber = ConvertToChineseNumber(number);
|
|||
|
|
|||
|
// <20><><EFBFBD>µڶ<C2B5><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
txtLev.text = $"<22><>{chineseNumber}<7D><>";
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
txtLev.text = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"; // <20><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD>Ĵ<EFBFBD>д
|
|||
|
string ConvertToChineseNumber(int number)
|
|||
|
{
|
|||
|
string[] chineseDigits = { "<22><>", "һ", "<22><>", "<22><>", "<22><>", "<22><>", "<22><>", "<22><>", "<22><>", "<22><>" };
|
|||
|
string[] chineseUnits = { "", "ʮ", "<22><>", "ǧ", "<22><>" ,"ʮ<><CAAE>"};
|
|||
|
|
|||
|
string result = "";
|
|||
|
int unitIndex = 0;
|
|||
|
|
|||
|
if (number == 0) return chineseDigits[0]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30>ֱ<EFBFBD>ӷ<EFBFBD><D3B7>ء<EFBFBD><D8A1>㡱
|
|||
|
|
|||
|
while (number > 0)
|
|||
|
{
|
|||
|
int digit = number % 10; // ȡ<><C8A1><EFBFBD><EFBFBD>һλ<D2BB><CEBB><EFBFBD><EFBFBD>
|
|||
|
if (digit > 0 || unitIndex == 0) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD>д<EFBFBD>еġ<D0B5><C4A1><EFBFBD><EFBFBD>١<EFBFBD><D9A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʮ<EFBFBD><CAAE>
|
|||
|
{
|
|||
|
result = chineseDigits[digit] + chineseUnits[unitIndex] + result;
|
|||
|
}
|
|||
|
else if (digit == 0 && result.Length > 0 && result[0] != '<EFBFBD><EFBFBD>') // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
result = "<22><>" + result;
|
|||
|
}
|
|||
|
number /= 10; // ȥ<><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һλ<D2BB><CEBB><EFBFBD><EFBFBD>
|
|||
|
unitIndex++;
|
|||
|
}
|
|||
|
|
|||
|
// <20><><EFBFBD><EFBFBD><E2B4A6>ʮ<EFBFBD><CAAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"ʮ<><CAAE>"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"һʮ<D2BB><CAAE>"
|
|||
|
if (result.StartsWith("һʮ"))
|
|||
|
{
|
|||
|
result = result.Substring(1);
|
|||
|
}
|
|||
|
|
|||
|
// <20>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD>ĩβ<C4A9>Ķ<EFBFBD><C4B6>ࡰ<EFBFBD>㡱
|
|||
|
if (result.EndsWith("<22><>"))
|
|||
|
{
|
|||
|
result = result.TrimEnd('<EFBFBD><EFBFBD>');
|
|||
|
}
|
|||
|
|
|||
|
return result;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
// <20><><EFBFBD><EFBFBD>ť<EFBFBD><C5A5><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ô˺<C3B4><CBBA><EFBFBD>
|
|||
|
public void OnButtonClick()
|
|||
|
{
|
|||
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>б<EFBFBD>ǩΪ "PetObject" <20><><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
|
|||
|
GameObject[] petObjects = GameObject.FindGameObjectsWithTag("PetObject");
|
|||
|
levData = new LevData();
|
|||
|
levData.petInfoList = new List<PetInfo>();
|
|||
|
levData.id = int.Parse(inputNum.text);
|
|||
|
levData.name = txtLev.text;
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
foreach (GameObject petObject in petObjects)
|
|||
|
{
|
|||
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<EFBFBD><78>yλ<79><CEBB>
|
|||
|
x = petObject.transform.position.x;
|
|||
|
y = petObject.transform.position.y;
|
|||
|
|
|||
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԥ<EFBFBD><D4A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
string petName = GetResourcePath(petObject);
|
|||
|
|
|||
|
// <20><><EFBFBD><EFBFBD>PetData<74><61><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5>б<EFBFBD><D0B1><EFBFBD>
|
|||
|
pet = new PetInfo();
|
|||
|
pet.post_x = x;
|
|||
|
pet.post_y = y;
|
|||
|
pet.res = petName;
|
|||
|
|
|||
|
levData.petInfoList.Add(pet);
|
|||
|
}
|
|||
|
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
StartCoroutine(SendDataToServer(levData));
|
|||
|
}
|
|||
|
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
private IEnumerator SendDataToServer(LevData levData)
|
|||
|
{
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>ΪJSON
|
|||
|
string jsonData = LitJson.JsonMapper.ToJson(levData);
|
|||
|
// <20><><EFBFBD><EFBFBD>POST<53><54><EFBFBD><EFBFBD>
|
|||
|
using (UnityWebRequest req = new UnityWebRequest(levDataUploadUrl, "POST"))
|
|||
|
{
|
|||
|
byte[] bodyRaw = new System.Text.UTF8Encoding().GetBytes(jsonData);
|
|||
|
req.uploadHandler = new UploadHandlerRaw(bodyRaw);
|
|||
|
req.downloadHandler = new DownloadHandlerBuffer();
|
|||
|
req.SetRequestHeader("Content-Type", "application/json");
|
|||
|
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴ<F3B2A2B5><C8B4><EFBFBD>Ӧ
|
|||
|
yield return req.SendWebRequest();
|
|||
|
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
|
|||
|
if (req.result == UnityWebRequest.Result.Success)
|
|||
|
{
|
|||
|
string str = req.downloadHandler.text;
|
|||
|
IsSuccessMsg msg = JsonMapper.ToObject<IsSuccessMsg>(str);
|
|||
|
tipPanel.gameObject.SetActive(true);
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
tipPanel.UpdatePanel(msg);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
Debug.LogError("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>: " + req.error);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ַ
|
|||
|
private string GetResourcePath(GameObject petObject)
|
|||
|
{
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD>Ŀʵ<C4BF><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ȡ<EFBFBD><C8A1>Դ<EFBFBD><D4B4>ַ
|
|||
|
// <20><><EFBFBD><EFBFBD>ʹ<EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>Դ<EFBFBD><D4B4>ַ
|
|||
|
return "GameObject/"+petObject.name; // Ԥ<><D4A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
}
|