728x90

 드디어 답변을 받고 이해가 가서 로그인시 직업을 받아올수있게되었습니다..

 public void GetmyClass()
    {

        var bro = Backend.GameData.GetMyData("Character", new Where(), 10);
        if (bro.IsSuccess() == false)
        {
            // 요청 실패 처리
            Debug.Log(bro);
            return;
        }
        if (bro.GetReturnValuetoJSON()["rows"].Count <= 0)
        {
            // 요청이 성공해도 where 조건에 부합하는 데이터가 없을 수 있기 때문에
            // 데이터가 존재하는지 확인
            // 위와 같은 new Where() 조건의 경우 테이블에 row가 하나도 없으면 Count가 0 이하 일 수 있다.
            Debug.Log(bro);
            return;
        }
        // 검색한 데이터의 모든 row의 inDate 값 확인
        for (int i = 0; i < bro.Rows().Count; ++i)
        {
            var inDate = bro.Rows()[i]["MyClass"]["S"].ToString();
            Debug.Log(inDate);
        }



    }

닉네임으로 유저정보를 받아올려고 그렇게 기를썼는데 그렇게는 못얻어 온다고 하더라구요 

마지막 구절 FOR문에서 정보를 받아오는거고 이렇게 한결과 

 

 

이런식으로 로그인시 정보를 받아올수 있게되었습니다.

 

이렇게 헤딩 하면서 결과를 받아서 더 잘 이해할수있었고. 

나중에 인벤토리나 이런거할때는 좀 더 수월하게 불러올수 있을거 같습니다.

 

 

그리고 업데이트문에서 닉네임을 계속 그려주는거는 낭비라고생각해서 

코루틴으로 시작해주고 닉네임이 null이 아니라면 스탑코루틴으로하는게 좀더 나을거같아서 그런식으로 코드를 수정해줬습니다.

  public  void Update()
    {
     
            StartCoroutine(GetNickName(nicknameText));
     
       
      
        
        if( nickname != null)
        {
            StopCoroutine(GetNickName(nicknameText));
        }
      
    }

    IEnumerator GetNickName(Text text)
    {
        while(text != null)
        {
            nickname = Backend.UserNickName;
            text.text = nickname;
            yield return null;
        }
    }

 

 

이제 메인신에서 

 

직업에따라 캐릭터가 나오게끔 할예정이며 

 

 

이동 까지 구현해볼 예정이다. 

 

일단 캐릭터 메인신에서 새로 만들어줘야하기때문에 idle 애니메이션 까지는 다 구현 해줄예정이라  만든후 프리팹화 시켜주었다.

이제 메인신 매니저 오브젝트 생성 및 스크립트 생성해준다.

 

 

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MainManager : MonoBehaviour
{
   
    public static MainManager instance;
    private void Awake()
    {
        if (instance == null) instance = this;
        else if (instance != null) return;

    }

    public void CreateCharacter(string myClass)
    {
        switch(myClass)
        {
            case "Archer":
                break;
            case "Paladin":
                break;
            case "Warrior":
                break;
            case "Fighter":
                break;

        }
    }
}

이런식으로 뼈대를 만들어준다

 

인스턴스화는 함수를 만들고 다른데서 갖다쓰기 편하기위해 했고

 

class 를 받아서 switch 로 구별하여 instantiate 를 할예정이고 플레이어가 생성되는위치는 게임오브젝트 생성해놓고 거기 자식으로 들어갈 예정이다.

 

 

 

부모로 했더니 부모쪽에 콜라이더가 없어 계속 떨어져가지구 부모쪽으로 말고 transform 만 같도록해줄예정이다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using BackEnd;
using UnityEngine.UI;

public class MainManager : MonoBehaviour
{
   
    public static MainManager instance;
    public string myclass;
    public Transform StartPosition;
    public Image playersimbol;
    public Sprite[] Icon;
    RectTransform rectTransform;
    public Text Uiclass;
    private void Awake()
    {
        if (instance == null) instance = this;
        else if (instance != null) return;

    }
    private void Start()
    {

        CreateCharacter();
        var bro = Backend.GameData.GetMyData("Character", new Where(), 10);
        for (int i = 0; i < bro.Rows().Count; ++i)
        {
            myclass = bro.Rows()[i]["MyClass"]["S"].ToString();
            // Debug.Log(myclass);
            Uiclass.text = "("+myclass+")";
        }
        rectTransform = (RectTransform)playersimbol.transform;
    }



    public void CreateCharacter( )
    {
        var bro = Backend.GameData.GetMyData("Character", new Where(), 10);
        for (int i = 0; i < bro.Rows().Count; ++i)
        {
            myclass = bro.Rows()[i]["MyClass"]["S"].ToString();
            // Debug.Log(myclass);
        }
        switch (myclass)
        {
            case "Archer":
                Debug.Log("CreateArcher");
                GameObject Archer = Instantiate(Resources.Load("Prefabs/Archer") as GameObject,StartPosition.position,StartPosition.rotation);
                rectTransform.sizeDelta=new Vector2(100,100);
                playersimbol.sprite = Icon[3];


                break;
            case "Paladin":
                Debug.Log("CreatePaladin");
                GameObject Paladin = Instantiate(Resources.Load("Prefabs/Paladin") as GameObject, StartPosition.position, StartPosition.rotation);
                playersimbol.sprite = Icon[1];
                break;
            case "Warrior":
                Debug.Log("CreateWarrior");
                GameObject Warrior = Instantiate(Resources.Load("Prefabs/Warrior") as GameObject, StartPosition.position, StartPosition.rotation);
                playersimbol.sprite = Icon[0];
                break;
            case "Fighter":
                Debug.Log("CreateFighter");
                GameObject Fighter = Instantiate(Resources.Load("Prefabs/Fighter") as GameObject, StartPosition.position, StartPosition.rotation);
                playersimbol.sprite = Icon[2];
                break;

        }
    }   
}

 

이런식으로 동작하게된다. 

오늘은 일단 여기까지만 해야할거같다 클래스를 받고나서 string 에 넣어주는걸로 시간을 너무 잡아먹어서 내일부터는 캐릭터 구현을 할예정이고 일단은 Archer 먼저 구현해보려한다 왜냐면 근접캐릭터는 많이 구현해봤기때문이다.

 

 

반응형