Unity/UIUX프로그래밍

0428 _ 데이터 불러와서 캐릭터 조립하기

minquu 2021. 4. 28. 18:22
반응형

캐릭터의 데이터를 기반으로

 

처음에는 캐릭터가 씬에 없다가, 조립해서 나오는 걸 하려고합니다.

 

 

0.먼저 캐릭터의 데이터가 필요합니다. 

 

프리팹 네임이 중요, 네임으로 프리팹을 찾아서 넣을 것 이기 때문에.

 

 

1.데이터를 관리해주는 곳에서 딕셔너리를 만들어서 characterDatas에 값을 넣어준다. 

 

 

2. 프리팹만 넣는 딕셔너리를 하나 만들어 줘서, 데이터의 프리팹 이름으로 프리팹 딕셔너리를 넣어준다.

 

프리팹이 들어갈 딕셔너리를 만들어준다.

 

 

 foreach (var pair in this.diccharacterDatas)

 

characterDatas 의 값을 pair에 넣어준다.

 

var go = Resources.Load<GameObject>(pair.Value.prefab_name);

 

리소스 폴더에 들어가 있는 프리팹들을 characterDatas에 있는 프리팹 네임으로 go에 가져다 넣는다.

 

this.dicPrefabs.Add(pair.Value.id, go);

 

딕셔너리. Add ( key, value) 로 

키 값은 캐릭터딕셔너리의 id로, 값은 불러와진 프리팹 (go) 으로 딕셔너리에 넣어준다.

 

 

 

3. 영웅(캐릭터)을 만드는 메서드를 만들어줍니다. 

 

  public void CreateHero(int id) {

먼저 메서드에서는 id 값을 받습니다.

 

  GameObject go = new GameObject(); // 빈 쉘을 만들어준다.

 

★★빈 게임오브젝트를 만들어줍니다.

 

var data = this.diccharacterDatas[id];

 

data 에 위에서 받은 id 값으로 characterDatas의 값을 넣어줍니다.

 

go.name = data.prefab_name;

빈 오브젝트의 이름을 딕셔너리의 프리팹 네임의 값으로 바꿔줍니다.

 

var model = Instantiate<GameObject>(this.dicPrefabs[id]);

 

model에 프리팹딕셔너리에 값을 (id로 찾은) [프리팹] 넣어줍니다.

 

 

model.transform.SetParent(go.transform);

그리고 모델을 go(빈 오브젝트)의 밑으로 넣어줍니다.

 

 

model.name = "model";

모델 이름을 "model" 로 바꿔줍니다.

 

 

this.hero = go.AddComponent<Hero>();

히어로 변수에, go에 있는 Hero 스크립터를 넣어줍니다.

 

this.hero.Init(model, data);

 

그리고 그 히어로 변수에 값을 넣어서 초기화(값을 넣어서 내부에서 변수에 넣어주는)를 해줍니다. 

 

 

--

 

4. 위(관리해주는 곳)에서 받은 초기화 값을 Hero 스크립터에서 그 값을 넣어줍니다.

 

 

 

 

 

     this.data = data;
        this.model = model;

 

CharacterData data 에 data

Gameobject 형식의 model 에 받은 model

 

this.anim = this.model.GetComponent<Animator>();

 현재 anim은 model (만들어지는 프리팹) 안에 있는 Animator의 값을 넣어준다.

 

 

this.anim.Play("idle");

 

초기화 할때,  idle로 애니메이션이 나오게한다..

 

---

 

 

캐릭터가 소환이 된다.

 

 

반응형