문제 원인 : Goal 스크립트에 씬 로드하는 부분에서 대상 특정을 하지 않아 로드가 계속 반복되는 현상이었음
문제 해결 : 대상을 특정하도록 변경하는 것으로 해결
따로 뭔가를 걸어준건 아니라서 움직이는게 당연하고, 움직임을 제한하는 3가지 방법을 적는다.
- 코드가 길어질수 있음.
private void FixedUpdate() { if ((_player.Animator.GetCurrentAnimatorStateInfo(0).IsName("Spawn") && _player.Animator.GetCurrentAnimatorStateInfo(0).normalizedTime < 1f)|| (_player.Animator.GetCurrentAnimatorStateInfo(0).IsName("Die") && _player.Animator.GetCurrentAnimatorStateInfo(0).normalizedTime < 1f)) { return; } Move(); } //Animator.GetCurrentAnimatorStateInfo(0).normalizedTime //현재 애니메이션의 진행 %를 반환함,
함수 1 + 매개변수 1 해서 씬 전환을 하는 것이 편함
다양한 버튼이 있어도 스크립트 하나로 처리 가능
public class Goal : MonoBehaviour
{
public int StageIndex;
private void OnTriggerEnter2D(Collider2D other)
{
SceneManager.LoadScene($"Stage{StageIndex}");
}
}
이런 느낌으로 작성해서 하나의 스크립트를 재사용할 수도 있음.
패널들이 여러개 있을 경우 각 레이어 단위로 불러오는 기능이 있음. 씬을 계속 전환하면 UI전환 시 맞추기 힘들다.
playerprefs로 마지막 씬이나 마지막 UI를 저장해두고(빠르게 처리할 때)
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DataLoad : MonoBehaviour
{
public class Data_get
{
//json파일이랑 이름 맞춰야됨.
public string version;
public string key;
public string info;
}//저장용 클래스를 따로 파일로 만들어주는게 관리하기 좋음. 딱히 스태틱으로 할 필요도 없음.
public Data_get DataGet;
private void Start()
{
StartCoroutine(WWW_Get());
}
IEnumerator WWW_Get()
{
string url = "https://wou6c330.mycafe24.com/test.php";
WWWForm form = new WWWForm();
form.AddField("send","box");
form.AddField("version","box2");
WWW www = new WWW(url, form);
yield return www;//서버에서 내려받을때까지 기다림.
Debug.Log(www.text);
// DataGet = JsonUtility.FromJson<Data_get>(www.text);
// print(DataGet.version); //Debug.Log가 정석이지만 내용은 똑같음.
yield break;
}
}
post방식은 서버에 저장되어있는 key값에 value를 추가해준다.
통신할 파일은 www폴더하단에 넣어줘야됨. 폴더의 이름을 바꾸면 안된다.