아이템 데이터 질문합니다!

public void GameitemDataInsert() {}
코드가있고

    public void GameitemDataLoad()
    {
        Backend.GameData.GetMyData("USER_ITEM", new Where(), callback =>
        {
            // 게임 정보 불러오기에 성공했을 때
            if (callback.IsSuccess())
            {
                Debug.Log($"게임 정보 데이터 불러오기에 성공했습니다. : {callback}");

                // JSON 데이터 파싱 성공
                try
                {
                    LitJson.JsonData gameDataJson = callback.FlattenRows();

                    // 받아온 데이터의 개수가 0이면 데이터가 없는 것
                    if (gameDataJson.Count <= 0)
                    {
                        Debug.LogWarning("데이터가 존재하지 않습니다.");
                    }
                    else
                    {
                        // 불러온 게임 정보의 고유값
                        gameDataRowInDate = gameDataJson[0]["inDate"].ToString();
                        // 불러온 게임 정보를 userData 변수에 저장
                        userGameitemData.State = int.Parse(gameDataJson[0]["State"].ToString());
                       // userGameitemData.itemname = string.Parse(gameDataJson[0]["itemname"].ToString());
                        userGameitemData.itemAct = bool.Parse(gameDataJson[0]["itemAct"].ToString());
                        userGameitemData.itemCount = int.Parse(gameDataJson[0]["itemCount"].ToString());
                        onGameItemDataLoadEvent?.Invoke();
                    }
                }
                // JSON 데이터 파싱 실패
                catch (System.Exception e)
                {
                    // 유저 정보를 초기값으로 설정
                    userGameitemData.itemReset();
                    // try-catch 에러 출력
                    Debug.LogError(e);
                }
            }
            // 실패했을 때
            else
            {
                Debug.LogError($"게임 정보 데이터 불러오기에 실패했습니다. : {callback}");
            }
        });
    }

여기 불러오는 코드가 있을때
// userGameitemData.itemname = string.Parse(gameDataJson[0][“itemname”].ToString());
userGameitemData.itemAct = bool.Parse(gameDataJson[0][“itemAct”].ToString());
string과 bool형은 어떤식으로 적어야 되는지 궁금하네요 …ㅠㅠ

그리고

public class BackendGameitem : MonoBehaviour {
  [Serializable]
    public class UserGameitemEvent : UnityEngine.Events.UnityEvent { }
    public UserGameitemEvent onGameItemDataLoadEvent = new UserGameitemEvent();

    private static BackendGameitem instance = null;
    public static BackendGameitem Instance
    {
        get
        {
            if (instance == null)
            {
                instance = new BackendGameitem();
            }

            return instance;
        }
    }

    private UserGameitem userGameitemData = new UserGameitem();

    public UserGameitem UserGameitemData => userGameitemData;

    public string gameDataRowInDate = string.Empty;

}

이 앞전의 코드에서 이런식으로 인스턴스를 왜만들어주는지
기능 들이 궁금합니다. 코딩 시작한지 얼마 되지 않아서 어렵네요 ㅠㅠㅠ
도움을 부탁드립니다ㅠㅠ 참고자료는 뒤끝베이스랑 강의를 보면서 하고 있습니다.

아 또한 궁금한것은 아이템 데이터를 넣을때 이런식으로 넣는게 옳은건가요?
차트 데이터들은 동기 비동기 차이가 큰가요?

안녕하세요 개발자님.

다음 변수들은 다음과 같은 식으로 파싱이 가능합니다.
userGameitemData.itemname = gameDataJson[0][“itemname”].ToString();
userGameitemData.itemAct = bool.Parse(gameDataJson[0][“itemAct”].ToString());

어느 참고 자료의 데이터 형태인지는 현재 파악이 어렵지만, static을 통해 Instance를 만드는 이유는 해당 데이터의 활용도가 높아 어느 스크립트에서든 접근을 하기 위해서인 것으로 추측됩니다.

만약 static Instance를 선언하지 않을 경우, BackendGameitem 에 접근하는 모든 스크립트 마다 다음과 같이 수동으로 참조해야하는 로직이 추가되어야하기 때문입니다.

[SerializeField] private UserGameItemEvent;

위 GameData를 파싱하는 것으로 보아 데이터를 넣는 형식은 올바르다고 판단되며,
동기와 비동기의 경우, 함수를 호출하고 기다리는 동안 유니티가 다음 동작을 실행하지 않을 것인지, 외부 쓰레드를 통해 호출에 대한 응답을 기다리고 유니티는 계속 활동하게 할 것인지에 대한 선택입니다.

게임에서는 동기로 호출할 경우, 게임이 멈춘것처럼 보이기 때문에 대부분의 경우에는 사용하지 않지만 순차적으로 호출되기 때문에 코드의 이해가 쉽습니다. 비동기의 경우, 게임이 멈추지 않고 자연스럽게 흘러가지만 순차적으로 구현하기에는 서버를 처음 구현하시는 분에게는 어렵게 느껴질 수 있습니다.

좋아요 2

좋은 답변 덕분에 이해 완료 했습니다. 감사합니다*^^*