something & 编辑器指南

This commit is contained in:
2025-04-19 18:59:26 +08:00
parent d7ce55cd04
commit a0f7ec7e15
15 changed files with 4567 additions and 3754 deletions

View File

@@ -11,6 +11,7 @@ GameObject:
- component: {fileID: 7218990644326672365}
- component: {fileID: 4373037038321954862}
- component: {fileID: 5075741739930138068}
- component: {fileID: 3669367315767716663}
m_Layer: 0
m_Name: GridPosText
m_TagString: Untagged
@@ -171,3 +172,15 @@ MonoBehaviour:
m_hasFontAssetChanged: 0
m_renderer: {fileID: 4373037038321954862}
m_maskType: 0
--- !u!114 &3669367315767716663
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2595472339849441637}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b9e38313ec93f7a4a87743dfa6320fec, type: 3}
m_Name:
m_EditorClassIdentifier:

File diff suppressed because one or more lines are too long

View File

@@ -1,10 +1,8 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using Unity.Mathematics;
using Ichni.Editor;
using UnityEngine;
using UnityEngine.Serialization;
namespace Ichni.RhythmGame
{
@@ -20,7 +18,18 @@ namespace Ichni.RhythmGame
timeDurationSubmodule = new TimeDurationSubmodule(this);
}
public override void Initialize(string name, Guid elementGuid, List<string> tags,
bool isFirstGenerated, GameElement parentElement)
{
base.Initialize(name, elementGuid, tags, isFirstGenerated, parentElement);
if (this.parentElement.submoduleList.Where(e => e is TransformSubmodule).Count() == 0)
{
LogWindow.Log("AnimationBase must be attached to a GameElement with TransformSubmodule", Color.red);
//OnDelete();
//return;
}
}
/// <summary>
/// 更新动画
/// </summary>

View File

@@ -10,12 +10,12 @@ namespace Ichni.RhythmGame
{
public List<GameElement> gameElementList;
public BaseElement_BM matchedBM { get; set; }
public BeatmapContainer()
{
gameElementList = new List<GameElement>();
gameElementList = new List<GameElement>();
}
public void SaveBM()
{
matchedBM = new BeatmapContainer_BM(gameElementList);
@@ -25,7 +25,7 @@ namespace Ichni.RhythmGame
{
throw new System.NotImplementedException();
}
public void Refresh()
{
throw new System.NotImplementedException();
@@ -40,17 +40,17 @@ namespace Ichni.RhythmGame
public BeatmapContainer_BM()
{
}
public BeatmapContainer_BM(List<GameElement> gameElementList)
{
elementList = new List<BaseElement_BM>();
gameElementList.ForEach(e =>
{
e.SaveBM();
e.submoduleList.RemoveAll(s=>s == null);
e.submoduleList.RemoveAll(s => s == null);
e.submoduleList.ForEach(s => s.SaveBM());
});
@@ -67,11 +67,20 @@ namespace Ichni.RhythmGame
elementList.ForEach(element =>
{
#if UNITY_EDITOR
if (element == null)
{
Debug.LogError("Null element detected in elementList. Skipping execution.");
return;
}
Debug.Log(element.GetType());
if (LowLoadPriorityTypes.Contains(element.GetType()))
{
return;
}
#endif
if (element is GameElement_BM gameElement)
{
#if UNITY_EDITOR
@@ -79,12 +88,18 @@ namespace Ichni.RhythmGame
#endif
GameElement_BM.identifier.Add(gameElement.elementGuid, gameElement);
}
element.ExecuteBM();
});
elementList.ForEach(element =>
{
if (element == null)
{
Debug.LogError("Null element detected in elementList during low-priority execution. Skipping execution.");
return;
}
if (LowLoadPriorityTypes.Contains(element.GetType()))
{
element.ExecuteBM();

View File

@@ -1,6 +1,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using Dreamteck.Splines;
using Ichni.Editor;
using Ichni.RhythmGame.Beatmap;
@@ -36,17 +37,17 @@ namespace Ichni.RhythmGame
LogWindow.Log("Only one GameCamera can be created", Color.red);
return null;
}
GameCamera gameCamera =
Instantiate(EditorManager.instance.basePrefabs.gameCamera).GetComponent<GameCamera>();
gameCamera.Initialize(elementName, id, tags, isFirstGenerated, parentElement);
cameraManager.gameCamera = gameCamera;
cameraManager.backgroundCamera.GetComponent<UniversalAdditionalCameraData>().cameraStack.Add(gameCamera.camera);
if (cameraManager.isSceneCameraActive) gameCamera.camera.enabled = false;
gameCamera.parentElement = parentElement;
gameCamera.cameraViewType = cameraViewType;
gameCamera.camera.orthographic = cameraViewType == CameraViewType.Orthographic;
@@ -74,13 +75,29 @@ namespace Ichni.RhythmGame
public partial class GameCamera
{
private Vector3 GetWorldEulerAngles()
{
Vector3 output = transformSubmodule.originalEulerAngles;
GameElement element = this;
while (element != null)
{
if (element is IHaveTransformSubmodule)
{
output += ((TransformSubmodule)element.submoduleList.Where(r => r is TransformSubmodule).First()).currentEulerAngles;
}
element = element.parentElement;
}
return output;
}
public void SetTransformObserver()
{
Observable.EveryUpdate().Subscribe(_ =>
{
if (transformSubmodule.eulerAnglesOffsetLock)
{
rotationPoint.eulerAngles = transformSubmodule.currentEulerAngles;
rotationPoint.localEulerAngles = transformSubmodule.originalEulerAngles;
}
else if (transformSubmodule.eulerAnglesDirtyMark)
{
@@ -91,7 +108,7 @@ namespace Ichni.RhythmGame
}
transformSubmodule.currentEulerAngles = transformSubmodule.originalEulerAngles + offset;
rotationPoint.eulerAngles = transformSubmodule.currentEulerAngles;
rotationPoint.localEulerAngles = transformSubmodule.currentEulerAngles;
transformSubmodule.eulerAnglesDirtyMark = false;
}

View File

@@ -13,7 +13,7 @@ namespace Ichni.Editor
{
[Tooltip("指定用于计算缩放的摄像机(若为空则使用 Camera.main")]
public Camera sceneCamera;
public float cameraDistance;
[Tooltip("指定网格所在的平面0 = XZ (y=0), 1 = XY (z=0), 2 = YZ (x=0)")]
@@ -41,7 +41,7 @@ namespace Ichni.Editor
void Start()
{
positionTexts = new Dictionary<GameObject, Vector3>();
sceneCamera = EditorManager.instance.cameraManager.sceneCamera.sceneCamera;
// 实例化材质,避免修改共享材质
gridMaterial = GetComponent<MeshRenderer>().material;
@@ -52,7 +52,7 @@ namespace Ichni.Editor
void Update()
{
sceneCamera = EditorManager.instance.cameraManager.currentCamera;
// 计算摄像机到网格平面的垂直距离
cameraDistance = 0f;
Vector3 camPos = sceneCamera.transform.position;
@@ -76,12 +76,12 @@ namespace Ichni.Editor
gridMaterial.SetFloat("_GridScale", 1 / gridScale);
gridMaterial.SetFloat("_DisappearEndDistance", 100 * gridScale);
if (canShowPositionText && isShowingPositionText)
{
GetPoints();
foreach (KeyValuePair<GameObject,Vector3> positionText in positionTexts)
foreach (KeyValuePair<GameObject, Vector3> positionText in positionTexts)
{
positionText.Key.transform.position = positionText.Value + new Vector3(gridScale / 6, 0, gridScale / 12);
float scaleFactor = gridScale * 1.5f;
@@ -98,6 +98,7 @@ namespace Ichni.Editor
if (sceneCameraHit.collider.gameObject == gameObject)
{
Vector3 point = sceneCameraHit.point;
float radius = gridScale * 16f;
float step = gridScale * 4f;
@@ -114,13 +115,16 @@ namespace Ichni.Editor
List<Vector3> newPositions = new List<Vector3>();
// 添加距离检测逻辑
bool withinDistance = Vector3.Distance(sceneCamera.transform.position, point) <= 100f;
for (float x = minX; x <= maxX; x += step)
{
for (float z = minZ; z <= maxZ; z += step)
{
Vector3 position = new Vector3(x, 0, z);
if (!positionTexts.ContainsValue(position))
if (withinDistance && !positionTexts.ContainsValue(position))
{
GameObject posText = LeanPool.Spawn(positionTextPrefab);
posText.transform.position = position + new Vector3(gridScale / 8, 0, gridScale / 16);
@@ -133,7 +137,7 @@ namespace Ichni.Editor
newPositions.Add(new Vector3(x, 0, z));
}
}
List<GameObject> toRemove = new List<GameObject>();
// 清除不在新范围内的Text
foreach (KeyValuePair<GameObject, Vector3> positionText in positionTexts)
@@ -144,7 +148,7 @@ namespace Ichni.Editor
toRemove.Add(positionText.Key);
}
}
foreach (GameObject text in toRemove)
{
positionTexts.Remove(text);

8
Assets/Scripts/Gird.meta Normal file
View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 446b1cfc101c6f84c94c1972fb5c845b
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,803 @@
{
"Clip" : {
"__type" : "System.Collections.Generic.List`1[[Ichni.RhythmGame.Beatmap.BaseElement_BM, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]],mscorlib",
"value" : [
{
"__type" : "Ichni.RhythmGame.Beatmap.ElementFolder_BM,Assembly-CSharp",
"elementName" : "dec",
"tags" : [
],
"elementGuid" : {
"value" : "80ba50f8-051b-4779-99be-dc7ed7937c76"
},
"attachedElementGuid" : {
"value" : "00000000-0000-0000-0000-000000000000"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalEulerAngles" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalScale" : {
"x" : 1,
"y" : 1,
"z" : 1
},
"attachedElementGuid" : {
"value" : "80ba50f8-051b-4779-99be-dc7ed7937c76"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "80ba50f8-051b-4779-99be-dc7ed7937c76"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.Trail_BM,Assembly-CSharp",
"visibleTimeLength" : 1,
"renderMaterialName" : "DefaultTrailMaterial",
"isAutoOrient" : true,
"widthMultiplier" : 1,
"widthCurve" : {
"keys" : [
{
"time" : 0,
"value" : 0.1,
"inTangent" : 0,
"outTangent" : 0
},{
"time" : 1,
"value" : 0.1,
"inTangent" : 0,
"outTangent" : 0
}
],
"preWrapMode" : 8,
"postWrapMode" : 8
},
"elementName" : "New Trail",
"tags" : [
],
"elementGuid" : {
"value" : "0e499b84-1759-476f-8fb0-d748a113fbd2"
},
"attachedElementGuid" : {
"value" : "80ba50f8-051b-4779-99be-dc7ed7937c76"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : 0,
"y" : 10,
"z" : 0
},
"originalEulerAngles" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalScale" : {
"x" : 1,
"y" : 1,
"z" : 1
},
"attachedElementGuid" : {
"value" : "0e499b84-1759-476f-8fb0-d748a113fbd2"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.Displacement_BM,Assembly-CSharp",
"positionX" : {
"animatedFloatList" : [
{
"startValue" : 1,
"endValue" : 0,
"startTime" : 21.45161,
"endTime" : 21.77419,
"animationCurveType" : 2
},{
"startValue" : -1,
"endValue" : 0,
"startTime" : 22.41935,
"endTime" : 22.74193,
"animationCurveType" : 5
},{
"startValue" : 1,
"endValue" : 0,
"startTime" : 24.0322571,
"endTime" : 24.9999962,
"animationCurveType" : 2
},{
"startValue" : -1,
"endValue" : 0,
"startTime" : 24.9999962,
"endTime" : 25.3225765,
"animationCurveType" : 5
},{
"startValue" : 1,
"endValue" : 0,
"startTime" : 26.6129017,
"endTime" : 27.58064,
"animationCurveType" : 2
},{
"startValue" : -1,
"endValue" : 0,
"startTime" : 27.58064,
"endTime" : 27.9032211,
"animationCurveType" : 5
},{
"startValue" : 1,
"endValue" : 0,
"startTime" : 29.1935482,
"endTime" : 30.1612873,
"animationCurveType" : 2
},{
"startValue" : -1,
"endValue" : 0,
"startTime" : 30.1612873,
"endTime" : 30.4838676,
"animationCurveType" : 5
},{
"startValue" : 1,
"endValue" : 0,
"startTime" : 31.7741928,
"endTime" : 32.7419319,
"animationCurveType" : 2
},{
"startValue" : -1,
"endValue" : 0,
"startTime" : 32.7419319,
"endTime" : 33.0645142,
"animationCurveType" : 5
},{
"startValue" : 1,
"endValue" : 0,
"startTime" : 34.35484,
"endTime" : 35.32258,
"animationCurveType" : 2
},{
"startValue" : -1,
"endValue" : 0,
"startTime" : 35.32258,
"endTime" : 35.6451569,
"animationCurveType" : 5
},{
"startValue" : 1,
"endValue" : 0,
"startTime" : 36.935482,
"endTime" : 37.90322,
"animationCurveType" : 2
},{
"startValue" : -1,
"endValue" : 0,
"startTime" : 37.90322,
"endTime" : 38.2258,
"animationCurveType" : 5
},{
"startValue" : 1,
"endValue" : 0,
"startTime" : 39.51613,
"endTime" : 40.4838676,
"animationCurveType" : 2
}
]
},
"positionY" : {
"animatedFloatList" : [
]
},
"positionZ" : {
"animatedFloatList" : [
{
"startValue" : 52,
"endValue" : 52,
"startTime" : 0,
"endTime" : 5.806451,
"animationCurveType" : 0
},{
"startValue" : 52,
"endValue" : 200,
"startTime" : 5.806451,
"endTime" : 21.29032,
"animationCurveType" : 0
},{
"startValue" : 200,
"endValue" : 350,
"startTime" : 21.29032,
"endTime" : 36.77419,
"animationCurveType" : 0
},{
"startValue" : 350,
"endValue" : 400,
"startTime" : 36.77419,
"endTime" : 42.25806,
"animationCurveType" : 0
}
]
},
"elementName" : "New Displacement",
"tags" : [
],
"elementGuid" : {
"value" : "6319d7e3-792b-4073-8023-224f5f7289ab"
},
"attachedElementGuid" : {
"value" : "80ba50f8-051b-4779-99be-dc7ed7937c76"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "6319d7e3-792b-4073-8023-224f5f7289ab"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.Swirl_BM,Assembly-CSharp",
"eulerAngleX" : {
"animatedFloatList" : [
]
},
"eulerAngleY" : {
"animatedFloatList" : [
{
"startValue" : 0,
"endValue" : 0,
"startTime" : 5.806451,
"endTime" : 20.4,
"animationCurveType" : 0
}
]
},
"eulerAngleZ" : {
"animatedFloatList" : [
{
"startValue" : 0,
"endValue" : 720,
"startTime" : 5.806451,
"endTime" : 20.4,
"animationCurveType" : 0
},{
"startValue" : 0,
"endValue" : 90,
"startTime" : 21.45161,
"endTime" : 24.03226,
"animationCurveType" : 5
},{
"startValue" : 0,
"endValue" : -90,
"startTime" : 24.03226,
"endTime" : 26.61291,
"animationCurveType" : 5
},{
"startValue" : 0,
"endValue" : 90,
"startTime" : 26.6129017,
"endTime" : 29.193552,
"animationCurveType" : 5
},{
"startValue" : 0,
"endValue" : -90,
"startTime" : 29.193552,
"endTime" : 31.7742,
"animationCurveType" : 5
},{
"startValue" : 0,
"endValue" : 90,
"startTime" : 31.7741928,
"endTime" : 34.3548431,
"animationCurveType" : 5
},{
"startValue" : 0,
"endValue" : -90,
"startTime" : 34.3548431,
"endTime" : 36.9354935,
"animationCurveType" : 5
},{
"startValue" : 0,
"endValue" : 90,
"startTime" : 36.935482,
"endTime" : 39.5161324,
"animationCurveType" : 5
},{
"startValue" : 90,
"endValue" : 0,
"startTime" : 39.51613,
"endTime" : 40.48387,
"animationCurveType" : 4
},{
"startValue" : 0,
"endValue" : -180,
"startTime" : 40.48387,
"endTime" : 41.77419,
"animationCurveType" : 29
}
]
},
"elementName" : "New Swirl",
"tags" : [
],
"elementGuid" : {
"value" : "5cfce6fb-be08-4625-8d8d-0ba343018047"
},
"attachedElementGuid" : {
"value" : "80ba50f8-051b-4779-99be-dc7ed7937c76"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "5cfce6fb-be08-4625-8d8d-0ba343018047"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.Trail_BM,Assembly-CSharp",
"visibleTimeLength" : 1,
"renderMaterialName" : "DefaultTrailMaterial",
"isAutoOrient" : true,
"widthMultiplier" : 1,
"widthCurve" : {
"keys" : [
{
"time" : 0,
"value" : 0.1,
"inTangent" : 0,
"outTangent" : 0
},{
"time" : 1,
"value" : 0.1,
"inTangent" : 0,
"outTangent" : 0
}
],
"preWrapMode" : 8,
"postWrapMode" : 8
},
"elementName" : "New Trail",
"tags" : [
],
"elementGuid" : {
"value" : "c04f2c2c-963a-4d20-b013-d34e1d1b6e56"
},
"attachedElementGuid" : {
"value" : "80ba50f8-051b-4779-99be-dc7ed7937c76"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : 0,
"y" : -10,
"z" : 0
},
"originalEulerAngles" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalScale" : {
"x" : 1,
"y" : 1,
"z" : 1
},
"attachedElementGuid" : {
"value" : "c04f2c2c-963a-4d20-b013-d34e1d1b6e56"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.Trail_BM,Assembly-CSharp",
"visibleTimeLength" : 1,
"renderMaterialName" : "DefaultTrailMaterial",
"isAutoOrient" : true,
"widthMultiplier" : 1,
"widthCurve" : {
"keys" : [
{
"time" : 0,
"value" : 0.1,
"inTangent" : 0,
"outTangent" : 0
},{
"time" : 1,
"value" : 0.1,
"inTangent" : 0,
"outTangent" : 0
}
],
"preWrapMode" : 8,
"postWrapMode" : 8
},
"elementName" : "New Trail",
"tags" : [
],
"elementGuid" : {
"value" : "4fbbf7d0-7d22-4931-9141-7cd583cd6d44"
},
"attachedElementGuid" : {
"value" : "80ba50f8-051b-4779-99be-dc7ed7937c76"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : 10,
"y" : 0,
"z" : 0
},
"originalEulerAngles" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalScale" : {
"x" : 1,
"y" : 1,
"z" : 1
},
"attachedElementGuid" : {
"value" : "4fbbf7d0-7d22-4931-9141-7cd583cd6d44"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.Trail_BM,Assembly-CSharp",
"visibleTimeLength" : 1,
"renderMaterialName" : "DefaultTrailMaterial",
"isAutoOrient" : true,
"widthMultiplier" : 1,
"widthCurve" : {
"keys" : [
{
"time" : 0,
"value" : 0.1,
"inTangent" : 0,
"outTangent" : 0
},{
"time" : 1,
"value" : 0.1,
"inTangent" : 0,
"outTangent" : 0
}
],
"preWrapMode" : 8,
"postWrapMode" : 8
},
"elementName" : "New Trail",
"tags" : [
],
"elementGuid" : {
"value" : "fbf18c2e-e3df-474f-b02f-31c3e3586e90"
},
"attachedElementGuid" : {
"value" : "80ba50f8-051b-4779-99be-dc7ed7937c76"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : -10,
"y" : 0,
"z" : 0
},
"originalEulerAngles" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalScale" : {
"x" : 1,
"y" : 1,
"z" : 1
},
"attachedElementGuid" : {
"value" : "fbf18c2e-e3df-474f-b02f-31c3e3586e90"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.ElementFolder_BM,Assembly-CSharp",
"elementName" : "New Folder",
"tags" : [
],
"elementGuid" : {
"value" : "b21eca38-0e7f-4545-86a1-99088737aef1"
},
"attachedElementGuid" : {
"value" : "80ba50f8-051b-4779-99be-dc7ed7937c76"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalEulerAngles" : {
"x" : 0,
"y" : 0,
"z" : 45
},
"originalScale" : {
"x" : 1,
"y" : 1,
"z" : 1
},
"attachedElementGuid" : {
"value" : "b21eca38-0e7f-4545-86a1-99088737aef1"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "b21eca38-0e7f-4545-86a1-99088737aef1"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.Trail_BM,Assembly-CSharp",
"visibleTimeLength" : 1,
"renderMaterialName" : "DefaultTrailMaterial",
"isAutoOrient" : true,
"widthMultiplier" : 1,
"widthCurve" : {
"keys" : [
{
"time" : 0,
"value" : 0.1,
"inTangent" : 0,
"outTangent" : 0
},{
"time" : 1,
"value" : 0.1,
"inTangent" : 0,
"outTangent" : 0
}
],
"preWrapMode" : 8,
"postWrapMode" : 8
},
"elementName" : "1",
"tags" : [
],
"elementGuid" : {
"value" : "9facc74d-4597-4289-bec6-fe56434305a6"
},
"attachedElementGuid" : {
"value" : "b21eca38-0e7f-4545-86a1-99088737aef1"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : -10,
"y" : 0,
"z" : 0
},
"originalEulerAngles" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalScale" : {
"x" : 1,
"y" : 1,
"z" : 1
},
"attachedElementGuid" : {
"value" : "9facc74d-4597-4289-bec6-fe56434305a6"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.Trail_BM,Assembly-CSharp",
"visibleTimeLength" : 1,
"renderMaterialName" : "DefaultTrailMaterial",
"isAutoOrient" : true,
"widthMultiplier" : 1,
"widthCurve" : {
"keys" : [
{
"time" : 0,
"value" : 0.1,
"inTangent" : 0,
"outTangent" : 0
},{
"time" : 1,
"value" : 0.1,
"inTangent" : 0,
"outTangent" : 0
}
],
"preWrapMode" : 8,
"postWrapMode" : 8
},
"elementName" : "New Trail",
"tags" : [
],
"elementGuid" : {
"value" : "a76a9358-7827-428b-816f-1889de39d77c"
},
"attachedElementGuid" : {
"value" : "b21eca38-0e7f-4545-86a1-99088737aef1"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : 10,
"y" : 0,
"z" : 0
},
"originalEulerAngles" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalScale" : {
"x" : 1,
"y" : 1,
"z" : 1
},
"attachedElementGuid" : {
"value" : "a76a9358-7827-428b-816f-1889de39d77c"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.Trail_BM,Assembly-CSharp",
"visibleTimeLength" : 1,
"renderMaterialName" : "DefaultTrailMaterial",
"isAutoOrient" : true,
"widthMultiplier" : 1,
"widthCurve" : {
"keys" : [
{
"time" : 0,
"value" : 0.1,
"inTangent" : 0,
"outTangent" : 0
},{
"time" : 1,
"value" : 0.1,
"inTangent" : 0,
"outTangent" : 0
}
],
"preWrapMode" : 8,
"postWrapMode" : 8
},
"elementName" : "New Trail",
"tags" : [
],
"elementGuid" : {
"value" : "73db1dc0-974d-4731-86fb-9c1751ed0ee6"
},
"attachedElementGuid" : {
"value" : "b21eca38-0e7f-4545-86a1-99088737aef1"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : 0,
"y" : -10,
"z" : 0
},
"originalEulerAngles" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalScale" : {
"x" : 1,
"y" : 1,
"z" : 1
},
"attachedElementGuid" : {
"value" : "73db1dc0-974d-4731-86fb-9c1751ed0ee6"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.Trail_BM,Assembly-CSharp",
"visibleTimeLength" : 1,
"renderMaterialName" : "DefaultTrailMaterial",
"isAutoOrient" : true,
"widthMultiplier" : 1,
"widthCurve" : {
"keys" : [
{
"time" : 0,
"value" : 0.1,
"inTangent" : 0,
"outTangent" : 0
},{
"time" : 1,
"value" : 0.1,
"inTangent" : 0,
"outTangent" : 0
}
],
"preWrapMode" : 8,
"postWrapMode" : 8
},
"elementName" : "New Trail",
"tags" : [
],
"elementGuid" : {
"value" : "545f4a84-86e3-4545-ae3c-f19c7b6592cc"
},
"attachedElementGuid" : {
"value" : "b21eca38-0e7f-4545-86a1-99088737aef1"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : 0,
"y" : 10,
"z" : 0
},
"originalEulerAngles" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalScale" : {
"x" : 1,
"y" : 1,
"z" : 1
},
"attachedElementGuid" : {
"value" : "545f4a84-86e3-4545-ae3c-f19c7b6592cc"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.Displacement_BM,Assembly-CSharp",
"positionX" : {
"animatedFloatList" : [
]
},
"positionY" : {
"animatedFloatList" : [
]
},
"positionZ" : {
"animatedFloatList" : [
{
"startValue" : 0,
"endValue" : 100,
"startTime" : 39.67742,
"endTime" : 42.25806,
"animationCurveType" : 4
}
]
},
"elementName" : "New Displacement",
"tags" : [
],
"elementGuid" : {
"value" : "473943b7-835b-4512-9855-2640e33d6525"
},
"attachedElementGuid" : {
"value" : "80ba50f8-051b-4779-99be-dc7ed7937c76"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "473943b7-835b-4512-9855-2640e33d6525"
}
}
]
}
}

View File

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

View File

@@ -4,13 +4,13 @@
"value" : [
{
"__type" : "Ichni.RhythmGame.Beatmap.Tap_BM,Assembly-CSharp",
"exactJudgeTime" : 1,
"elementName" : "Tap (1)",
"exactJudgeTime" : 0.1,
"elementName" : "New Tap",
"tags" : [
],
"elementGuid" : {
"value" : "336d5719-77a3-41d1-b5bc-7e358cb8b002"
"value" : "c5de5aba-8aa4-4fd2-ac62-f6b39f886ddb"
},
"attachedElementGuid" : {
"value" : "00000000-0000-0000-0000-000000000000"
@@ -21,7 +21,7 @@
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "336d5719-77a3-41d1-b5bc-7e358cb8b002"
"value" : "c5de5aba-8aa4-4fd2-ac62-f6b39f886ddb"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.NoteJudgeSubmodule_BM,Assembly-CSharp",
@@ -32,7 +32,7 @@
}
],
"attachedElementGuid" : {
"value" : "336d5719-77a3-41d1-b5bc-7e358cb8b002"
"value" : "c5de5aba-8aa4-4fd2-ac62-f6b39f886ddb"
}
},{
"__type" : "Ichni.RhythmGame.ThemeBundles.DepartureToMultiverse.Beatmap.DTMNoteVisual_BM,Assembly-CSharp",
@@ -43,10 +43,10 @@
],
"elementGuid" : {
"value" : "0f3c45f4-f76f-44f3-b195-a2af6f6221e6"
"value" : "55f3cc54-50bc-47b1-9fa6-d091b4b38057"
},
"attachedElementGuid" : {
"value" : "336d5719-77a3-41d1-b5bc-7e358cb8b002"
"value" : "c5de5aba-8aa4-4fd2-ac62-f6b39f886ddb"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
@@ -66,7 +66,7 @@
"z" : 1
},
"attachedElementGuid" : {
"value" : "0f3c45f4-f76f-44f3-b195-a2af6f6221e6"
"value" : "55f3cc54-50bc-47b1-9fa6-d091b4b38057"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
@@ -74,7 +74,7 @@
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "0f3c45f4-f76f-44f3-b195-a2af6f6221e6"
"value" : "55f3cc54-50bc-47b1-9fa6-d091b4b38057"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.ColorSubmodule_BM,Assembly-CSharp",
@@ -93,7 +93,7 @@
},
"originalEmissionIntensity" : 0,
"attachedElementGuid" : {
"value" : "0f3c45f4-f76f-44f3-b195-a2af6f6221e6"
"value" : "55f3cc54-50bc-47b1-9fa6-d091b4b38057"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.EffectSubmodule_BM,Assembly-CSharp",
@@ -107,36 +107,6 @@
{
"__type" : "Ichni.RhythmGame.ThemeBundles.DepartureToMultiverse.Beatmap.DTMNotePerfectBurst_BM,Assembly-CSharp",
"effectTime" : 0
},{
"__type" : "Ichni.RhythmGame.Beatmap.BloomEffect_BM,Assembly-CSharp",
"duration" : 0.5,
"peak" : 3,
"intensityCurve" : {
"keys" : [
{
"time" : 0,
"value" : 1,
"inTangent" : 0,
"outTangent" : 0
},{
"time" : 1,
"value" : 0,
"inTangent" : 0,
"outTangent" : 0
}
],
"preWrapMode" : 8,
"postWrapMode" : 8
},
"effectTime" : 0
},{
"__type" : "Ichni.RhythmGame.Beatmap.SetIntegerEffect_BM,Assembly-CSharp",
"targetVariableName" : "Test",
"targetValue" : 0,
"isRandom" : true,
"minValue" : 0,
"maxValue" : 100,
"effectTime" : 0
}
],"Good":[
{
@@ -155,7 +125,7 @@
]
},
"attachedElementGuid" : {
"value" : "0f3c45f4-f76f-44f3-b195-a2af6f6221e6"
"value" : "55f3cc54-50bc-47b1-9fa6-d091b4b38057"
}
}
]

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,39 @@
# ichni编辑器指南
## 前言
ichni巴拉巴拉待会写
## 进入程序 新建项目
~~如果有一般的写谱经验那么大概都可以知道是做什么的~~
Project name项目名字即这张谱面的名字建议的是 “曲名” +“ ”+“难度名称”
Creator你的名字/谱师马甲
BPM节拍由于ichni是按照秒数存储谱面而有变bpm的曲子少之又少所以是固定bpm
            不知道bpm是什么的[歌曲bpm是什么 - 搜索](https://cn.bing.com/search?q=%e6%ad%8c%e6%9b%b2bpm%e6%98%af%e4%bb%80%e4%b9%88&FORM=QSRE1)
            bpm测试器[歌曲调性和BPM查找器 - 多功能音乐分析器](https://vocalremover.org/zh/key-bpm-finder)    
Delay这里的Delay只是单纯的调整谱面开始的时间调为负数可以在歌曲开始前开始谱面如果有偏移offset的需求建议剪一下曲子
Song Location歌曲路径导入后歌曲存储在编辑器内与原路径的文件无关
**<mark>Theme Bundle Selection</mark>**:选择主题包,~~之后写~~
## 谱面结构
由于ichni的自由度极高其谱面结构偏向原生unity现在讲述简要功能
#### Element Folder
本质上是一个空节点,拥有自己的位置属性,可以在下面放置其他的元素
### Camera
可以直接在folder下也可以放在cross Track Point里需要注意的是一张谱面只能有一个camera

View File

@@ -93,7 +93,7 @@ PlayerSettings:
bakeCollisionMeshes: 0
forceSingleInstance: 0
useFlipModelSwapchain: 1
resizableWindow: 0
resizableWindow: 1
useMacAppStoreValidation: 0
macAppStoreCategory: public.app-category.games
gpuSkinning: 1