public void CreateTower(TowerData towerData, IPlacementArea placementArea, IntVector2 placeGrid, Vector3 position, Quaternion rotation) { if (towerData == null) { return; } TowerLevelData towerLevelData = towerData.GetTowerLevelData(0); if (dataPlayer.Energy < towerLevelData.BuildEnergy) { return; } dataPlayer.AddEnergy(-towerLevelData.BuildEnergy); Tower tower = dataTower.CreateTower(towerData.Id); if (tower == null) { Log.Error("Create tower fail,Tower data id is '{0}'.", towerData.Id); return; } entityLoader.ShowEntity(towerData.EntityId, TypeUtility.GetEntityType(tower.Type), (entity) => { EntityTowerBase entityTowerBase = entity.Logic as EntityTowerBase; dicTowerInfo.Add(tower.SerialId, TowerInfo.Create(tower, entityTowerBase, placementArea, placeGrid)); } , EntityDataTower.Create(tower, position, rotation)); HidePreviewTower(); }