Browse Source

关卡选择完成

pull/18/head
45 2 years ago
parent
commit
5441bc91bc
  1. 462
      ColorlessWorld-2024-4-2/Assets/GameDate/LevelDate/LevelState_1.asset
  2. 6
      ColorlessWorld-2024-4-2/Assets/Scenes/ChooseLevelScene_1.unity
  3. 1
      ColorlessWorld-2024-4-2/Assets/Scripts/LeveProcess/LevelDevelopManager.cs
  4. 169
      ColorlessWorld-2024-4-2/Assets/Scripts/LeveProcess/LevelGenerator.cs
  5. 41
      ColorlessWorld-2024-4-2/Assets/Scripts/LeveProcess/LevelNode.cs
  6. 20
      ColorlessWorld-2024-4-2/Assets/Scripts/Tool/Data_SO/LevelDevelopData_SO.cs

462
ColorlessWorld-2024-4-2/Assets/GameDate/LevelDate/LevelState_1.asset

@ -13,4 +13,464 @@ MonoBehaviour:
m_Name: LevelState_1
m_EditorClassIdentifier:
levelStep: 0
levelIndexList: 020000000100000000000000050000000400000000000000
levelSaveMap:
- levelDataList:
- roomType: 0
isUse: 1
nodePos: {x: -94.21361, y: -161.5134, z: 80}
line: 0
column: 0
fatherLevelNodes: []
nextLevelNodes:
- {x: 1, y: 0}
- roomType: 0
isUse: 0
nodePos: {x: -79.213615, y: -161.5134, z: 80}
line: 0
column: 1
fatherLevelNodes: []
nextLevelNodes: []
- roomType: 0
isUse: 0
nodePos: {x: -64.213615, y: -161.5134, z: 80}
line: 0
column: 2
fatherLevelNodes: []
nextLevelNodes: []
- roomType: 0
isUse: 1
nodePos: {x: -49.213615, y: -161.5134, z: 80}
line: 0
column: 3
fatherLevelNodes: []
nextLevelNodes:
- {x: 1, y: 3}
- roomType: 0
isUse: 1
nodePos: {x: -34.213608, y: -161.5134, z: 80}
line: 0
column: 4
fatherLevelNodes: []
nextLevelNodes:
- {x: 1, y: 3}
- levelDataList:
- roomType: 5
isUse: 1
nodePos: {x: -94.21361, y: -139.51338, z: 80}
line: 1
column: 0
fatherLevelNodes:
- {x: 0, y: 0}
nextLevelNodes:
- {x: 2, y: 0}
- roomType: 0
isUse: 0
nodePos: {x: -79.213615, y: -139.51338, z: 80}
line: 1
column: 1
fatherLevelNodes: []
nextLevelNodes: []
- roomType: 4
isUse: 0
nodePos: {x: -64.213615, y: -139.51338, z: 80}
line: 1
column: 2
fatherLevelNodes: []
nextLevelNodes: []
- roomType: 0
isUse: 1
nodePos: {x: -49.213615, y: -139.51338, z: 80}
line: 1
column: 3
fatherLevelNodes:
- {x: 0, y: 4}
- {x: 0, y: 3}
nextLevelNodes:
- {x: 2, y: 3}
- {x: 2, y: 4}
- {x: 2, y: 2}
- roomType: 5
isUse: 0
nodePos: {x: -34.213608, y: -139.51338, z: 80}
line: 1
column: 4
fatherLevelNodes: []
nextLevelNodes: []
- levelDataList:
- roomType: 0
isUse: 1
nodePos: {x: -94.21361, y: -117.513374, z: 80}
line: 2
column: 0
fatherLevelNodes:
- {x: 1, y: 0}
nextLevelNodes:
- {x: 3, y: 1}
- roomType: 0
isUse: 0
nodePos: {x: -79.213615, y: -117.513374, z: 80}
line: 2
column: 1
fatherLevelNodes: []
nextLevelNodes: []
- roomType: 5
isUse: 1
nodePos: {x: -64.213615, y: -117.513374, z: 80}
line: 2
column: 2
fatherLevelNodes:
- {x: 1, y: 3}
nextLevelNodes:
- {x: 3, y: 3}
- roomType: 0
isUse: 1
nodePos: {x: -49.213615, y: -117.513374, z: 80}
line: 2
column: 3
fatherLevelNodes:
- {x: 1, y: 3}
nextLevelNodes:
- {x: 3, y: 4}
- roomType: 3
isUse: 1
nodePos: {x: -34.213608, y: -117.513374, z: 80}
line: 2
column: 4
fatherLevelNodes:
- {x: 1, y: 3}
nextLevelNodes:
- {x: 3, y: 4}
- levelDataList:
- roomType: 0
isUse: 0
nodePos: {x: -94.21361, y: -95.51338, z: 80}
line: 3
column: 0
fatherLevelNodes: []
nextLevelNodes: []
- roomType: 5
isUse: 1
nodePos: {x: -79.213615, y: -95.51338, z: 80}
line: 3
column: 1
fatherLevelNodes:
- {x: 2, y: 0}
nextLevelNodes:
- {x: 4, y: 2}
- roomType: 0
isUse: 0
nodePos: {x: -64.213615, y: -95.51338, z: 80}
line: 3
column: 2
fatherLevelNodes: []
nextLevelNodes: []
- roomType: 5
isUse: 1
nodePos: {x: -49.213615, y: -95.51338, z: 80}
line: 3
column: 3
fatherLevelNodes:
- {x: 2, y: 2}
nextLevelNodes:
- {x: 4, y: 3}
- roomType: 5
isUse: 1
nodePos: {x: -34.213608, y: -95.51338, z: 80}
line: 3
column: 4
fatherLevelNodes:
- {x: 2, y: 3}
- {x: 2, y: 4}
nextLevelNodes:
- {x: 4, y: 3}
- levelDataList:
- roomType: 0
isUse: 0
nodePos: {x: -94.21361, y: -73.513374, z: 80}
line: 4
column: 0
fatherLevelNodes: []
nextLevelNodes: []
- roomType: 0
isUse: 0
nodePos: {x: -79.213615, y: -73.513374, z: 80}
line: 4
column: 1
fatherLevelNodes: []
nextLevelNodes: []
- roomType: 0
isUse: 1
nodePos: {x: -64.213615, y: -73.513374, z: 80}
line: 4
column: 2
fatherLevelNodes:
- {x: 3, y: 1}
nextLevelNodes:
- {x: 5, y: 3}
- roomType: 5
isUse: 1
nodePos: {x: -49.213615, y: -73.513374, z: 80}
line: 4
column: 3
fatherLevelNodes:
- {x: 3, y: 4}
- {x: 3, y: 3}
nextLevelNodes:
- {x: 5, y: 3}
- {x: 5, y: 4}
- roomType: 4
isUse: 0
nodePos: {x: -34.213608, y: -73.513374, z: 80}
line: 4
column: 4
fatherLevelNodes: []
nextLevelNodes: []
- levelDataList:
- roomType: 1
isUse: 0
nodePos: {x: -94.21361, y: -51.51338, z: 80}
line: 5
column: 0
fatherLevelNodes: []
nextLevelNodes: []
- roomType: 1
isUse: 0
nodePos: {x: -79.213615, y: -51.51338, z: 80}
line: 5
column: 1
fatherLevelNodes: []
nextLevelNodes: []
- roomType: 1
isUse: 0
nodePos: {x: -64.213615, y: -51.51338, z: 80}
line: 5
column: 2
fatherLevelNodes: []
nextLevelNodes: []
- roomType: 1
isUse: 1
nodePos: {x: -49.213615, y: -51.51338, z: 80}
line: 5
column: 3
fatherLevelNodes:
- {x: 4, y: 2}
- {x: 4, y: 3}
nextLevelNodes:
- {x: 6, y: 3}
- roomType: 0
isUse: 1
nodePos: {x: -34.213608, y: -51.51338, z: 80}
line: 5
column: 4
fatherLevelNodes:
- {x: 4, y: 3}
nextLevelNodes:
- {x: 6, y: 4}
- levelDataList:
- roomType: 6
isUse: 0
nodePos: {x: -94.21361, y: -29.513384, z: 80}
line: 6
column: 0
fatherLevelNodes: []
nextLevelNodes: []
- roomType: 6
isUse: 0
nodePos: {x: -79.213615, y: -29.513384, z: 80}
line: 6
column: 1
fatherLevelNodes: []
nextLevelNodes: []
- roomType: 6
isUse: 0
nodePos: {x: -64.213615, y: -29.513384, z: 80}
line: 6
column: 2
fatherLevelNodes: []
nextLevelNodes: []
- roomType: 6
isUse: 1
nodePos: {x: -49.213615, y: -29.513384, z: 80}
line: 6
column: 3
fatherLevelNodes:
- {x: 5, y: 3}
nextLevelNodes:
- {x: 7, y: 2}
- {x: 7, y: 4}
- roomType: 6
isUse: 1
nodePos: {x: -34.213608, y: -29.513384, z: 80}
line: 6
column: 4
fatherLevelNodes:
- {x: 5, y: 4}
nextLevelNodes:
- {x: 7, y: 4}
- levelDataList:
- roomType: 0
isUse: 0
nodePos: {x: -94.21361, y: -7.5133915, z: 80}
line: 7
column: 0
fatherLevelNodes: []
nextLevelNodes: []
- roomType: 0
isUse: 0
nodePos: {x: -79.213615, y: -7.513405, z: 80}
line: 7
column: 1
fatherLevelNodes: []
nextLevelNodes: []
- roomType: 1
isUse: 1
nodePos: {x: -64.213615, y: -7.513405, z: 80}
line: 7
column: 2
fatherLevelNodes:
- {x: 6, y: 3}
nextLevelNodes:
- {x: 8, y: 3}
- roomType: 4
isUse: 0
nodePos: {x: -49.213615, y: -7.513405, z: 80}
line: 7
column: 3
fatherLevelNodes: []
nextLevelNodes: []
- roomType: 0
isUse: 1
nodePos: {x: -34.213608, y: -7.513405, z: 80}
line: 7
column: 4
fatherLevelNodes:
- {x: 6, y: 3}
- {x: 6, y: 4}
nextLevelNodes:
- {x: 8, y: 4}
- {x: 8, y: 3}
- levelDataList:
- roomType: 0
isUse: 0
nodePos: {x: -94.21361, y: 14.486603, z: 80}
line: 8
column: 0
fatherLevelNodes: []
nextLevelNodes: []
- roomType: 0
isUse: 0
nodePos: {x: -79.213615, y: 14.486603, z: 80}
line: 8
column: 1
fatherLevelNodes: []
nextLevelNodes: []
- roomType: 3
isUse: 0
nodePos: {x: -64.213615, y: 14.486603, z: 80}
line: 8
column: 2
fatherLevelNodes: []
nextLevelNodes: []
- roomType: 5
isUse: 1
nodePos: {x: -49.213615, y: 14.486603, z: 80}
line: 8
column: 3
fatherLevelNodes:
- {x: 7, y: 2}
- {x: 7, y: 4}
nextLevelNodes:
- {x: 9, y: 4}
- {x: 9, y: 3}
- roomType: 1
isUse: 1
nodePos: {x: -34.213608, y: 14.486603, z: 80}
line: 8
column: 4
fatherLevelNodes:
- {x: 7, y: 4}
nextLevelNodes:
- {x: 9, y: 4}
- levelDataList:
- roomType: 4
isUse: 0
nodePos: {x: -94.21361, y: 36.4866, z: 80}
line: 9
column: 0
fatherLevelNodes: []
nextLevelNodes: []
- roomType: 4
isUse: 0
nodePos: {x: -79.213615, y: 36.4866, z: 80}
line: 9
column: 1
fatherLevelNodes: []
nextLevelNodes: []
- roomType: 4
isUse: 0
nodePos: {x: -64.213615, y: 36.4866, z: 80}
line: 9
column: 2
fatherLevelNodes: []
nextLevelNodes: []
- roomType: 4
isUse: 1
nodePos: {x: -49.213615, y: 36.4866, z: 80}
line: 9
column: 3
fatherLevelNodes:
- {x: 8, y: 3}
nextLevelNodes:
- {x: 10, y: 2}
- roomType: 4
isUse: 1
nodePos: {x: -34.213608, y: 36.4866, z: 80}
line: 9
column: 4
fatherLevelNodes:
- {x: 8, y: 3}
- {x: 8, y: 4}
nextLevelNodes:
- {x: 10, y: 2}
- {x: 10, y: 2}
- {x: 10, y: 2}
- levelDataList:
- roomType: 2
isUse: 0
nodePos: {x: -94.21361, y: 58.486588, z: 80}
line: 10
column: 0
fatherLevelNodes: []
nextLevelNodes: []
- roomType: 2
isUse: 0
nodePos: {x: -79.213615, y: 58.48656, z: 80}
line: 10
column: 1
fatherLevelNodes: []
nextLevelNodes: []
- roomType: 2
isUse: 1
nodePos: {x: -64.213615, y: 58.48656, z: 80}
line: 10
column: 2
fatherLevelNodes:
- {x: 9, y: 4}
- {x: 9, y: 4}
- {x: 9, y: 3}
- {x: 9, y: 4}
nextLevelNodes: []
- roomType: 2
isUse: 0
nodePos: {x: -49.213615, y: 58.48656, z: 80}
line: 10
column: 3
fatherLevelNodes: []
nextLevelNodes: []
- roomType: 2
isUse: 0
nodePos: {x: -34.213608, y: 58.48656, z: 80}
line: 10
column: 4
fatherLevelNodes: []
nextLevelNodes: []

6
ColorlessWorld-2024-4-2/Assets/Scenes/ChooseLevelScene_1.unity

@ -1728,7 +1728,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 1558.7423}
m_AnchoredPosition: {x: 0, y: 1476.9414}
m_SizeDelta: {x: 0, y: 2505.839}
m_Pivot: {x: 0, y: 1}
--- !u!1 &854347190
@ -2165,8 +2165,8 @@ MonoBehaviour:
m_TargetGraphic: {fileID: 758244622}
m_HandleRect: {fileID: 758244621}
m_Direction: 2
m_Value: -0.09321043
m_Size: 0.3460029
m_Value: -0.035840247
m_Size: 0.32936022
m_NumberOfSteps: 0
m_OnValueChanged:
m_PersistentCalls:

1
ColorlessWorld-2024-4-2/Assets/Scripts/LeveProcess/LevelDevelopManager.cs

@ -17,6 +17,7 @@ public class LevelDevelopManager : Singleton<LevelDevelopManager>
public List<LevelNode> levelColumn = new List<LevelNode>();//关卡列表
}
[Header ("房间图标")]
public Sprite monsterIcon;
public Sprite eliteMonsterIcon;

169
ColorlessWorld-2024-4-2/Assets/Scripts/LeveProcess/LevelGenerator.cs

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
using static LevelDevelopManager;
public class LevelGenerator : Singleton<LevelGenerator>
{
@ -23,6 +24,8 @@ public class LevelGenerator : Singleton<LevelGenerator>
[Header("生成路线数量")]
public int pathAmount;
//生成路线节点结果(自动生成)
public List<List<int>> pathMap = new List<List<int>>();//关卡列表
[Header("节点生成权重")]
public int mosterWight;
@ -43,8 +46,16 @@ public class LevelGenerator : Singleton<LevelGenerator>
private void Start()
{
originalPoint= generatorPoint.transform.position;
if(LevelDevelopManager .Instance .levelDevelopData .levelStep ==0)
{
GenerateLevelMap(generatorLine, generatorColumn);
//存储保存数据
SaveDataLoader();
}
else
{
GeneratorLevelMapFormSave();
}
}
public void GenerateLevelMap(int generatorLine, int generatorColumn)
@ -55,6 +66,7 @@ public class LevelGenerator : Singleton<LevelGenerator>
ShowMap();
RandomSetUpRoom();
CheckNodeRule();
CheckEliteMonster();
}
//生成网格
public void GenerateGridMap( int generatorLine,int generatorColumn)
@ -72,7 +84,11 @@ public class LevelGenerator : Singleton<LevelGenerator>
var level = Instantiate(levelPrefab, generatorPoint.transform.position, levelPrefab.transform.rotation);
level.transform.SetParent(LevelDevelopManager.Instance.levelFather.transform);
level.transform.localScale = new Vector3(2, 2, 2);
LevelDevelopManager.Instance.levelMap[i].levelColumn.Add(level.GetComponent<LevelNode>());
LevelNode bossLevelNode = level.GetComponent<LevelNode>();
bossLevelNode.line = i;
bossLevelNode.column = j;
LevelDevelopManager.Instance.levelMap[i].levelColumn.Add(bossLevelNode);
}
}
@ -82,7 +98,7 @@ public class LevelGenerator : Singleton<LevelGenerator>
{
generatorPoint.transform.position = new Vector3(generatorPoint.transform.position.x + lineOffset, generatorPoint.transform.position.y, 80);
GenerateLevelNode(i,j);
GenerateLevelNode(i,j, generatorPoint.transform.position);
}
}
@ -126,6 +142,10 @@ public class LevelGenerator : Singleton<LevelGenerator>
int currentColum = column;
LevelDevelopManager.Instance.levelMap[0].levelColumn[currentColum].isUse=true;
//生成路线表
List<int> path = new List<int>();
path.Add(LevelDevelopManager.Instance.levelMap[0].levelColumn[currentColum].column );//加入起点
for (int line = 1; line < generatorLine; line++)
{
if (line == generatorLine - 1)
@ -152,12 +172,17 @@ public class LevelGenerator : Singleton<LevelGenerator>
if (!nextLevelNode.fatherLevelNodes.Contains(LevelNode))
nextLevelNode.fatherLevelNodes.Add(LevelNode);
nextLevelNode.isUse = true;
//加入路线表
path.Add(nextLevelNode.column);
break;
}
}
}
}
pathMap .Add(path);
}
}
@ -236,15 +261,82 @@ public class LevelGenerator : Singleton<LevelGenerator>
}
}
//检查保底精英怪
public void CheckEliteMonster()
{
for (int i = 0; i < pathMap.Count ; i++)
{
bool haveEliteMonster = false;
for (int j = 0; j < pathMap [i].Count ; j++)
{
Debug.Log("路线"+i+":"+j + ";" + pathMap[i][j]);
LevelNode currendLevelNode = LevelDevelopManager.Instance.levelMap[j].levelColumn[pathMap[i][j]];
if (currendLevelNode.roomType == LevelDevelopManager.RoomType.eliteMonster)
{
haveEliteMonster = true;
break;
}
}
if(haveEliteMonster == false )
{
List<LevelNode> mosterNodes = new List<LevelNode>();
for (int j = 4; j < pathMap[i].Count; j++)
{
LevelNode currendLevelNode = LevelDevelopManager.Instance.levelMap[j].levelColumn[pathMap[i][j]];
if (currendLevelNode.roomType == LevelDevelopManager.RoomType.monster)
{
mosterNodes.Add(currendLevelNode);
}
}
int index_m = Random.Range(0, mosterNodes.Count);
bool haveRepeat = false;
if (mosterNodes.Count >0)
{
//判断变成精英后岔路目的地不重复,否则不变
foreach (var fatherRoom in mosterNodes[index_m].fatherLevelNodes)
{
for (int x = 0; x < fatherRoom.nextLevelNodes.Count; x++)
{
if (fatherRoom.nextLevelNodes[x].roomType == LevelDevelopManager.RoomType.eliteMonster)
{
haveRepeat = true;
break;
}
}
}
if (haveRepeat == false)
{
mosterNodes[index_m].SetUpRoom(LevelDevelopManager.RoomType.eliteMonster);
Debug.Log("变成精英" + mosterNodes[index_m].line + ";" + mosterNodes[index_m].column);
}
else
{
Debug.Log("有重复" + mosterNodes[index_m].line + ";" + mosterNodes[index_m].column);
}
}
}
}
}
//生成房间
public void GenerateLevelNode(int line ,int column)
public LevelNode GenerateLevelNode(int line ,int column ,Vector3 pos)
{
var level = Instantiate(levelPrefab, generatorPoint.transform.position, levelPrefab.transform.rotation);
var level = Instantiate(levelPrefab, pos, levelPrefab.transform.rotation);
level.transform.SetParent(LevelDevelopManager.Instance.levelFather.transform);
LevelNode levelNode = level.GetComponent<LevelNode>();
levelNode.line = line;
levelNode.column = column;
LevelDevelopManager.Instance.levelMap[line].levelColumn.Add(levelNode);
return levelNode;
}
//按规则随机设定房间
@ -303,10 +395,13 @@ public class LevelGenerator : Singleton<LevelGenerator>
break;
case LevelDevelopManager.RoomType.eliteMonster:
if (i < 5)
foreach (var fatherRoom in currentLevelNode.fatherLevelNodes)
{
if (fatherRoom.roomType == LevelDevelopManager.RoomType.eliteMonster || i < 5)
{
contravenes = true;
}
}
break;
case LevelDevelopManager.RoomType.incident:
@ -366,10 +461,13 @@ public class LevelGenerator : Singleton<LevelGenerator>
break;
case LevelDevelopManager.RoomType.eliteMonster:
if (line < 5)
foreach (var fatherRoom in currentLevelNode.fatherLevelNodes)
{
if (fatherRoom.roomType == LevelDevelopManager.RoomType.eliteMonster || line < 5)
{
contravenes = true;
}
}
break;
case LevelDevelopManager.RoomType.incident:
@ -480,8 +578,65 @@ public class LevelGenerator : Singleton<LevelGenerator>
}
//载入保存数据
public void SaveDataLoader()
{
for (int i = 0; i < LevelDevelopManager.Instance.levelMap.Count; i++)
{
LevelDevelopManager.Instance.levelDevelopData.levelSaveMap[i].levelDataList.Clear();
for (int j = 0; j < LevelDevelopManager.Instance.levelMap[i].levelColumn.Count; j++)
{
LevelDevelopManager.Instance.levelDevelopData.levelSaveMap[i].levelDataList.Add(LevelDevelopManager.Instance.levelMap[i].levelColumn[j].ReturnSaveData());
}
}
}
//根据保存的信息生成地图
public void GeneratorLevelMapFormSave()
{
for (int i = 0; i < LevelDevelopManager .Instance . levelDevelopData.levelSaveMap.Count; i++)
{
for (int j = 0; j < LevelDevelopManager.Instance.levelDevelopData.levelSaveMap[i].levelDataList.Count; j++)
{
LevelDevelopData_SO.levelData currentLevelData = LevelDevelopManager.Instance.levelDevelopData.levelSaveMap[i].levelDataList[j];
if (i == generatorLine - 1)
{
LevelNode currentNode = GenerateLevelNode(i, j, currentLevelData.nodePos);
currentNode.gameObject.transform.localScale = new Vector3(2, 2, 2);
currentNode.SetUpRoomWithRoomData(currentLevelData);
}
else
{
LevelNode currentNode = GenerateLevelNode(i, j,currentLevelData .nodePos );
currentNode.SetUpRoomWithRoomData(currentLevelData);
}
}
}
for (int i = 0; i < LevelDevelopManager.Instance.levelDevelopData.levelSaveMap.Count; i++)
{
for (int j = 0; j < LevelDevelopManager.Instance.levelDevelopData.levelSaveMap[i].levelDataList.Count; j++)
{
LevelDevelopData_SO.levelData currentLevelData = LevelDevelopManager.Instance.levelDevelopData.levelSaveMap[i].levelDataList[j];
LevelNode currentLevelNode = LevelDevelopManager.Instance.levelMap[i].levelColumn[j];
currentLevelNode.SetUpRoomLinkWithRoomData(currentLevelData);
if (currentLevelNode.isUse==false )
{
currentLevelNode.gameObject.SetActive(false);
}
else
{
currentLevelNode.LineShow();
}
}
}
}
}

41
ColorlessWorld-2024-4-2/Assets/Scripts/LeveProcess/LevelNode.cs

@ -2,6 +2,7 @@ using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using static LevelDevelopData_SO;
public class LevelNode : MonoBehaviour
{
@ -71,6 +72,46 @@ public class LevelNode : MonoBehaviour
float angle = Vector3.SignedAngle(line.transform.up , direction, Vector3 .forward );
line.transform.Rotate(0, 0, angle);
//³¤¶È
float distance = Vector3.Distance(nextLevelNodes[i].transform.position, line.transform.position);
line.GetComponent<RectTransform>().sizeDelta = new Vector2(line.GetComponent<RectTransform>().sizeDelta .x,distance) ;
}
}
public LevelDevelopData_SO .levelData ReturnSaveData()
{
LevelDevelopData_SO.levelData levelData = new LevelDevelopData_SO.levelData();
levelData.isUse = isUse;
levelData.roomType = roomType;
levelData.nodePos = this.transform.position;
levelData.column = column;
levelData.line = line;
foreach (var father in fatherLevelNodes )
{
levelData.fatherLevelNodes.Add(new Vector2 (father .line ,father .column ));
}
foreach (var child in nextLevelNodes)
{
levelData.nextLevelNodes.Add(new Vector2(child.line, child.column));
}
return levelData;
}
public void SetUpRoomWithRoomData(LevelDevelopData_SO .levelData levelData )
{
isUse = levelData.isUse;
roomType = levelData.roomType;
SetUpRoom(roomType);
// LevelDevelopManager.Instance.levelMap[line].levelColumn.Add(this);
}
public void SetUpRoomLinkWithRoomData(LevelDevelopData_SO.levelData levelData)
{
foreach (var father in levelData.fatherLevelNodes)
{
fatherLevelNodes.Add(LevelDevelopManager.Instance.levelMap[(int)father.x].levelColumn[(int)father.y]);
}
foreach (var child in levelData.nextLevelNodes)
{
nextLevelNodes.Add(LevelDevelopManager.Instance.levelMap[(int)child.x].levelColumn[(int)child.y]);
}
}

20
ColorlessWorld-2024-4-2/Assets/Scripts/Tool/Data_SO/LevelDevelopData_SO.cs

@ -8,5 +8,23 @@ public class LevelDevelopData_SO : ScriptableObject
{
public int levelStep;//关卡前进步数
public List<int> levelIndexList = new List<int>();//关卡生成列表
public List<LevelDataList> levelSaveMap = new List<LevelDataList>();//šŘż¨ąŁ´ćĘýžÝÁĐąí
[System.Serializable]
public class LevelDataList
{
public List<levelData> levelDataList = new List<levelData>();
}
[System .Serializable]
public class levelData
{
public LevelDevelopManager .RoomType roomType ;
public bool isUse;
public Vector3 nodePos;
public int line;//ĐĐ
public int column;//ÁĐ
public List<Vector2> fatherLevelNodes = new List<Vector2>();
public List<Vector2> nextLevelNodes = new List<Vector2>();
}
}

Loading…
Cancel
Save