Unity/유니티 기본

[4.16] json에서 데이터를 불러오고 게임오브젝트 만들기

ljw4104 2021. 4. 16. 16:47

InGame.cs

using UnityEngine;

public class InGame : MonoBehaviour
{
    public void Init(int characterId)
    {
        var shell = new GameObject();       //빈 게임오브젝트
        shell.name = "Hero";
        var model = CreateModel(characterId);   //밑에서 만든 모델
        model.name = "Model";
        model.transform.SetParent(shell.transform); //모델을 빈껍데기 게임오브젝트의 자식으로 넣음
        var hero = shell.AddComponent<Hero>();      //빈껍데기 게임오브젝트에 히어로 스크립트를 컴포넌트로 삽입
        var info = new CharacterInfo(characterId);  //캐릭터의 정보
        hero.Init(info, model);                     //게임오브젝트에 캐릭터 모델과 정보 삽입
    }

    public GameObject CreateModel(int id)
    {
        var data = DataManager.GetInstance().dicCharacterDatas[id];
        var path = string.Format("Prefabs/{0}", data.res_name);
        var prefab = Resources.Load<GameObject>(path);
        var go = Instantiate<GameObject>(prefab);
        return go;
    }
}
  1. shell이라는 변수에 빈 게임오브젝트 하나 만듬.
  2. 빈 게임오브젝트 아래에 모델 넣기 (transform.SetParent(gameObject.transform))
  3. 빈 오브젝트에 Hero 스크립트를 달아줌. 반환은 Hero 타입으로 반환이 됨.
  4. hero에 모델데이터와 캐릭터 데이터를 넣음.

 

Hero.cs

using UnityEngine;

public class Hero : MonoBehaviour
{
    //데이터
    private CharacterInfo info;
    //모델
    private GameObject model;
    private Animation anim;
    public void Init(CharacterInfo info, GameObject model)
    {
        this.info = info;
        this.model = model;
        this.anim = this.model.GetComponent<Animation>();
    }
}

 

* 결과