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;
}
}
- shell이라는 변수에 빈 게임오브젝트 하나 만듬.
- 빈 게임오브젝트 아래에 모델 넣기 (transform.SetParent(gameObject.transform))
- 빈 오브젝트에 Hero 스크립트를 달아줌. 반환은 Hero 타입으로 반환이 됨.
- 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>();
}
}
* 결과