【修复】叽里咕噜说啥呢听不懂

Signed-off-by: TRAfoer <lhf190@outlook.com>
This commit is contained in:
2025-08-14 21:27:15 +08:00
parent dc530472ba
commit a0b3dfe557
21 changed files with 221801 additions and 16196 deletions

7
Assets/Assets.sln.meta Normal file
View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 459a7ea4ef65c664482b6377848ac5c3
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 6dbdd314784e80440b48088e6357c1ef
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because one or more lines are too long

View File

@@ -1,3 +1,4 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
@@ -103,8 +104,9 @@ namespace Ichni.RhythmGame
var effectNameInputField = inspector.GenerateInputField(subcontainer, "Effect Name");
var addEffectButton = inspector.GenerateButton(this, subcontainer, "Add Effect", () =>
{
if (EffectCollection.TryGetValue(effectNameInputField.GetValue<string>(), out EffectBase newEffect))
if (EffectCollection.TryGetValue(effectNameInputField.GetValue<string>(), out var factory))
{
EffectBase newEffect = factory.Invoke(); // 创建新实例
newEffect.attachedGameElement = attachedGameElement;
effectCollection[effect.Key].Add(newEffect);
newEffect.AccommodatingList = effectCollection[effect.Key];
@@ -132,23 +134,23 @@ namespace Ichni.RhythmGame
Note,
}
private static Dictionary<string, EffectBase> EffectCollection { get; } =
new Dictionary<string, EffectBase>()
private static Dictionary<string, Func<EffectBase>> EffectCollection { get; } =
new Dictionary<string, Func<EffectBase>>()
{
{ "Bloom", new BloomEffect(1, 2, CustomCurvePresets.Parabolic(1, 0, 1)) },
{ "CameraShake", new CameraShakeEffect(1, 50, 1, 1, 1) },
{ "CameraOffset", new CameraOffsetEffect(0.2f, Vector3.forward, CustomCurvePresets.CustomPeakTimeParabolic(1, 0, 1, 0.3f)) },
{ "CameraZoom", new CameraZoomEffect(0.2f, 5f,CustomCurvePresets.Parabolic(1,0,1))},
{ "CameraTilt", new CameraTiltEffect(0.2f, new Vector3(0, 0, 5), CustomCurvePresets.CustomPeakTimeParabolic(1, 0, 1, 0.3f)) },
{ "ChromaticAberration", new ChromaticAberrationEffect(1, 1, CustomCurvePresets.Parabolic(1, 0, 1)) },
{ "RadialBlur", new RadialBlurEffect(1,4,0.5f,0.5f, 1, CustomCurvePresets.Parabolic(1,0,1))},
{ "Vignette", new VignetteEffect(1, 1, 0.4f, Color.black, CustomCurvePresets.Parabolic(1, 0, 1)) },
{ "SetInteger", new SetIntegerEffect("New Variable", 0, false, 0, 1) },
{ "EnableControl", new EnableControlEffect(null, "New Variable", 0, false, "") },
{ "Pixelate", new PixelateEffect(1, 320, 180, CustomCurvePresets.Instant())},
{ "LowPassFilter", new LowPassFilterEffect(1, 10, CustomCurvePresets.Parabolic(1, 0, 1)) },
{ "HighPassFilter", new HighPassFilterEffect(1, 22000, CustomCurvePresets.Parabolic(1, 0, 1)) },
{ "DTM_RippleEffect", new DTMRippleEffect(0.65f, Color.white, 0) }
{ "Bloom", ()=>new BloomEffect(1, 2, CustomCurvePresets.Parabolic(1, 0, 1)) },
{ "CameraShake",()=> new CameraShakeEffect(1, 50, 1, 1, 1) },
{ "CameraOffset", ()=>new CameraOffsetEffect(0.2f, Vector3.forward, CustomCurvePresets.CustomPeakTimeParabolic(1, 0, 1, 0.3f)) },
{ "CameraZoom",()=> new CameraZoomEffect(0.2f, 5f,CustomCurvePresets.Parabolic(1,0,1))},
{ "CameraTilt", ()=>new CameraTiltEffect(0.2f, new Vector3(0, 0, 5), CustomCurvePresets.CustomPeakTimeParabolic(1, 0, 1, 0.3f)) },
{ "ChromaticAberration", ()=>new ChromaticAberrationEffect(1, 1, CustomCurvePresets.Parabolic(1, 0, 1)) },
{ "RadialBlur",()=> new RadialBlurEffect(1,4,0.5f,0.5f, 1, CustomCurvePresets.Parabolic(1,0,1))},
{ "Vignette", ()=>new VignetteEffect(1, 1, 0.4f, Color.black, CustomCurvePresets.Parabolic(1, 0, 1)) },
{ "SetInteger",()=> new SetIntegerEffect("New Variable", 0, false, 0, 1) },
{ "EnableControl",()=> new EnableControlEffect(null, "New Variable", 0, false, "") },
{ "Pixelate", ()=>new PixelateEffect(1, 320, 180, CustomCurvePresets.Instant())},
{ "LowPassFilter", ()=>new LowPassFilterEffect(1, 10, CustomCurvePresets.Parabolic(1, 0, 1)) },
{ "HighPassFilter",()=> new HighPassFilterEffect(1, 22000, CustomCurvePresets.Parabolic(1, 0, 1)) },
{ "DTM_RippleEffect",()=> new DTMRippleEffect(0.65f, Color.white, 0) }
};
}

View File

@@ -42,7 +42,7 @@ namespace Ichni.RhythmGame
point.isBeyond1 = trackPercent.animations.Any(animation => animation.endValue > 1); //判断是否有超过1的动画超过1将会循环
//添加默认动画
if (point.parentElement is Track track1 && track1.submoduleList.Where(submodule => submodule is TrackTimeSubmoduleMovable).Count() == 1)
if (isFirstGenerated && point.parentElement is Track track1 && track1.submoduleList.Where(submodule => submodule is TrackTimeSubmoduleMovable).Count() == 1)
{
TrackTimeSubmoduleMovable trackTimeSubmoduleMovable = track1.submoduleList.Where(submodule => submodule is TrackTimeSubmoduleMovable).FirstOrDefault() as TrackTimeSubmoduleMovable;
point.trackPercent.Add(

View File

@@ -2,6 +2,7 @@ using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using DG.Tweening.Core.Easing;
using Ichni;
using Ichni.Editor;
using Ichni.RhythmGame;
@@ -309,4 +310,24 @@ public class FlexibleFloatTab : MonoBehaviour
FatherWindow.ConnectedPoint.Refresh(true);
EventPoint.Locked = false;
}
public void CutEvent()
{
EventPoint eventPoint = FatherWindow.ConnectedPoint;
if (eventPoint == null) return;
for (int i = 0; i < BeatNextDeviver; i++)
{
float segmentStartTime = eventPoint.animatedFloat.startTime + (eventPoint.animatedFloat.endTime - eventPoint.animatedFloat.startTime) / BeatNextDeviver * i;
float segmentEndTime = eventPoint.animatedFloat.startTime + (eventPoint.animatedFloat.endTime - eventPoint.animatedFloat.startTime) / BeatNextDeviver * (i + 1);
connectFloat.Add(new AnimatedFloat(
segmentStartTime,
segmentEndTime,
AnimationCurveEvaluator.Evaluate(eventPoint.animatedFloat.animationCurveType, (segmentStartTime - eventPoint.animatedFloat.startTime) / (eventPoint.animatedFloat.endTime - eventPoint.animatedFloat.startTime)) * (eventPoint.animatedFloat.endValue - eventPoint.animatedFloat.startValue) + eventPoint.animatedFloat.startValue,
AnimationCurveEvaluator.Evaluate(eventPoint.animatedFloat.animationCurveType, (segmentEndTime - eventPoint.animatedFloat.startTime) / (eventPoint.animatedFloat.endTime - eventPoint.animatedFloat.startTime)) * (eventPoint.animatedFloat.endValue - eventPoint.animatedFloat.startValue) + eventPoint.animatedFloat.startValue,
AnimationCurveType.Linear));
}
RemoveEventPoint(eventPoint);
connectFloat.Sort();
Initialize(connectFloat, Title);
FatherWindow.ChangeValue();
}
}

View File

@@ -247,6 +247,10 @@ public partial class GraphicalFlexibleFloatWindow
EventPoint.Locked = false;
}
}
else if (Keyboard.current.lKey.wasPressedThisFrame)
{
ConnectedPoint.FatherTab.CutEvent();
}
}
@@ -282,6 +286,7 @@ public partial class GraphicalFlexibleFloatWindow
}
}
}
public partial class GraphicalFlexibleFloatWindow
{//以后显示类写这里,别在叠大粪了

View File

@@ -3,6 +3,8 @@ using UnityEngine;
using Ichni.RhythmGame;
using UnityEngine.InputSystem;
using DG.Tweening;
using UniRx;
using UniRx.Triggers;
namespace Ichni.Editor
{
@@ -46,12 +48,19 @@ namespace Ichni.Editor
transform.localScale = Vector3.zero;
StartCoroutine(WindowAnim.ShowPanelOnScale(gameObject));
targetGameElement.OnDestroyAsObservable()
.Subscribe(_ =>
{
if (gameObject != null) Destroy(gameObject);
instance = null;
});
}
void Update()
{
if (isMoving) return;
if (isMoving) return;
transform.eulerAngles = targetGameElement.parentElement?.transform.eulerAngles ?? Vector3.zero;
transform.position = targetGameElement.transform.position;
if (Mouse.current.leftButton.wasPressedThisFrame)
{
@@ -144,13 +153,14 @@ namespace Ichni.Editor
// 应用新位置
Vector3 newPosition = initialTargetPosition + worldAxis * worldDelta;
Vector3 newPositionFormatted = new Vector3(
Mathf.Round(newPosition.x * 100f) / 100f,
Mathf.Round(newPosition.y * 100f) / 100f,
Mathf.Round(newPosition.z * 100f) / 100f
targetGameElement.transform.position = newPosition;
targetGameElement.transform.localPosition = new Vector3(
Mathf.Round(targetGameElement.transform.localPosition.x * 100f) / 100f,
Mathf.Round(targetGameElement.transform.localPosition.y * 100f) / 100f,
Mathf.Round(targetGameElement.transform.localPosition.z * 100f) / 100f
);
targetGameElement.transform.position = newPositionFormatted;
transform.position = newPositionFormatted;
transform.position = newPosition;
}
private Vector3 GetWorldAxis(int moveCode)

View File

@@ -56,10 +56,6 @@ namespace Ichni
private void Awake()
{
instance = this;
useNotePrefab = true;
ExpandWhileClick = true;
useQuickMove = true;
useClickSelect = true;
isLoaded = false;
projectManager = new ProjectManager();
operationManager = new OperationManager();

File diff suppressed because it is too large Load Diff

View File

@@ -6071,9 +6071,9 @@
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : -2.4,
"x" : -1,
"y" : 0,
"z" : 0.000900268555
"z" : 0
},
"originalEulerAngles" : {
"x" : 0,
@@ -6229,9 +6229,9 @@
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : -2.02,
"x" : -0.4218756,
"y" : 0,
"z" : 0.00410461426
"z" : 0
},
"originalEulerAngles" : {
"x" : 0,
@@ -55344,9 +55344,9 @@
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : 0,
"x" : 1,
"y" : 0,
"z" : -976
"z" : -473
},
"originalEulerAngles" : {
"x" : 0,
@@ -114526,6 +114526,66 @@
"attachedElementGuid" : {
"value" : "588ff8e9-8646-4385-9d5e-371ecae6ae57"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.PathNode_BM,Assembly-CSharp",
"isShowingSphere" : true,
"elementName" : "New Path Node",
"tags" : [
],
"elementGuid" : {
"value" : "a1bee609-d1b2-4e63-8080-a6c26812d9d3"
},
"attachedElementGuid" : {
"value" : "2ecc4f84-1d6f-4f5f-b56a-039ce54d9b53"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : 0,
"y" : 0,
"z" : -976
},
"originalEulerAngles" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalScale" : {
"x" : 1,
"y" : 1,
"z" : 1
},
"attachedElementGuid" : {
"value" : "a1bee609-d1b2-4e63-8080-a6c26812d9d3"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "a1bee609-d1b2-4e63-8080-a6c26812d9d3"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.ColorSubmodule_BM,Assembly-CSharp",
"originalBaseColor" : {
"r" : 1,
"g" : 1,
"b" : 1,
"a" : 1
},
"emissionEnabled" : false,
"originalEmissionColor" : {
"r" : 0,
"g" : 0,
"b" : 0,
"a" : 1
},
"originalEmissionIntensity" : 0,
"attachedElementGuid" : {
"value" : "a1bee609-d1b2-4e63-8080-a6c26812d9d3"
}
}
],
"attachedElementGuid" : {

View File

@@ -1,5 +1,5 @@
ManifestFileVersion: 0
CRC: 3206372954
CRC: 1884651117
AssetBundleManifest:
AssetBundleInfos:
Info_0:

View File

@@ -1,15 +1,15 @@
ManifestFileVersion: 0
CRC: 562226463
CRC: 2016530734
Hashes:
AssetFileHash:
serializedVersion: 2
Hash: 94eab340bf8fd6cb0a0b0e354cc48b17
Hash: 1552a2d53f685e0a2c6886fa73458cb6
TypeTreeHash:
serializedVersion: 2
Hash: 274766e643314232a0624647b0f6f65e
Hash: def11529b5fcdd04f866537b77a9d0ed
IncrementalBuildHash:
serializedVersion: 2
Hash: 94eab340bf8fd6cb0a0b0e354cc48b17
Hash: 1552a2d53f685e0a2c6886fa73458cb6
HashAppended: 0
ClassTypes:
- Class: 1

View File

@@ -1,15 +1,15 @@
ManifestFileVersion: 0
CRC: 969896204
CRC: 3790798872
Hashes:
AssetFileHash:
serializedVersion: 2
Hash: ba6732b1dc61496eb10a7bdedf0cfa3f
Hash: 329c54c663ceab6a6601ca19a05f5121
TypeTreeHash:
serializedVersion: 2
Hash: a82c29dac7008dd4e8ddbd3da1533c37
Hash: bc905bc089e6ae59636d56a0812b978b
IncrementalBuildHash:
serializedVersion: 2
Hash: ba6732b1dc61496eb10a7bdedf0cfa3f
Hash: 329c54c663ceab6a6601ca19a05f5121
HashAppended: 0
ClassTypes:
- Class: 1

View File

@@ -1,15 +1,15 @@
ManifestFileVersion: 0
CRC: 2841792033
CRC: 2978929696
Hashes:
AssetFileHash:
serializedVersion: 2
Hash: dcd570fc931461005f81963b02073d83
Hash: dbc0a33c4cf19f56cd82cf89b7106341
TypeTreeHash:
serializedVersion: 2
Hash: 76414f0bd3072e0f403e9f6ae6853349
Hash: e9ae0438db04172fb4d82acc92d8d8de
IncrementalBuildHash:
serializedVersion: 2
Hash: dcd570fc931461005f81963b02073d83
Hash: dbc0a33c4cf19f56cd82cf89b7106341
HashAppended: 0
ClassTypes:
- Class: 1

View File

@@ -96,6 +96,10 @@ namespace Ichni.RhythmGame.ThemeBundles.DepartureToMultiverse
base.Refresh();
// judgeEffect.transform.position = tailPoint.transform.position;
}
public override void SetHighlight()
{
return; // HoldNoteVisual不需要高亮
}
}
public partial class DTMNoteVisualHold