using UnityEngine; using System.Collections; using System.Collections.Generic; public class StageManager : MonoBehaviour { public static StageManager Instance; // stages["Attribute"]で取れる public System.Collections.Generic.Dictionary stages = new System.Collections.Generic.Dictionary(); private GameObject baseStage; void Awake () { if (Instance == null) { Instance = this; } } // Use this for initialization void Start () { Init (); SetStage (); CreateStages (10); } void Init () { baseStage = new GameObject (); baseStage.name = "stage"; baseStage.transform.position = Vector3.zero; GameObject.FindGameObjectWithTag ("Player").transform.SetParent (baseStage.transform); } void SetStage () { object[] objects = Resources.LoadAll ("Prefabs/Object"); foreach (var obj in objects) { GameObject gbj = (GameObject)obj; stages.Add(gbj.GetComponent().Attribute, gbj); } } // One. public void CreateStage (Stage.Type attr, Vector3 pos) { GameObject obj = Instantiate (stages[attr]); obj.GetComponent ().SetPosition (pos); obj.transform.SetParent (baseStage.transform); } // Any. public void CreateStages (int count) { for (int x = 0; x < count; x++) { for (int z = 0; z < count; z++) { CreateStage (GetTypes(Random.Range(0,3)), new Vector3 (x, Random.Range(-1, 1), z)); } } } public Stage.Type GetTypes (int n) { if (n == 0) { return Stage.Type.SAND; } else if (n == 1) { return Stage.Type.WOOD; } else { return Stage.Type.GRASS; } } // Update is called once per frame void Update () { } }