'class'에 해당되는 글 1건

  1. 2015/01/15 글뻥 Unity3D 공용 데이터 Class 만들기
씬간 데이터를 이동한다던가...
씬내에서 SQL처럼 데이터를 읽거나 쓰고 싶을때가 있을 것이다.

이전에는 playerprefs 에다가 JSON으로 데이터를 넣어두고 씬마다 리셋했는데... 
연구를 하다보니 씬 이동에도 불편하게 Dontdestroy 옵션을 설정하지 않아도 사라지지 않는 Entity Class 구현방법을 알게되어 포스팅하게 되었다.

(how to get data in other scene on the unity3d player with C# entity class)

먼저 다음과 같이 List 객체를 가지고 있는 Entity라는 정적 Class를 만들자.
e는 _e class 타입의 List이다. (hash 테이블보다는 일반 DB에 가까워서 List를 자주쓴다. 또한 JSON / XML 의 Deserializing / serializing에 유리하기도 하다.)

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

public static class Entity
{
     public static List<_e> e = new List<_e>();
}

public class _e
{
     public string _s;
}



이제 "test1Behavior" 테스트코드를 다음과 같이 작성하고 Main Camera에 스크립트를 Attach시켜둔다.
using UnityEngine;
using System.Collections;

public class test1Behavior : MonoBehaviour {

void Start () {
 Entity.e.Add(new _e { _s = "1234" });
 Application.LoadLevel(1);
 }
}


씬이름을 test1로 저장하고 새로운 씬을 연다.

위의 코드와 비슷하게 다음과 같이 작성하고 새로운 씬의 Main Camera에 스크립트를 Attach시켜두자.

using UnityEngine;
using System.Collections;

public class test2Behavior : MonoBehaviour {

 void Start () {
 foreach (_e x in Entity.e)
 {
 Debug.Log(x._s);
 }
 }
}


마지막으로 test2로 씬을 저장한 후에 

이로써 모든 작업이 완료 되었다.
build setting 에서 test1와 test2 씬을 차례대로 넣어두자.

이제 실행해보면 다음과 같이 test1Behavior에서 넣어두었던 데이터 "1234"가 새로운 씬에서 작동한다.

사용자 삽입 이미지
2015/01/15 16:06 2015/01/15 16:06