From 34d3aeea39b9fa5279dd7bd2e3c2b1339c691928 Mon Sep 17 00:00:00 2001 From: wuwenbo Date: Tue, 15 Jul 2025 17:35:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=8B=E6=88=90=E5=B0=B1?= =?UTF-8?q?=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Resources/DataAssets/Achievement.asset | 242 +++++++++++++++++- .../Logic/Achievement/AchievementCondition.cs | 2 - .../Logic/Achievement/AchievementItem.cs | 8 +- .../Logic/Editor/AchievementEditorWindow.cs | 19 +- .../Assets/Scripts/Logic/Main/GameLogic.cs | 1 + 5 files changed, 267 insertions(+), 5 deletions(-) diff --git a/My project/Assets/Resources/DataAssets/Achievement.asset b/My project/Assets/Resources/DataAssets/Achievement.asset index 516da032e..0a3964025 100644 --- a/My project/Assets/Resources/DataAssets/Achievement.asset +++ b/My project/Assets/Resources/DataAssets/Achievement.asset @@ -12,4 +12,244 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b664cf36cbd74c59a853c45c232706b0, type: 3} m_Name: Achievement m_EditorClassIdentifier: - AchievementList: [] + AchievementList: + - BigID: 1 + SmallID: 1 + InternalID: 1 + MapID: 0 + IsFinished: 0 + Name: + Desc: + _typeNames: + - Logic.Achievement.TrainGiantCondition, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, + PublicKeyToken=null + _jsonData: + - '{"TargetCount":1,"TargetGiant":2,"TrainCount":0}' + - BigID: 1 + SmallID: 1 + InternalID: 2 + MapID: 0 + IsFinished: 0 + Name: + Desc: + _typeNames: + - Logic.Achievement.TrainGiantCondition, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, + PublicKeyToken=null + _jsonData: + - '{"TargetCount":1,"TargetGiant":5,"TrainCount":0}' + - BigID: 1 + SmallID: 1 + InternalID: 3 + MapID: 0 + IsFinished: 0 + Name: + Desc: + _typeNames: + - Logic.Achievement.TrainGiantCondition, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, + PublicKeyToken=null + _jsonData: + - '{"TargetCount":1,"TargetGiant":3,"TrainCount":0}' + - BigID: 1 + SmallID: 1 + InternalID: 4 + MapID: 0 + IsFinished: 0 + Name: + Desc: + _typeNames: + - Logic.Achievement.TrainGiantCondition, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, + PublicKeyToken=null + _jsonData: + - '{"TargetCount":1,"TargetGiant":1,"TrainCount":0}' + - BigID: 1 + SmallID: 1 + InternalID: 5 + MapID: 0 + IsFinished: 0 + Name: + Desc: + _typeNames: + - Logic.Achievement.TrainGiantCondition, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, + PublicKeyToken=null + _jsonData: + - '{"TargetCount":1,"TargetGiant":4,"TrainCount":0}' + - BigID: 1 + SmallID: 2 + InternalID: 1 + MapID: 0 + IsFinished: 0 + Name: + Desc: + _typeNames: + - Logic.Achievement.TrainGiantCondition, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, + PublicKeyToken=null + _jsonData: + - '{"TargetCount":1,"TargetGiant":6,"TrainCount":0}' + - BigID: 1 + SmallID: 2 + InternalID: 2 + MapID: 0 + IsFinished: 0 + Name: + Desc: + _typeNames: + - Logic.Achievement.TrainGiantCondition, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, + PublicKeyToken=null + _jsonData: + - '{"TargetCount":1,"TargetGiant":9,"TrainCount":0}' + - BigID: 1 + SmallID: 2 + InternalID: 3 + MapID: 0 + IsFinished: 0 + Name: + Desc: + _typeNames: + - Logic.Achievement.TrainGiantCondition, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, + PublicKeyToken=null + _jsonData: + - '{"TargetCount":1,"TargetGiant":8,"TrainCount":0}' + - BigID: 1 + SmallID: 2 + InternalID: 4 + MapID: 0 + IsFinished: 0 + Name: + Desc: + _typeNames: + - Logic.Achievement.TrainGiantCondition, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, + PublicKeyToken=null + _jsonData: + - '{"TargetCount":1,"TargetGiant":7,"TrainCount":0}' + - BigID: 1 + SmallID: 2 + InternalID: 5 + MapID: 0 + IsFinished: 0 + Name: + Desc: + _typeNames: + - Logic.Achievement.TrainGiantCondition, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, + PublicKeyToken=null + _jsonData: + - '{"TargetCount":1,"TargetGiant":10,"TrainCount":0}' + - BigID: 1 + SmallID: 3 + InternalID: 1 + MapID: 0 + IsFinished: 0 + Name: + Desc: + _typeNames: + - Logic.Achievement.TrainGiantCondition, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, + PublicKeyToken=null + _jsonData: + - '{"TargetCount":1,"TargetGiant":11,"TrainCount":0}' + - BigID: 1 + SmallID: 3 + InternalID: 2 + MapID: 0 + IsFinished: 0 + Name: + Desc: + _typeNames: + - Logic.Achievement.TrainGiantCondition, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, + PublicKeyToken=null + _jsonData: + - '{"TargetCount":1,"TargetGiant":12,"TrainCount":0}' + - BigID: 1 + SmallID: 3 + InternalID: 3 + MapID: 0 + IsFinished: 0 + Name: + Desc: + _typeNames: + - Logic.Achievement.TrainGiantCondition, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, + PublicKeyToken=null + _jsonData: + - '{"TargetCount":1,"TargetGiant":13,"TrainCount":0}' + - BigID: 1 + SmallID: 3 + InternalID: 4 + MapID: 0 + IsFinished: 0 + Name: + Desc: + _typeNames: + - Logic.Achievement.TrainGiantCondition, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, + PublicKeyToken=null + _jsonData: + - '{"TargetCount":1,"TargetGiant":15,"TrainCount":0}' + - BigID: 1 + SmallID: 3 + InternalID: 5 + MapID: 0 + IsFinished: 0 + Name: + Desc: + _typeNames: + - Logic.Achievement.TrainGiantCondition, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, + PublicKeyToken=null + _jsonData: + - '{"TargetCount":1,"TargetGiant":14,"TrainCount":0}' + - BigID: 1 + SmallID: 4 + InternalID: 1 + MapID: 0 + IsFinished: 0 + Name: + Desc: + _typeNames: + - Logic.Achievement.TrainGiantCondition, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, + PublicKeyToken=null + _jsonData: + - '{"TargetCount":1,"TargetGiant":16,"TrainCount":0}' + - BigID: 1 + SmallID: 4 + InternalID: 2 + MapID: 0 + IsFinished: 0 + Name: + Desc: + _typeNames: + - Logic.Achievement.TrainGiantCondition, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, + PublicKeyToken=null + _jsonData: + - '{"TargetCount":1,"TargetGiant":17,"TrainCount":0}' + - BigID: 1 + SmallID: 4 + InternalID: 3 + MapID: 0 + IsFinished: 0 + Name: + Desc: + _typeNames: + - Logic.Achievement.TrainGiantCondition, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, + PublicKeyToken=null + _jsonData: + - '{"TargetCount":1,"TargetGiant":20,"TrainCount":0}' + - BigID: 1 + SmallID: 4 + InternalID: 4 + MapID: 0 + IsFinished: 0 + Name: + Desc: + _typeNames: + - Logic.Achievement.TrainGiantCondition, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, + PublicKeyToken=null + _jsonData: + - '{"TargetCount":1,"TargetGiant":19,"TrainCount":0}' + - BigID: 1 + SmallID: 4 + InternalID: 5 + MapID: 0 + IsFinished: 0 + Name: + Desc: + _typeNames: + - Logic.Achievement.TrainGiantCondition, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, + PublicKeyToken=null + _jsonData: + - '{"TargetCount":1,"TargetGiant":18,"TrainCount":0}' diff --git a/My project/Assets/Scripts/Logic/Achievement/AchievementCondition.cs b/My project/Assets/Scripts/Logic/Achievement/AchievementCondition.cs index cbb10d573..5676c3b2d 100644 --- a/My project/Assets/Scripts/Logic/Achievement/AchievementCondition.cs +++ b/My project/Assets/Scripts/Logic/Achievement/AchievementCondition.cs @@ -238,9 +238,7 @@ namespace Logic.Achievement public WonderLibrary Wonder; public GiantType Giant; public int TargetTurns; - public uint RecordTurn; - public uint _gridId; diff --git a/My project/Assets/Scripts/Logic/Achievement/AchievementItem.cs b/My project/Assets/Scripts/Logic/Achievement/AchievementItem.cs index d760f2e78..2a084a990 100644 --- a/My project/Assets/Scripts/Logic/Achievement/AchievementItem.cs +++ b/My project/Assets/Scripts/Logic/Achievement/AchievementItem.cs @@ -8,6 +8,7 @@ using System; using System.Collections.Generic; +using Logic.Multilingual; using RuntimeData; using UnityEngine; @@ -22,10 +23,15 @@ namespace Logic.Achievement public uint SmallID; public uint InternalID; - // 核心数据 + // 核心数据 用来标记当前的地图 ID 防止继续游戏 public uint MapID; public bool IsFinished; + //成就名称 + public string Name; + // 成就描述 + public string Desc; + public List Conditions; public uint ID => BigID * 10000 + SmallID * 100 + InternalID; diff --git a/My project/Assets/Scripts/Logic/Editor/AchievementEditorWindow.cs b/My project/Assets/Scripts/Logic/Editor/AchievementEditorWindow.cs index bd0fcd809..198770480 100644 --- a/My project/Assets/Scripts/Logic/Editor/AchievementEditorWindow.cs +++ b/My project/Assets/Scripts/Logic/Editor/AchievementEditorWindow.cs @@ -8,6 +8,7 @@ using System.Collections.Generic; using Logic.Achievement; +using NUnit.Framework; using UnityEditor; using UnityEngine; @@ -109,6 +110,18 @@ namespace Logic.Editor { _asset.AchievementList.Sort((a, b) => a.ID.CompareTo(b.ID)); } + if (InspectorUtils.InspectorButtonWithTextWidth("全选")) + { + var keys = new List(); + foreach (var key in _showItem.Keys)keys.Add(key); + foreach (var key in keys) _showItem[key] = true; + } + if (InspectorUtils.InspectorButtonWithTextWidth("全不选")) + { + var keys = new List(); + foreach (var key in _showItem.Keys)keys.Add(key); + foreach (var key in keys) _showItem[key] = false; + } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); @@ -216,7 +229,11 @@ namespace Logic.Editor isShow = EditorGUILayout.Toggle(isShow, GUILayout.Width(16)); _showItem[item.ID] = isShow; InspectorUtils.InspectorTextWidthRich($" 成就ID: {item.ID}"); - if (InspectorUtils.InspectorButtonWithTextWidth("增加一条判断")) + InspectorUtils.InspectorTextWidthRich($" 名称 "); + item.Name = EditorGUILayout.TextField(item.Name, GUILayout.Width(100)); + InspectorUtils.InspectorTextWidthRich($" 描述 "); + item.Desc = EditorGUILayout.TextField(item.Desc, GUILayout.Width(300)); + if (InspectorUtils.InspectorButtonWithTextWidth("+")) { item.Conditions.Add(AchievementFactory.GetAchievementCondition(AchievementConditionType.AroundBuildings)); } diff --git a/My project/Assets/Scripts/Logic/Main/GameLogic.cs b/My project/Assets/Scripts/Logic/Main/GameLogic.cs index c493b8054..2fb3f3173 100644 --- a/My project/Assets/Scripts/Logic/Main/GameLogic.cs +++ b/My project/Assets/Scripts/Logic/Main/GameLogic.cs @@ -125,6 +125,7 @@ namespace Logic //uiManager.EndTurn(); PlayerPrefs.SetInt("Archive", 1); MapData.SaveMapData(_gameLogic.Main.MapData); + AchievementDataManager.Instance.OnTurnStart(_gameLogic.Main.MapData, _curPlayer); #if GAME_AUTO_DEBUG _aiLogic = new AILogic();