快捷功能

Note时间填充
Hierarchy排序
This commit is contained in:
SoulliesOfficial
2025-03-20 15:17:08 -04:00
parent 22c6ca80ca
commit ab86d6d985
8 changed files with 352 additions and 16 deletions

View File

@@ -43,7 +43,6 @@ MonoBehaviour:
- {fileID: 2890788359140629188, guid: f4b4e87edddc74e4e8d6b9d4cc0e31fc, type: 3}
- {fileID: 5502985463212138770, guid: f4b4e87edddc74e4e8d6b9d4cc0e31fc, type: 3}
- {fileID: 4800000, guid: da07703fcc09f8d4799221050659bd55, type: 3}
- {fileID: -6465566751694194690, guid: ee7160752d2114149904ca2b2b012bbf, type: 3}
- {fileID: 7671065637303904002, guid: df4a22c0fc7634babaac85c473d4b9fc, type: 3}
- {fileID: 5502985463212138770, guid: df4a22c0fc7634babaac85c473d4b9fc, type: 3}
- {fileID: 2890788359140629188, guid: df4a22c0fc7634babaac85c473d4b9fc, type: 3}
@@ -51,7 +50,6 @@ MonoBehaviour:
- {fileID: 21300000, guid: c7353b93c0ea87c46af8eba38a20a636, type: 3}
- {fileID: 2800000, guid: c7353b93c0ea87c46af8eba38a20a636, type: 3}
- {fileID: 4800000, guid: 8d2bb70cbf9db8d4da26e15b26e74248, type: 3}
- {fileID: 4800000, guid: 423e4019c51e2433e94a8efed1980448, type: 3}
- {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
- {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
- {fileID: 4800000, guid: fe393ace9b354375a9cb14cdbbc28be4, type: 3}
@@ -98,15 +96,22 @@ MonoBehaviour:
- {fileID: 21300012, guid: 358b5d9f23bc9413e87c9948acc67ee1, type: 3}
- {fileID: 21300002, guid: 358b5d9f23bc9413e87c9948acc67ee1, type: 3}
- {fileID: 2800000, guid: 188dfe7e559f13248ba2c41eb5a59328, type: 3}
- {fileID: 2800000, guid: 2fd6421f253b4ef1a19526541f9ffc0c, type: 3}
- {fileID: 2800000, guid: b0f85f7da5042c0448a526d5ecacbfa9, type: 3}
- {fileID: 2800000, guid: 02f78a9ec76d40f49bfac78c64a754d1, type: 3}
- {fileID: 2800000, guid: 3ee40aa79cd242a5b53b0b0ca4f13f0f, type: 3}
- {fileID: 2800000, guid: a7ec9e7ad8b847b7ae4510af83c5d868, type: 3}
- {fileID: 2800000, guid: f66c4aa44c09b6a42a2b5b9f9334d824, type: 3}
- {fileID: 2800000, guid: ee148e281f3c41c5b4ff5f8a5afe5a6c, type: 3}
- {fileID: 2800000, guid: f87b5805002ec9649bcb1b96d8a16ba9, type: 3}
- {fileID: 2800000, guid: 3028dc075ba8c584d9bc7d1e0255e038, type: 3}
- {fileID: 2800000, guid: dcc0ed9263c0d524aabeb5f4bd75ecee, type: 3}
- {fileID: 2800000, guid: 93f09189124b21e479fc891dbc1b93bf, type: 3}
_Values: febc7fe765b0407b8c8e90345544ac394753b1a281922a4e114589015196ee4776dac15926adab1e4620c9a232d1ed566ec628c1efb3c0693a954d39e3d36066f7d0f7b20b638d2be0a95163e7ea141dcc1f6b7591d3a73e949134651819880de72e3b2ecf0dbc66f70629b01243766dcd4f9bcf7dee1e4185b3b64b611e3b6ddb9f15d3e773b400f9c3036d9fa280501bc798c97db9902b9e9549f346d5832eb56db8a23f89a7640733ce3e6d52283bf75ba0ec3738db260ae957f27d5ee2668ac131e2db057329631d4d0b8c6d0e3ae43753f6ee4b353bd2e2253bebcd1860a0d4110fb94b096df33eaacce4a3cf68897f3d09494eb63919371d8cc711425cd33b203e27204208f885cc092656e150e128c851cd967a1faedeb3ac8643a066696941ce49905954b063368dcbd19568dfd41e62741c9c0aa24726e7840a0343e00326e5bdac65587954269665689864e713ed6a2aafad56a7eda6d48a710f5ea039098a96961a33923a2536bdcc8f3956cf3dcf0690ce165927cb38a6b5d322f7c42dc76a0f38733adf6e4e962d5c724536aed9f37e2a0bdb44464957c307518d1d6d10b64b0a6e7bc20b8ff906d175ab6ca57cd054ac25fd0313370dae837788d136e691bc77608932df9423e3b3338526c6cbf834351a137c1a389017a534ffce0da47d9d35274df6eeb94b093a0b8594cefd75351f440851d414a23ed05fd81393f2f058b123a51281feba84311bb826be24e5a3a934ef519d2cc8208573c74de13776471b2de3aaa287b71dfe7cdf46a2847f54867bbdc7e042f5ddeb7b72f23af89a976e0042eb07904531eb0bafe6f4f03cf60c72c6667aae67d83705be2614c5e205e248a312fd7aec8b041ed350852f5e12e7049d558c480b488043b79862cbcac2a022982aef40f444f346a79a2ea1059b0743f618754523ca12591ea0e16ed6cab939ae546227e77ad0441e52f4cb51133a25211633edbab3491382a220691737035f2a7a62d67a87d770e9ba28d1d54608099a44b14069338061638a5bbba599d354a9ac5d294f9b556740c304008b773d36
- {fileID: 11500000, guid: db9afa4209e714d689fc9b15d81c6f50, type: 3}
- {fileID: 4800000, guid: 44e8d6dab1446644688189717537509a, type: 3}
- {fileID: 11500000, guid: 3d86cc42eec2b42e3aa9571c916401e6, type: 3}
- {fileID: 3154956539503596607, guid: 9aa2b3262bc254b63a96346290d0c276, type: 3}
- {fileID: 3154956539503596607, guid: a7b108af9c94847598fd1eb0216f9a29, type: 3}
- {fileID: 5348092283973790359, guid: 9aa2b3262bc254b63a96346290d0c276, type: 3}
- {fileID: 8182686472733940155, guid: a7b108af9c94847598fd1eb0216f9a29, type: 3}
- {fileID: 8182686472733940155, guid: 9aa2b3262bc254b63a96346290d0c276, type: 3}
- {fileID: 1157693068037168295, guid: a7b108af9c94847598fd1eb0216f9a29, type: 3}
_Values: febc7fe765b0407b8c8e90345544ac394753b1a281922a4e114589015196ee4776dac15926adab1e4620c9a232d1ed566ec628c1efb3c0693a954d39e3d36066f7d0f7b20b638d2be0a95163e7ea141dcc1f6b7591d3a73e949134651819880de72e3b2ecf0dbc66f70629b01243766dcd4f9bcf7dee1e4185b3b64b611e3b6ddb9f15d3e773b400f9c3036d9fa280501bc798c97db9902b9e9549f346d5832eb56db8a23f89a7640733ce3e6d52283bf75ba0ec3738db260ae957f27d5ee2668ac131e2db057329631d4d0b8c6d0e3ae43753f6ee4b353bd2e2253bebcd1860a0d4110fb94b096d897f3d09494eb63919371d8cc711425cd33b203e27204208f885cc092656e150e128c851cd967a1faedeb3ac8643a066696941ce49905954dfd41e62741c9c0aa24726e7840a0343e00326e5bdac65587954269665689864e713ed6a2aafad56a7eda6d48a710f5ea039098a96961a33923a2536bdcc8f3956cf3dcf0690ce165927cb38a6b5d322f7c42dc76a0f38733adf6e4e962d5c724536aed9f37e2a0bdb44464957c307518d1d6d10b64b0a6e7bc20b8ff906d175ab6ca57cd054ac25fd0313370dae837788d136e691bc77608932df9423e3b3338526c6cbf834351a137c1a389017a534ffce0da47d9d35274df6eeb94b093a0b8594cefd75351f440851d414a23ed05fd81393f2f058b123a51281feba84311bb826be24e5a3a934ef519d2cc8208573c74de13776471b2de3aaa287b71dfe7cdf46a2847f54867bbdc7e042f5ddeb7b72f23af89a976e0042eb07904531eb0bafe6f4f03cf60c72c6667aae67d83705be2614c5e205e248a312fd7aec8b041ed350852f5e12e7049d558c480b488043b79862cbcac2a022982aef40f444f346a79a2ea1059b0743f618754523ca1259ae546227e77ad0441e52f4cb51133a25211633edbab3491382a220691737035f2a7a62d67a87d7709a44b14069338061638a5bbba599d354a9ac5d294f9b556740c304008b773d36e0f8591ae3c7fa2d3130b993d419467c3a1a11a336459a24f05e953a20def4426fb65fc8a58b1358f90d04e060c5c571d2b1d2df9baa98256d81d67ace3ff30fdb03fd7487f0de3b

File diff suppressed because one or more lines are too long

View File

@@ -106,8 +106,8 @@ namespace Ichni.Editor
StartCoroutine(ExpandAnim());
if (isExpanded)
{
connectedGameElement.childElementList.Sort();//TODO: 后续可以让玩家手动快速排序
for (var index = 0; index < connectedGameElement.childElementList.Count; index++)
{
var childElement = connectedGameElement.childElementList[index];

View File

@@ -1,6 +1,8 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using Ichni.RhythmGame;
using Sirenix.OdinInspector;
using UnityEngine;
@@ -17,6 +19,7 @@ namespace Ichni.Editor
public Button exportButton;
public Button clipSaveButton;
public Button clipLoadButton;
public Button beatmapToolsButton;
[Title("Windows")]
public GeneralSecondaryWindow clipManagementWindow;
@@ -28,6 +31,7 @@ namespace Ichni.Editor
exportButton.onClick.AddListener(EditorManager.instance.projectManager.exportManager.Export);
clipSaveButton.onClick.AddListener(GenerateSaveClipWindow);
clipLoadButton.onClick.AddListener(GenerateLoadClipWindow);
beatmapToolsButton.onClick.AddListener(GenerateBeatmapToolsWindow);
}
}
@@ -95,4 +99,50 @@ namespace Ichni.Editor
});
}
}
public partial class ToolBar
{
private void GenerateBeatmapToolsWindow()
{
GeneralSecondaryWindow beatmapToolsWindow =
Instantiate(EditorManager.instance.basePrefabs.generalSecondaryWindow,
EditorManager.instance.uiManager.mainPage.mainCanvas.GetComponent<RectTransform>()).GetComponent<GeneralSecondaryWindow>();
beatmapToolsWindow.Initialize("Beatmap Tools", () => clipManagementWindow = null);
var container = beatmapToolsWindow.GenerateContainer("Note Tools");
var applyTimeOnNameButton = beatmapToolsWindow.GenerateButton(container, "Apply Time On Note Name", () =>
{
List<NoteBase> allNotes = EditorManager.instance.beatmapContainer.gameElementList.FindAll(x => x is NoteBase).ConvertAll(x => x as NoteBase);
List<Tap> allTaps = allNotes.FindAll(x => x is Tap).ConvertAll(x => x as Tap);
List<Stay> allStays = allNotes.FindAll(x => x is Stay).ConvertAll(x => x as Stay);
List<Hold> allHolds = allNotes.FindAll(x => x is Hold).ConvertAll(x => x as Hold);
List<Flick> allFlicks = allNotes.FindAll(x => x is Flick).ConvertAll(x => x as Flick);
foreach (var tap in allTaps.Where(tap => tap.elementName == "New Tap" || Regex.IsMatch(tap.elementName, @"Tap \(\d+\)")))
{
tap.elementName = "Tap (" + tap.exactJudgeTime + ")";
tap.Refresh();
}
foreach (var stay in allStays.Where(stay => stay.elementName == "New Stay" || Regex.IsMatch(stay.elementName, @"Stay \(\d+\)")))
{
stay.elementName = "Stay (" + stay.exactJudgeTime + ")";
stay.Refresh();
}
foreach (var hold in allHolds.Where(hold => hold.elementName == "New Hold" || Regex.IsMatch(hold.elementName, @"Hold \(\d+-\d+\)")))
{
hold.elementName = "Hold (" + hold.exactJudgeTime + "-" + hold.holdEndTime + ")";
hold.Refresh();
}
foreach (var flick in allFlicks.Where(flick => flick.elementName == "New Flick" || Regex.IsMatch(flick.elementName, @"Flick \(\d+\)")))
{
flick.elementName = "Flick (" + flick.exactJudgeTime + ")";
flick.Refresh();
}
});
}
}
}

View File

@@ -13,7 +13,7 @@ using Inspector = Ichni.Editor.Inspector;
namespace Ichni.RhythmGame
{
public abstract partial class GameElement : SerializedMonoBehaviour, IBaseElement
public abstract partial class GameElement : SerializedMonoBehaviour, IBaseElement, IComparable<GameElement>
{
//物体名
public string elementName;
@@ -38,6 +38,8 @@ namespace Ichni.RhythmGame
//存档类
public BaseElement_BM matchedBM { get; set; }
public virtual int HierarchyPriority => 0;
/// <summary>
/// 首次初始化
@@ -89,6 +91,11 @@ namespace Ichni.RhythmGame
transform.SetParent(parentElement.transform);
}
}
public int CompareTo(GameElement other)
{
return HierarchyPriority.CompareTo(other.HierarchyPriority);
}
}
public abstract partial class GameElement //存档,删除,复制,粘贴

View File

@@ -30,6 +30,7 @@ namespace Ichni.RhythmGame
[Title("In-Game Info")]
public Vector2 noteScreenPosition;
[FormerlySerializedAs("isJudged")] public bool isFirstJudged;
public override int HierarchyPriority => -10;
/// <summary>
/// 在MovableTrack上更新Note的位置注意HoldNote需要重写这个方法

View File

@@ -20,6 +20,7 @@ namespace Ichni.RhythmGame
public TimeDurationSubmodule timeDurationSubmodule { get; set; }
public ColorSubmodule colorSubmodule { get; set; }
public bool haveEmission => false;
public override int HierarchyPriority => -100;
[Title("Editor独有参数")]
[SerializeField]

View File

@@ -233,7 +233,7 @@
},{
"__type" : "Ichni.RhythmGame.Beatmap.Tap_BM,Assembly-CSharp",
"exactJudgeTime" : 1,
"elementName" : "New Tap",
"elementName" : "Tap (1)",
"tags" : [
],
@@ -265,7 +265,7 @@
},{
"__type" : "Ichni.RhythmGame.Beatmap.Stay_BM,Assembly-CSharp",
"exactJudgeTime" : 3,
"elementName" : "New Stay",
"elementName" : "Stay (3)",
"tags" : [
],
@@ -580,7 +580,7 @@
"__type" : "Ichni.RhythmGame.Beatmap.Hold_BM,Assembly-CSharp",
"holdEndTime" : 2.5,
"exactJudgeTime" : 1.5,
"elementName" : "New Hold",
"elementName" : "Hold (1.5-2.5)",
"tags" : [
],
@@ -768,7 +768,7 @@
"__type" : "Ichni.RhythmGame.Beatmap.Hold_BM,Assembly-CSharp",
"holdEndTime" : 1,
"exactJudgeTime" : 0.2,
"elementName" : "New Hold",
"elementName" : "Hold (0.2-1)",
"tags" : [
],