void Sync() { // ダンジョン生成した情報とScene上のオブジェクト群を同期する m_dungeonMapModules.ForEach(cell => { switch (cell.Status) { case CellStatus.Road: RoadCells.Add(cell); cell.gameObject.SetActive(false); break; case CellStatus.Goal: case CellStatus.Start: cell.gameObject.SetActive(false); break; case CellStatus.DigableWall: case CellStatus.UndigableWall: // cellのカラーをランダムに設定 cell.GetComponent <MeshRenderer>().material.color = new Color(Random.Range(0f, 1f), Random.Range(0f, 1f), Random.Range(0f, 1f), m_alpha); break; } }); }
/// <summary> /// Portalを各地に設定する. 設定場所は各行き止まり地点 /// </summary> void SpawnPortals() { #if false // inspectorで設定した個数分ランダムに排出する var portal = Resources.Load <GameObject>("Portal_green"); foreach (var cell in RoadCells) { if (cell.Status == CellStatus.Start) { continue; } var go = Instantiate(portal, transform); go.transform.localPosition = cell.transform.localPosition; go.transform.localScale = cell.transform.localScale; var vec = Rotation[Random.Range(0, Rotation.Count - 1)]; go.transform.rotation = Quaternion.Euler(vec); AllPortals++; } #else // inspectorで設定した個数分ランダムに排出する var portal = Resources.Load <GameObject>("Portal_green"); for (int i = 0; i < m_spawnPortalVolue; i++) { var cell = RoadCells[Random.Range(0, RoadCells.Count - 1)]; if (cell.Status == CellStatus.Start) { i--; continue; } var go = Instantiate(portal, transform); go.transform.localPosition = cell.transform.localPosition; go.transform.localScale = cell.transform.localScale; var vec = Rotation[Random.Range(0, Rotation.Count - 1)]; go.transform.rotation = Quaternion.Euler(vec); RoadCells.Remove(cell); AllPortals++; } #endif }