void CreateMap() { GameObject newGo = new GameObject(); newGo.name = this.mapData.map_id.ToString(); // 그라운드를 만든다. GameObject groundPrefab = PrefabsManager.GetInstance().dicGroundPrefabs[mapData.groundName]; Instantiate(groundPrefab).transform.parent = newGo.transform; // 환경을 배치한다. for (int i = 0; i < mapData.listEnvirnment.Count; i++) { GameObject envirGo = PrefabsManager.GetInstance().dicEnvironmentPrefabs[mapData.listEnvirnment[i].name]; Vector3 pos = new Vector3(mapData.listEnvirnment[i].x, mapData.listEnvirnment[i].y, 0); Instantiate(envirGo, pos, Quaternion.identity).transform.parent = newGo.transform; } // 그리드를 생성한다. grid.gridWorldSize = new Vector2(mapData.grid_x, mapData.grid_y); grid.nodeRadius = mapData.node_radius; grid.CreateGrid(); }
private void Initialize() { effectPoolTr = new GameObject().transform; effectPoolTr.gameObject.name = "EffectPool"; effectPoolTr.parent = transform; // 프리펩 매니저에 있는 이펙트 프리펩을 가져온다. var newDicEffect = PrefabsManager.GetInstance().dicEffectPrefabs; // 프리펩들을 돌면서 인스턴스를 생성한다. foreach (KeyValuePair <string, GameObject> e in newDicEffect) { // 같은 이름의 이펙트가 없다면. if (!this.dicEffect.ContainsKey(e.Key)) { // 리스트를 생성하고. this.dicEffect.Add(e.Key, new Stack <GameObject>()); // 리스트에 풀을 생성한다. for (int i = 0; i < effectCnt; i++) { GameObject effect = GameObject.Instantiate(e.Value); effect.transform.parent = effectPoolTr; effect.SetActive(false); this.dicEffect[e.Key].Push(effect); } } } }
void Start() { stateInformation = new StateInformation(); interfaceManager = InterfaceManager.GetInstance(); prefabsManager = PrefabsManager.GetInstance(); levelController = LevelController.instance; levelDataManager = LevelDataManager.GetInstance(); startupModule = (IStartupModule)StartupModule.GetInstance(); objectDeletionModule = (IObjectDeletionModule)ObjectDeletionModule.GetInstance(); objectPlacementModule = (IObjectPlacementModule)ObjectPlacementModule.GetInstance(); objectEditingModule = (IObjectEditingModule)ObjectEditingModule.GetInstance(); objectInformationModule = (IObjectInformationModule)ObjectInformationModule.GetInstance(); GameObject leftMouseButtonObject = Instantiate(mouseButtonPrefab, transform); leftMouseButton = leftMouseButtonObject.GetComponent <MouseButton>(); GameObject rightMouseButtonObject = Instantiate(mouseButtonPrefab, transform); rightMouseButton = rightMouseButtonObject.GetComponent <MouseButton>(); leftMouseButton.Setup(0, mouseButtonLeftPressedTime); rightMouseButton.Setup(1, cameraDragTime); prefabsManager.AddPrefabs(); interfaceManager.SetupUI(prefabsManager.GetPrefabTable()); InitializeLevel(initialLevelWidth, initialLevelHeight); SetupLevel(); }
void CreateBase(string baseName) { // 그라운드 생성. GameObject basePrefab = PrefabsManager.GetInstance().dicBasePrefabs[baseName]; goBase = Instantiate(basePrefab); }
void CreateGround(MapData data) { // 그라운드 생성. GameObject groundPrefab = PrefabsManager.GetInstance().dicGroundPrefabs[data.groundName]; var go = Instantiate(groundPrefab, new Vector3(0, 0, 0), Quaternion.identity); go.transform.parent = mapTr; }
IEnumerator CreateEffectImpl(string name, Vector2 pos, float size, bool isReverse) { // 딕셔너리에 키가 있는지 확인한다. if (!this.dicEffect.ContainsKey(name)) { yield break; } // 입력받은 키의 밸류. // 즉 스택. Stack <GameObject> effects = this.dicEffect[name]; // 스택이 0이라면. // 새로 생성해서 넣어놔야 한다. if (effects.Count <= 0) { for (int i = 0; i < effectCnt; i++) { // 프리펩은 프리펩 매니저를 통해 가져온다. GameObject effect = GameObject.Instantiate(PrefabsManager.GetInstance().dicEffectPrefabs[name]); effect.transform.parent = effectPoolTr; effect.SetActive(false); effects.Push(effect); } } // 이펙트를 하나 꺼내고. // 설정한다. // 반환할 이펙트 GameObject newEffect = null; newEffect = effects.Pop(); float newSize = Mathf.Clamp(size * 1.3f, 0.8f, 4f); pos.y -= size; newEffect.transform.localScale = new Vector3(newSize, newSize, newSize); newEffect.transform.position = pos; if (isReverse) { var trParticle = newEffect.transform.Find("Particle System"); if (trParticle != null) { trParticle.localScale = new Vector3(-1, 1, 1); } } newEffect.SetActive(true); yield return(new WaitForSeconds(3)); newEffect.SetActive(false); effects.Push(newEffect); }
private void SpriteInit() { for (int i = 0; i < panCount; i++) { this.mapPrefabName.Add(DataManager.GetInstance().dicMapData[this.userMapNum[i]].groundName); var groundPrefab = PrefabsManager.GetInstance().dicGroundPrefabs[mapPrefabName[i]]; var sprite = groundPrefab.GetComponentInChildren <SpriteRenderer>().sprite; this.mapSprite.Add(sprite); } }
/* * 필요한 데이터를 로드한다. * 필요한 프리펩을 로드한다. */ private void Awake() { // 데이터 매니저를 생성해 놓는다. DataManager.GetInstance(); PrefabsManager.GetInstance(); // 사운드 로딩. if (YellowBean.SoundManager.Instance != null) { YellowBean.SoundManager.Instance.Init(); } }
void CreateEnvironment(MapData data) { // 환경 생성. for (int i = 0; i < data.listEnvirnment.Count; i++) { GameObject envirGo = PrefabsManager.GetInstance().dicEnvironmentPrefabs[data.listEnvirnment[i].name]; Vector3 pos = new Vector3(data.listEnvirnment[i].x, data.listEnvirnment[i].y, 0); var go = Instantiate(envirGo, pos, Quaternion.identity); go.transform.parent = mapTr; } }
private void CreateArrow() { // 화살 프리펩을 가져온다. GameObject arrowPrefab = PrefabsManager.GetInstance().GetProjectilePrefab(YBEnum.eProjectileType.Arrow); // 프리펩을 만든다. for (int i = 0; i < arrowCnt; i++) { GameObject arrowGo = Instantiate(arrowPrefab); arrowGo.SetActive(false); arrowGo.transform.parent = arrowPoolTr; Arrow arrow = arrowGo.GetComponent <Arrow>(); arrowPool.Push(arrow); } }
private void CreateMagic() { // 매직 프리펩을 가져온다. GameObject magicPrefab = PrefabsManager.GetInstance().GetProjectilePrefab(YBEnum.eProjectileType.Magic); // 프리펩을 만든다. for (int i = 0; i < magicCnt; i++) { GameObject magicGo = Instantiate(magicPrefab); magicGo.SetActive(false); magicGo.transform.parent = magicPoolTr; Magic magic = magicGo.GetComponent <Magic>(); magicPool.Push(magic); } }
private void CreateStone() { // 화살 프리펩을 가져온다. GameObject stonePrefab = PrefabsManager.GetInstance().GetProjectilePrefab(YBEnum.eProjectileType.Stone); // 프리펩을 만든다. for (int i = 0; i < stoneCnt; i++) { GameObject stoneGo = Instantiate(stonePrefab); stoneGo.SetActive(false); stoneGo.transform.parent = stonePoolTr; Stone stone = stoneGo.GetComponent <Stone>(); stonePool.Push(stone); } }
void CreateMap() { GameObject newGo = new GameObject(); newGo.name = this.mapData.map_id.ToString(); // 그라운드를 만든다. GameObject groundPrefab = PrefabsManager.GetInstance().dicGroundPrefabs[mapData.groundName]; Instantiate(groundPrefab).transform.parent = newGo.transform; // 환경을 배치한다. for (int i = 0; i < mapData.listEnvirnment.Count; i++) { GameObject envirGo = PrefabsManager.GetInstance().dicEnvironmentPrefabs[mapData.listEnvirnment[i].name]; Vector3 pos = new Vector3(mapData.listEnvirnment[i].x, mapData.listEnvirnment[i].y, 0); Instantiate(envirGo, pos, Quaternion.identity).transform.parent = newGo.transform; } // 초록 베이스 { GameObject basePrefab = PrefabsManager.GetInstance().dicBasePrefabs[mapData.greenBaseName]; var go = Instantiate(basePrefab, new Vector3(0, 0, 100), Quaternion.identity); } // 노랑 베이스 { GameObject basePrefab = PrefabsManager.GetInstance().dicBasePrefabs[mapData.yellowBaseName]; var go = Instantiate(basePrefab, new Vector3(0, 0, 100), Quaternion.identity); } // 그리드를 생성한다. var grid = GetComponent <YellowBean.Grid>(); grid.gridWorldSize = new Vector2(mapData.grid_x, mapData.grid_y); grid.nodeRadius = mapData.node_radius; grid.CreateGrid(); // 세이브 버튼을 활성화 한다. btnSave.enabled = true; }
void StoryModeSort() { // 나머지 버튼을 초기화 한다. { for (int ii = 0; ii < trStroyContent.childCount; ii++) { var child = trStroyContent.GetChild(ii); child.GetComponent <UIStoryStageItem>().IsSelect = false; } } trStroyContent.GetChild(0).GetComponent <UIStoryStageItem>().IsSelect = true; // 1번 스테이지 var stageData = DataManager.GetInstance().dicStoryStageData[1]; // 플레이 데이터를 설정한다. PlayData.id = stageData.id; PlayData.map_id = stageData.map_id; PlayData.cost = stageData.cost; PlayData.Mode = PlayData.ePlayMode.Story; PlayData.listUnitInfos = stageData.listUnitInfos; // Desc를 설정한다. txtStoryStageDesc.text = DataManager.GetInstance().dicStoryStageData[PlayData.id].desc; // 썸네일 var mapData = DataManager.GetInstance().dicMapData[PlayData.map_id]; Sprite mapSprite = PrefabsManager.GetInstance().dicGroundPrefabs[mapData.groundName].GetComponentInChildren <SpriteRenderer>().sprite; imgStoryThumb.sprite = mapSprite; imgStoryThumb.color = Color.white; // 리스트 맨 위로 trStroyContent.GetComponent <RectTransform>().anchoredPosition3D = Vector3.zero; }
public Unit CreateUnit(YBEnum.eUnitName unitName, YBEnum.eColorType colorType, Vector2 position) { // 유닛 프리펩과 모델을 가져온다. GameObject unitPrefab = PrefabsManager.GetInstance().GetUnitPrefab(unitName); GameObject modelPrefab = PrefabsManager.GetInstance().GetModelPrefab(unitName, colorType); // 유닛을 생성한다. GameObject unitGo = Instantiate(unitPrefab, Vector3.zero, Quaternion.identity); // 모델을 생성한다. // 이름을 모델로 변경한다. // 트랜스폼을 조정한다. GameObject modelGo = Instantiate(modelPrefab); modelGo.name = "Model"; modelGo.transform.parent = unitGo.transform; // 유닛의 위치를 변경한다. unitGo.transform.position = position; // 유닛의 태그를 설정한다. unitGo.tag = colorType.ToString(); // 유닛 정보를 초기화 한다. Unit unit = unitGo.GetComponent <Unit>(); if (unit.status == null) { UnitData data = DataManager.GetInstance().GetUnitData(unitName.ToString()); // 유닛 데이터를 복사해서 생성한다. unit.status = new UnitData(data); } return(unit); }
void Start() { prefabsManager = PrefabsManager.GetInstance(); levelCreator = LevelCreator.GetInstance(); }
private void StoryModeInit() { /* 스테이지 목록을 쭉 불러온다. */ for (int i = 0; i < 20; i++) { // 스테이지 데이터가 없으면. // 넘어간다. if (!DataManager.GetInstance().dicStoryStageData.ContainsKey(i + 1)) { continue; } // 1번 스테이지 부터 20번 스테이지 까지. var stageData = DataManager.GetInstance().dicStoryStageData[i + 1]; // 아이템을 생성한다. GameObject go = Instantiate(itemStoryStage); go.transform.SetParent(trStroyContent); go.transform.localRotation = Quaternion.Euler(Vector3.zero); var rt = go.GetComponent <RectTransform>(); rt.anchoredPosition3D = Vector3.zero; // 아이템 정보를 세팅한다. var item = go.GetComponent <UIStoryStageItem>(); item.IsSelect = false; // 타이틀을 설정한다. string stageTitle = string.Format("STAGE {0}", stageData.id); item.txtTitle.text = stageTitle; // 별을 기본 -1로 설정한다. // 잠금 이미지. item.StarCnt = -1; // 유저 정보를 기반으로 다시 생성한다. if (DataManager.GetInstance().userInfo.arrStageInfo.Length > i) { var stageInfo = DataManager.GetInstance().userInfo.arrStageInfo[i]; if (stageInfo.opened) { item.StarCnt = stageInfo.starCnt; } } // 버튼을 추가한다. var btn = go.GetComponent <Button>(); btn.onClick.AddListener(() => { // 나머지 버튼을 초기화 한다. { for (int ii = 0; ii < trStroyContent.childCount; ii++) { var child = trStroyContent.GetChild(ii); child.GetComponent <UIStoryStageItem>().IsSelect = false; } } btn.GetComponent <UIStoryStageItem>().IsSelect = true; // 플레이 데이터를 설정한다. PlayData.id = stageData.id; PlayData.map_id = stageData.map_id; PlayData.cost = stageData.cost; PlayData.Mode = PlayData.ePlayMode.Story; PlayData.listUnitInfos = stageData.listUnitInfos; // Desc를 설정한다. txtStoryStageDesc.text = DataManager.GetInstance().dicStoryStageData[PlayData.id].desc; // 썸네일 var mapData = DataManager.GetInstance().dicMapData[PlayData.map_id]; Sprite mapSprite = PrefabsManager.GetInstance().dicGroundPrefabs[mapData.groundName].GetComponentInChildren <SpriteRenderer>().sprite; imgStoryThumb.sprite = mapSprite; imgStoryThumb.color = Color.white; }); } // 플레이 버튼을 초기화 한다. btnStoryPlay.onClick.AddListener(() => { YellowBean.SoundManager.Instance.PlayBgm("Castle Attack", true, 0.2f); UnityAnalyticsManager.GetInstance().OnClickButton(); if (PlayData.id == -1) { return; } App.Instance.LoadScene(playScneName); }); btnOption.onClick.AddListener(() => { this.option.SetActive(true); }); // 유저 총 별 개수를 표시한다. int startCnt = DataManager.GetInstance().GetStarCnt(); txtTotalStarts.text = startCnt.ToString(); }
void InitializeUI() { foreach (var e in PrefabsManager.GetInstance().dicUnitPrefabs) { GameObject unitGo = e.Value; Unit unit = unitGo.GetComponent <Unit>(); if (DataManager.GetInstance().HasUnitData(unit.name)) { Toggle toggle = Instantiate(unitSelectTogglePrefab); toggle.transform.parent = toggleGroup.transform; toggle.group = toggleGroup; toggle.isOn = false; toggle.name = unit.name; toggle.GetComponentInChildren <Text>().text = DataManager.GetInstance().GetUnitData(unit.name).cost.ToString(); toggles.Add(toggle); } } btnStart.onClick.AddListener(() => { if (listUnit == null) { return; } foreach (var unit in listUnit) { unit.onAi = true; } }); btnReset.onClick.AddListener(() => { if (listUnit == null) { return; } foreach (var unit in listUnit) { Destroy(unit.gameObject); } listUnit.Clear(); }); btnUndo.onClick.AddListener(() => { if (listUnit == null) { return; } if (listUnit.Count <= 0) { return; } Unit unit = listUnit[listUnit.Count - 1]; Destroy(unit.gameObject); listUnit.Remove(unit); }); }
void GetStagesResponse(string data, int sortType) { // 디시리얼라이즈 한다. var res_getAllStages = JsonConvert.DeserializeObject <Protocol.res_getStages>(data); if (res_getAllStages == null) { Protocol.ResponseError(Protocol.eErrorType.Null); return; } if (res_getAllStages.cmd != 400) { Protocol.ResponseError(Protocol.eErrorType.getAllStages); return; } for (int i = 0; i < trUserContent.childCount; i++) { Destroy(trUserContent.GetChild(i).gameObject); } userModeDesc.Init(-99, null, null, null, null, null); sortToggle.Toggle(sortType); int cnt = res_getAllStages.arrStageInfo.Length; for (int i = 0; i < cnt; i++) { var stageInfo = res_getAllStages.arrStageInfo[i]; // 위치를 설정한다. var item = Instantiate <UIUserStageItem>(itemUserStage); item.transform.SetParent(trUserContent); item.transform.localRotation = Quaternion.Euler(Vector3.zero); if (i == 0) { item.IsSelect = true; } else { item.IsSelect = false; } RectTransform rt = item.GetComponent <RectTransform>(); rt.anchoredPosition3D = Vector3.zero; // 정보를 설정한다. item.SetUserStage(stageInfo.stage_id, stageInfo.title); // 버튼 기능을 추가한다. var btn = item.GetComponent <Button>(); btn.onClick.AddListener(() => { // 나머지 버튼을 초기화 한다. { for (int ii = 0; ii < trUserContent.childCount; ii++) { var child = trUserContent.GetChild(ii); child.GetComponent <UIUserStageItem>().IsSelect = false; } } btn.GetComponent <UIUserStageItem>().IsSelect = true; // 플레이 데이터를 채운다. PlayData.id = stageInfo.stage_id; PlayData.map_id = stageInfo.map_id; PlayData.Mode = PlayData.ePlayMode.User; PlayData.cost = DataManager.GetInstance().dicMapCost[PlayData.map_id].cost; PlayData.score = stageInfo.elapsed_score; string desc = string.Format("[{0}][{1}]", PlayData.id, stageInfo.title); string name = stageInfo.user_name; userModeDesc.Init( sortType, stageInfo.favorite_count.ToString(), stageInfo.clear_count.ToString(), stageInfo.elapsed_score.ToString(), stageInfo.created_at, name); // 썸네일 var mapData = DataManager.GetInstance().dicMapData[PlayData.map_id]; Sprite mapSprite = PrefabsManager.GetInstance().dicGroundPrefabs[mapData.groundName].GetComponentInChildren <SpriteRenderer>().sprite; imgUserThumb.sprite = mapSprite; imgUserThumb.color = Color.white; }); } // 첫번째 스테이지 활성화 { var stageInfo = res_getAllStages.arrStageInfo[0]; // 플레이 데이터를 채운다. PlayData.id = stageInfo.stage_id; PlayData.map_id = stageInfo.map_id; PlayData.Mode = PlayData.ePlayMode.User; PlayData.cost = DataManager.GetInstance().dicMapCost[PlayData.map_id].cost; PlayData.score = stageInfo.elapsed_score; string desc = string.Format("[{0}][{1}]", PlayData.id, stageInfo.title); userModeDesc.Init( sortType, stageInfo.favorite_count.ToString(), stageInfo.clear_count.ToString(), stageInfo.elapsed_score.ToString(), stageInfo.created_at, stageInfo.user_name); // 썸네일 var mapData = DataManager.GetInstance().dicMapData[PlayData.map_id]; Sprite mapSprite = PrefabsManager.GetInstance().dicGroundPrefabs[mapData.groundName].GetComponentInChildren <SpriteRenderer>().sprite; imgUserThumb.sprite = mapSprite; imgUserThumb.color = Color.white; // 리스트 맨 위로 trUserContent.GetComponent <RectTransform>().anchoredPosition3D = Vector3.zero; } }