커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
질문해결버튼 눌러서 새글로 문의드립니다~
undefined주차
북마크
이*정
댓글
6
추천
1
조회수
38
조회수
38
답변 완료

혹시나 했는데 폰으로 실행해보면 또 지난번처럼 성공해도 멈추지 않고 제한시간이 종료될때 까지 가요~;; 유니티에서는 정상 작동하구요. 지난번이랑 순서도 똑같이 에러가 나고있네요^^;;

게임매니저.cs

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.UI; //시간이 지나가게

using System.Linq; //카드섞기

using UnityEngine.SceneManagement;


public class gameManager : MonoBehaviour

{

  public GameObject card;

  public Text timeTxt; //시간이 지나가게

  float time = 0.0f; //시간이 지나가게

  public static gameManager I; //게임메니저싱글톤화

  public GameObject quit;

  public GameObject retryBtn;


  public GameObject firstCard;

  public GameObject secondCard;


  public AudioClip match;

  public AudioSource audioSource;

  public GameObject endTxt;


  public GameObject endPanel;

  public GameObject endPanel2;

  public GameObject endPanel3;


  public int level = 1; // 레벨을 계산하기위해//public int level = private int level (해킹막기위함)레벨세분화할때 

  

  public Transform cards;


  void Awake()//게임메니저싱글톤화


  {

    Application.targetFrameRate = 60; //프레임조절

    I = this; //게임메니저싱글톤화

     


  }


  // Start is called before the first frame update

  void Start()

  {

    if (level == 1)

    { 

    Time.timeScale = 1.0f;

    int[] mongsyong = { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7 }; 

    mongsyong = mongsyong.OrderBy(item => Random.Range(-1.0f, 1.0f)).ToArray(); //랜덤하게 카드섞기(for문 안에있으면 같은카드여러장나옴! 밖으로빼줘야됨)


      for (int i = 0; i < 16; i++) //i++는 i에 1씩 증가시켜라/ 

      {

        GameObject newCard = Instantiate(card); // newCard수정가능하게함

        newCard.transform.parent = cards.transform; //newcard를 cards로 옮기라


        float x = (i / 4) * 1.4f - 2.1f; //0.1.2.3/ 4.5.6.7/8.9.10.11/12.13.14.15.16/ 4개씩 묶음 (중앙으로 맞추기위해 -2.1f)

        float y = (i % 4) * 1.4f - 3.0f;//4로나눈 나머지를 이용해서 계단식으로 나타나는 부분을 큐브모양으로 바꿀 수있음(중앙으로 맞추기위해 -3.0f)

        newCard.transform.position = new Vector3(x, y, 0);

        // this.transform.localScale = new Vector3(1.0f, 0.0f, 0.0f); (카드장수 많아지면 카드사이즈 줄일때 필요한 코드~!!)


        string mongsyongName = "mongsyong" + mongsyong[i].ToString(); //이미지 불러오기, 몽숑 i번째 숫자를 불러와서 그것을 문자로 바꾼다음 합쳐줌

        newCard.transform.Find("front").GetComponent<SpriteRenderer>().sprite = Resources.Load<Sprite>(mongsyongName);

        //     newcard에 sprite이미지를 (front에 sprite) 불러와서    = resources에서 불러온 이미지(mongsyongName)로 바꿔줌


      }


    }

    if (level == 2 )

    {

      int level = 2;

      Time.timeScale = 1.0f;

      int[] mongsyong = { 0, 0, 2, 2, 3, 3, 4, 4, 5, 5, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11 };

      mongsyong = mongsyong.OrderBy(item => Random.Range(-1.0f, 1.0f)).ToArray(); //랜덤하게 카드섞기


      for (int i = 0; i < 20; i++) //for 반복적 작업(i값을 반복 출력 : 언제까지 반복할것인가/ i++는 i에 1씩 증가시켜라/ 20장까지반복

      {

        GameObject newCard = Instantiate(card);

        newCard.transform.parent = cards.transform; //newcard를 cards로 옮기라


        float x = (i % 4) * 1.4f - 2.1f; //0.1.2.3/ 4.5.6.7/8.9.10.11/12.13.14.15.16/ 4개씩 묶음

        float y = (i / 4) * 1.4f - 4.0f;//4로나눈 나머지를 이용해서

        newCard.transform.position = new Vector3(x, y, 0);


        string mongsyongName = "mongsyong" + mongsyong[i].ToString();

        newCard.transform.Find("front").GetComponent<SpriteRenderer>().sprite = Resources.Load<Sprite>(mongsyongName);


      }


    }

    if (level == 3)

    {

      int level = 3;

      Time.timeScale = 1.0f;

      int[] mongsyong = { 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11 };

      mongsyong = mongsyong.OrderBy(item => Random.Range(-1.0f, 1.0f)).ToArray(); //랜덤하게 카드섞기


      for (int i = 0; i < 24; i++) //for 반복적 작업(i값을 반복 출력 : 언제까지 반복할것인가/ i++는 i에 1씩 증가시켜라/ 20장까지반복

      {

        GameObject newCard = Instantiate(card);

        newCard.transform.parent = cards.transform; //newcard를 cards로 옮기라


        float x = (i % 4) * 1.4f - 2.1f; //0.1.2.3/ 4.5.6.7/8.9.10.11/12.13.14.15.16/ 4개씩 묶음

        float y = (i / 4) * 1.4f - 4.0f;//4로나눈 나머지를 이용해서

        newCard.transform.position = new Vector3(x, y, 0);


        string mongsyongName = "mongsyong" + mongsyong[i].ToString();

        newCard.transform.Find("front").GetComponent<SpriteRenderer>().sprite = Resources.Load<Sprite>(mongsyongName);


      }


    }

  }


  private int LoadScene(string v) //if (level1 == LoadScene("MainScene"))넣을때 이거 넣으니까 오류사라짐

  {

    throw new System.NotImplementedException();

  }


  // Update is called once per frame

  void Update()

  {

    time += Time.deltaTime; //시간이 지나가게

    timeTxt.text = time.ToString("N2"); //시간이 지나가게


    if (level==1 && time > 30f)

    {

      endPanel.SetActive(true);

      Time.timeScale = 0.0f;

    }

    if (level == 2 && time > 30f)

    {

      endPanel.SetActive(true);

      Time.timeScale = 0.0f;

    }

    if (level == 3 && time > 40f)

    {

      endPanel.SetActive(true);

      Time.timeScale = 0.0f;

    }


  }

  public void isMatched()

  {

    int cardsLeft = GameObject.Find("cards").GetComponentsInChildren<card>().Where((card) => card.gameObject.activeSelf == true).Count(); //1단계성공 후에도 카드2장남음 인식 못하고 제한시간까지 지난 후 종료되는 문제

    Debug.Log(cardsLeft);

    string firstCardImage = firstCard.transform.Find("front").GetComponent<SpriteRenderer>().sprite.name; //첫번째 카드 불러오기

    string secondCardImage = secondCard.transform.Find("front").GetComponent<SpriteRenderer>().sprite.name; //두번째 카드 불러오기

    if (firstCardImage == secondCardImage)


    {

      audioSource.PlayOneShot(match);


      firstCard.GetComponent<card>().destroyCard();

      secondCard.GetComponent<card>().destroyCard();

       


      if (cardsLeft == 2)// if (cardsLeft == 2)에서 변경.1단계성공 후에도 카드2장남음 인식 못하고 제한시간까지 지난 후 종료되는 문제 

      {

        //level = +1; 레벨올리는 시점을 넥스트버튼 하나로 고정되어있어 중복되어 삭제

        GameEnd();

        Time.timeScale = 0.001f; //시간종료 0.0f;에서 변경..1단계성공 후에도 카드2장남음 인식 못하고 제한시간까지 지난 후 종료되는 문제 


      }

      else if (cardsLeft == 2 && level == 3)//cardsLeft == 2)에서 변경

      {


        GameEnd();

        Time.timeScale = 0.001f; //시간종료.0.0f;에서 변경


      }


    }

  else

  {

      firstCard.GetComponent<card>().closeCard();

      secondCard.GetComponent<card>().closeCard();

    }


  firstCard = null; //메칭이 끝나면 첫번째 카드비워주기

  secondCard = null;//매칭이 끝나면 두번재 카드비워주기


  }

  void GameEnd()

  {

    Debug.Log(4);


    if (level == 1)

    {

      endPanel2.SetActive(true);

    }

    else if (level == 2)

    {

      endPanel2.SetActive(true);

    }

    else if (level == 3)

    {

      endPanel3.SetActive(true);

    }

    Time.timeScale = 0.001f;

    //endPanel.SetActive(true);

    // endPanel2.SetActive(true);

    //Time.timeScale = 0.0f;

  }

  public void GameQuit()

  {

    Application.Quit();

  }

  public void retry()

  {

    if (level == 1)

    {

      SceneManager.LoadScene("MainScene");

    }

    if (level == 2)

    {

      SceneManager.LoadScene("MainScene2");

    }

    if (level == 3)

    {

      SceneManager.LoadScene("MainScene3");

    }

  }


  // public void nextBtn()

  // {


   // SceneManager.LoadScene("MainScene2");

  // }

 


}


취소
 공유
취소
댓글 0
댓글 알림
나의얼굴